Trainline · Schema

Trainline European Station

One row of the ODbL-licensed European station database Trainline publishes at https://github.com/trainline-eu/stations. Derived by API Evangelist from the real stations.csv header row and the column documentation in the repository README on 2026-07-28; no field has been invented. The source file is semicolon-delimited CSV with booleans encoded as 't'/'f' and empty strings for null; this schema describes the normalised JSON projection of a row.

TravelRailUnited KingdomEuropeBookingTicketingDistributionOTACorporate Travel

Properties

Name Type Description
id stringnull Trainline internal unique station identifier.
name stringnull Station name as it is locally known.
slug stringnull URL-safe unique identifier; present for suggestable stations.
uic stringnull UIC station code (7 digits).
uic8_sncf stringnull SNCF's 8-digit UIC variant, i.e. the UIC code plus a checksum digit.
latitude numbernull WGS84 latitude in decimal degrees.
longitude numbernull WGS84 longitude in decimal degrees.
parent_station_id stringnull id of the meta-station this station is grouped under.
hub_id stringnull id of the hub this station belongs to.
country stringnull ISO 3166-1 alpha-2 country code.
time_zone stringnull IANA tz database identifier, e.g. Europe/Paris.
is_city booleannull Station represents a city rather than a single physical station.
is_main_station booleannull Station is the main station of its city.
is_airport booleannull Station serves an airport.
is_suggestable booleannull Station may be offered in search suggestions.
country_hint booleannull Country should be displayed alongside the name to disambiguate it.
main_station_hint booleannull Main-station status should be displayed alongside the name.
sncf_id stringnull Station identifier used by SNCF (France) (sncf_id).
sncf_tvs_id stringnull Station identifier used by sncf_tvs (sncf_tvs_id).
sncf_is_enabled booleannull Station is enabled for sale/search on SNCF (France).
entur_id stringnull Station identifier used by Entur (Norway) (entur_id).
entur_is_enabled booleannull Station is enabled for sale/search on Entur (Norway).
db_id stringnull Station identifier used by Deutsche Bahn (Germany) (db_id).
db_is_enabled booleannull Station is enabled for sale/search on Deutsche Bahn (Germany).
busbud_id stringnull Station identifier used by Busbud (busbud_id).
busbud_is_enabled booleannull Station is enabled for sale/search on Busbud.
distribusion_id stringnull Station identifier used by Distribusion (distribusion_id).
distribusion_is_enabled booleannull Station is enabled for sale/search on Distribusion.
flixbus_id stringnull Station identifier used by FlixBus / FlixTrain (flixbus_id).
flixbus_is_enabled booleannull Station is enabled for sale/search on FlixBus / FlixTrain.
cff_id stringnull Station identifier used by CFF/SBB (Switzerland) (cff_id).
cff_is_enabled booleannull Station is enabled for sale/search on CFF/SBB (Switzerland).
obb_id stringnull Station identifier used by ÖBB (Austria) (obb_id).
obb_is_enabled booleannull Station is enabled for sale/search on ÖBB (Austria).
trenitalia_id stringnull Station identifier used by Trenitalia (Italy) (trenitalia_id).
trenitalia_is_enabled booleannull Station is enabled for sale/search on Trenitalia (Italy).
trenitalia_rtvt_id stringnull Station identifier used by trenitalia_rtvt (trenitalia_rtvt_id).
trenord_id stringnull Station identifier used by Trenord (Lombardy, Italy) (trenord_id).
ntv_rtiv_id stringnull Station identifier used by ntv_rtiv (ntv_rtiv_id).
ntv_id stringnull Station identifier used by NTV / Italo (Italy) (ntv_id).
ntv_is_enabled booleannull Station is enabled for sale/search on NTV / Italo (Italy).
renfe_id stringnull Station identifier used by Renfe (Spain) (renfe_id).
renfe_is_enabled booleannull Station is enabled for sale/search on Renfe (Spain).
cercanias_id stringnull Station identifier used by Renfe Cercanías (Spain) (cercanias_id).
cercanias_hub_id stringnull Station identifier used by cercanias_hub (cercanias_hub_id).
cercanias_is_enabled booleannull Station is enabled for sale/search on Renfe Cercanías (Spain).
atoc_id stringnull Station identifier used by ATOC / RDG — CRS code (Great Britain) (atoc_id).
atoc_is_enabled booleannull Station is enabled for sale/search on ATOC / RDG — CRS code (Great Britain).
benerail_id stringnull Station identifier used by Benerail (Belgium/Netherlands) (benerail_id).
benerail_is_enabled booleannull Station is enabled for sale/search on Benerail (Belgium/Netherlands).
westbahn_id stringnull Station identifier used by WESTbahn (Austria) (westbahn_id).
westbahn_is_enabled booleannull Station is enabled for sale/search on WESTbahn (Austria).
smt_id stringnull Station identifier used by SMT (smt_id).
smt_is_enabled booleannull Station is enabled for sale/search on SMT.
sncf_self_service_machine booleannull An SNCF self-service ticket machine is available at this station.
same_as stringnull id of the canonical station record when this row duplicates another.
info:de stringnull Locally relevant information about the station in German (ISO 639-1 'de').
info:en stringnull Locally relevant information about the station in English (ISO 639-1 'en').
info:es stringnull Locally relevant information about the station in Spanish (ISO 639-1 'es').
info:fr stringnull Locally relevant information about the station in French (ISO 639-1 'fr').
info:it stringnull Locally relevant information about the station in Italian (ISO 639-1 'it').
info:nb stringnull Locally relevant information about the station in Norwegian Bokmål (ISO 639-1 'nb').
info:nl stringnull Locally relevant information about the station in Dutch (ISO 639-1 'nl').
info:cs stringnull Locally relevant information about the station in Czech (ISO 639-1 'cs').
info:da stringnull Locally relevant information about the station in Danish (ISO 639-1 'da').
info:hu stringnull Locally relevant information about the station in Hungarian (ISO 639-1 'hu').
info:ja stringnull Locally relevant information about the station in Japanese (ISO 639-1 'ja').
info:ko stringnull Locally relevant information about the station in Korean (ISO 639-1 'ko').
info:pl stringnull Locally relevant information about the station in Polish (ISO 639-1 'pl').
info:pt stringnull Locally relevant information about the station in Portuguese (ISO 639-1 'pt').
info:ru stringnull Locally relevant information about the station in Russian (ISO 639-1 'ru').
info:sv stringnull Locally relevant information about the station in Swedish (ISO 639-1 'sv').
info:tr stringnull Locally relevant information about the station in Turkish (ISO 639-1 'tr').
info:zh stringnull Locally relevant information about the station in Chinese (ISO 639-1 'zh').
normalised_code stringnull Cross-source location identifier expressed as a Trainline URN, e.g. urn:trainline:public:nloc:csv1.
iata_airport_code stringnull IATA airport code, for stations that serve an airport.
View JSON Schema on GitHub

JSON Schema

trainline-station.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/trainline/refs/heads/main/json-schema/trainline-station.json",
  "title": "Trainline European Station",
  "description": "One row of the ODbL-licensed European station database Trainline publishes at https://github.com/trainline-eu/stations. Derived by API Evangelist from the real stations.csv header row and the column documentation in the repository README on 2026-07-28; no field has been invented. The source file is semicolon-delimited CSV with booleans encoded as 't'/'f' and empty strings for null; this schema describes the normalised JSON projection of a row.",
  "x-source": "https://github.com/trainline-eu/stations/blob/master/stations.csv",
  "x-license": "ODbL-1.0",
  "x-record-count": 71781,
  "x-generated": "2026-07-28",
  "x-method": "derived",
  "type": "object",
  "properties": {
    "id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Trainline internal unique station identifier."
    },
    "name": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station name as it is locally known."
    },
    "slug": {
      "type": [
        "string",
        "null"
      ],
      "description": "URL-safe unique identifier; present for suggestable stations."
    },
    "uic": {
      "type": [
        "string",
        "null"
      ],
      "description": "UIC station code (7 digits)."
    },
    "uic8_sncf": {
      "type": [
        "string",
        "null"
      ],
      "description": "SNCF's 8-digit UIC variant, i.e. the UIC code plus a checksum digit."
    },
    "latitude": {
      "type": [
        "number",
        "null"
      ],
      "description": "WGS84 latitude in decimal degrees."
    },
    "longitude": {
      "type": [
        "number",
        "null"
      ],
      "description": "WGS84 longitude in decimal degrees."
    },
    "parent_station_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "id of the meta-station this station is grouped under."
    },
    "hub_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "id of the hub this station belongs to."
    },
    "country": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO 3166-1 alpha-2 country code.",
      "pattern": "^[A-Z]{2}$"
    },
    "time_zone": {
      "type": [
        "string",
        "null"
      ],
      "description": "IANA tz database identifier, e.g. Europe/Paris."
    },
    "is_city": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station represents a city rather than a single physical station.",
      "x-csv-encoding": "t = true, f = false"
    },
    "is_main_station": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is the main station of its city.",
      "x-csv-encoding": "t = true, f = false"
    },
    "is_airport": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station serves an airport.",
      "x-csv-encoding": "t = true, f = false"
    },
    "is_suggestable": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station may be offered in search suggestions.",
      "x-csv-encoding": "t = true, f = false"
    },
    "country_hint": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Country should be displayed alongside the name to disambiguate it.",
      "x-csv-encoding": "t = true, f = false"
    },
    "main_station_hint": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Main-station status should be displayed alongside the name.",
      "x-csv-encoding": "t = true, f = false"
    },
    "sncf_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by SNCF (France) (sncf_id)."
    },
    "sncf_tvs_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by sncf_tvs (sncf_tvs_id)."
    },
    "sncf_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on SNCF (France).",
      "x-csv-encoding": "t = true, f = false"
    },
    "entur_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by Entur (Norway) (entur_id)."
    },
    "entur_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on Entur (Norway).",
      "x-csv-encoding": "t = true, f = false"
    },
    "db_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by Deutsche Bahn (Germany) (db_id)."
    },
    "db_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on Deutsche Bahn (Germany).",
      "x-csv-encoding": "t = true, f = false"
    },
    "busbud_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by Busbud (busbud_id)."
    },
    "busbud_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on Busbud.",
      "x-csv-encoding": "t = true, f = false"
    },
    "distribusion_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by Distribusion (distribusion_id)."
    },
    "distribusion_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on Distribusion.",
      "x-csv-encoding": "t = true, f = false"
    },
    "flixbus_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by FlixBus / FlixTrain (flixbus_id)."
    },
    "flixbus_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on FlixBus / FlixTrain.",
      "x-csv-encoding": "t = true, f = false"
    },
    "cff_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by CFF/SBB (Switzerland) (cff_id)."
    },
    "cff_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on CFF/SBB (Switzerland).",
      "x-csv-encoding": "t = true, f = false"
    },
    "obb_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by ÖBB (Austria) (obb_id)."
    },
    "obb_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on ÖBB (Austria).",
      "x-csv-encoding": "t = true, f = false"
    },
    "trenitalia_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by Trenitalia (Italy) (trenitalia_id)."
    },
    "trenitalia_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on Trenitalia (Italy).",
      "x-csv-encoding": "t = true, f = false"
    },
    "trenitalia_rtvt_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by trenitalia_rtvt (trenitalia_rtvt_id)."
    },
    "trenord_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by Trenord (Lombardy, Italy) (trenord_id)."
    },
    "ntv_rtiv_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by ntv_rtiv (ntv_rtiv_id)."
    },
    "ntv_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by NTV / Italo (Italy) (ntv_id)."
    },
    "ntv_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on NTV / Italo (Italy).",
      "x-csv-encoding": "t = true, f = false"
    },
    "renfe_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by Renfe (Spain) (renfe_id)."
    },
    "renfe_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on Renfe (Spain).",
      "x-csv-encoding": "t = true, f = false"
    },
    "cercanias_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by Renfe Cercanías (Spain) (cercanias_id)."
    },
    "cercanias_hub_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by cercanias_hub (cercanias_hub_id)."
    },
    "cercanias_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on Renfe Cercanías (Spain).",
      "x-csv-encoding": "t = true, f = false"
    },
    "atoc_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by ATOC / RDG — CRS code (Great Britain) (atoc_id)."
    },
    "atoc_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on ATOC / RDG — CRS code (Great Britain).",
      "x-csv-encoding": "t = true, f = false"
    },
    "benerail_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by Benerail (Belgium/Netherlands) (benerail_id)."
    },
    "benerail_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on Benerail (Belgium/Netherlands).",
      "x-csv-encoding": "t = true, f = false"
    },
    "westbahn_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by WESTbahn (Austria) (westbahn_id)."
    },
    "westbahn_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on WESTbahn (Austria).",
      "x-csv-encoding": "t = true, f = false"
    },
    "smt_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Station identifier used by SMT (smt_id)."
    },
    "smt_is_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Station is enabled for sale/search on SMT.",
      "x-csv-encoding": "t = true, f = false"
    },
    "sncf_self_service_machine": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "An SNCF self-service ticket machine is available at this station.",
      "x-csv-encoding": "t = true, f = false"
    },
    "same_as": {
      "type": [
        "string",
        "null"
      ],
      "description": "id of the canonical station record when this row duplicates another."
    },
    "info:de": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in German (ISO 639-1 'de')."
    },
    "info:en": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in English (ISO 639-1 'en')."
    },
    "info:es": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Spanish (ISO 639-1 'es')."
    },
    "info:fr": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in French (ISO 639-1 'fr')."
    },
    "info:it": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Italian (ISO 639-1 'it')."
    },
    "info:nb": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Norwegian Bokmål (ISO 639-1 'nb')."
    },
    "info:nl": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Dutch (ISO 639-1 'nl')."
    },
    "info:cs": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Czech (ISO 639-1 'cs')."
    },
    "info:da": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Danish (ISO 639-1 'da')."
    },
    "info:hu": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Hungarian (ISO 639-1 'hu')."
    },
    "info:ja": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Japanese (ISO 639-1 'ja')."
    },
    "info:ko": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Korean (ISO 639-1 'ko')."
    },
    "info:pl": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Polish (ISO 639-1 'pl')."
    },
    "info:pt": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Portuguese (ISO 639-1 'pt')."
    },
    "info:ru": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Russian (ISO 639-1 'ru')."
    },
    "info:sv": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Swedish (ISO 639-1 'sv')."
    },
    "info:tr": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Turkish (ISO 639-1 'tr')."
    },
    "info:zh": {
      "type": [
        "string",
        "null"
      ],
      "description": "Locally relevant information about the station in Chinese (ISO 639-1 'zh')."
    },
    "normalised_code": {
      "type": [
        "string",
        "null"
      ],
      "description": "Cross-source location identifier expressed as a Trainline URN, e.g. urn:trainline:public:nloc:csv1."
    },
    "iata_airport_code": {
      "type": [
        "string",
        "null"
      ],
      "description": "IATA airport code, for stations that serve an airport."
    }
  },
  "required": [
    "id",
    "name"
  ],
  "additionalProperties": false
}