Gnabry ha sido internacional con la selección alemana en las divisiones sub-16, sub-17, sub-18, sub-19, sub-20 y sub-21, y en todas ellas jugó un total de cuarenta y cinco partidos y marcó veinte goles. En 2015 jugó la Eurocopa Sub-21 de República Checa. En 2016 participó en los de Río de Janeiro, donde se llevó la medalla de plata tras perder la final con Brasil en tanda de penales. Con seis goles en la misma cantidad de partidos, fue el máximo goleador junto con Nils Petersen. El 11 de noviembre de 2016 realizó su debut con el seleccionado absoluto en un partido por la clasificación mundialista contra San Marino; hizo tres goles, por lo que se convirtió en el segundo alemán en marcar un "hat trick" en su debut internacional, después de Dieter Müller. Ganó la Eurocopa Sub-21 de 2017, en la que disputó seis encuentros y anotó una vez. El 9 de octubre de 2019, en un empate a dos goles con Argentina, llegó a los diez goles en once partidos, por lo que superó la marca de Miroslav Klose. El 19 de noviembre, le convirtió un triplete a Irlanda del Norte y concluyó su rendimiento en la clasificación europea con ocho goles en siete partidos.