Apach is 2 km (1.2 mi) from Sierck-les-Bains, 25 km (16 mi) from Thionville, and 50 km (31 mi) from Metz. It is on the right bank of the river Moselle, on the border of Germany and Luxembourg, the municipalities just across the border being Perl in Germany and Schengen in Luxembourg. It has a station on the Thionville–Trier railway, served by regional trains.