Stations - A Database of European Train Stations

October 30, 2025 · View on GitHub

Build Status

Trainline EU sells tickets for numerous train operators across Europe.

This repository contains the information Trainline EU uses to identify stations across the diverse systems of the train operators.

If you want to contribute to this database, please read CONTRIBUTING.md.

Licence

The file stations.csv is distributed under the Open Database License (ODbL) licence, see LICENCE.txt. In short, any modification to this data source must be published.

Data come from the following sources:

All these sources were released under ODbL or compatible licences.

Tests

If you're going to modify the file, don't forget to run the automated tests to ensure consistency of the information provided. This script is used in the build triggered by merge requests.

make install
make test

The Data

The file stations.csv contains all our data representing train stations and cities. The file is UTF-8 encoded text file and Comma Separated Value (CSV) formatted – although a semi-colon ; is used to delimitate fields. Boolean flags are represented with t/f (true/false) values.

Columns

Column NameNotes
idInternal unique identifier.
nameName of the station as it is locally known; see info_* for localizations.
slugGuaranteed to be unique across all the suggestable stations; see is_suggestable.
uicThe UIC code of the station.
uic8_sncfSNCF sometimes uses an UIC code with 8 digits instead of 7. The last digit is a checksum.
longitudeCoordinates as decimal value.
latitudeCoordinates as decimal value.
parent_station_idA station can belong to a meta station whose id is this value, i.e. Paris Gare d’Austerlitz belongs to the metastation Paris.
country2 letters, ISO 3166-1 alpha-2
time_zoneContinent/Country ISO codes.
is_cityThis value is unreliable.
is_main_stationThis value is unreliable.
is_airportSpecify if the station is related to an airport.
is_suggestableSpecify if the user can input this station.
country_hintSpecify if the country should be displayed to disambiguate the station's name.
sncf_self_service_machinePresence of a SNCF self-service machine at the station.
same_asSome systems allow stations to be split in two, with two id values. If provided, the station identified by the given value should be considered as the actual station.
normalised_codean identifier, which can be used to identify if 2 locations across multiple synchronised sources represent the same location.

Operator Specific

Operator specific columns contain identifiers and values specific to the operator. Columns are prefixed with a name unique to the operator. rt* columns are about ids used in realtime APIs.

Column NameNotes
*_idid of the station as it is known by the carrier.
*_is_enabledCan a ticket be booked to/from the station through that carrier?
sncf_id
sncf_tvs_idThe origin of this column has been lost and is not maintained anymore.
sncf_is_enabled
entur_id
entur_is_enabled
db_id
db_is_enabled
busbud_id
busbud_is_enabled
distribusion_id
distribusion_is_enabled
flixbus_id
flixbus_is_enabled
cff_id
cff_is_enabled
obb_id
obb_is_enabled
trenitalia_id
trenitalia_is_enabled
trenitalia_rtvt_id
trenord_id
ntv_id
ntv_is_enabled
ntv_rtiv_id
renfe_id
renfe_is_enabled
cercanias_idAt the time of writing, is equal to Renfe IDs and are actually UIC codes. A separate column was introduced to separate both vendors.
cercanias_hub_id
cercanias_is_enabled
atoc_idThese are CRS codes, other codes such as NLCs and TIPLOCs are not mapped here. This column is largely unmaintained.
atoc_is_enabled
benerail_id
benerail_is_enabled
westbahn_id
westbahn_is_enabled

Internationalisation

Language specific info columns contain information (not translations) about the station name. For cities it is usually the commonly accepted name in the language. The language used is suffixed as an ISO 639-1:2002 code.

Column NameNotes
info:*Extra information that is useful in the specific language.
info:de
info:en
info:es
info:fr
info:it
info:nb
info:nl
info:cs
info:da
info:hu
info:ja
info:ko
info:pl
info:pt
info:ru
info:sv
info:tr
info:zh

Productivity tools

For internationalisation

To facilitate the internationalisation of city names, we use and maintain a script querying Geonames API to look for city name translations.

The project is hosted on Github and contains its own documentation.