Overpass query example

Train stations in a country

List every railway station in a country. Example: Switzerland.

Stations are mapped as a point tagged railway=station. Halts (small stops) use railway=halt.

The query

[out:json][timeout:60];
area["ISO3166-1"="CH"][admin_level=2]->.ch;
node["railway"="station"](area.ch);
out;

Run it

Running the query…

Live result from overpass.ch, cached for up to 12 hours. Map data © OpenStreetMap contributors (ODbL).

How it works

  1. railway=station also covers metro, funicular and heritage railway stations. Their station tag says which.
  2. The uic_ref and railway:ref tags hold official station codes.

Variations

  • Main-line stations only: add ["station"!~"subway|light_rail|funicular"].
  • Stations and halts: node["railway"~"^(station|halt)$"].
  • Their altitude, highest first: the highest train stations.

Run it from your code

curl https://api.overpass.ch/v1/YOUR_API_KEY/interpreter \
  --data-urlencode 'data@query.overpassql'

Save the query as query.overpassql. It works the same in Overpass Turbo, QGIS and JOSM.

More examples

All examples →