The British rail timetable, as GTFS.
Every passenger train, sleeper, replacement bus and timetabled ferry in Great Britain — converted from the industry’s DTD feed, validated, and published as a plain zip you can bookmark or script against.
Choose your feed
Same identifiers, different level of detail. Which to take depends on what you’re building.
gtfs.zip
The standard feed. Stops where passengers can board and alight, and nothing else — the shape every routing engine and trip planner expects.
- Drops straight into OpenTripPlanner
- Smaller, faster to load
- Splits and joins resolved
- Every trip drawn as a line
- Trips
- 293,830
- Stop times
- 3,012,565
- Shapes
- 13,062
gtfs‑passing‑points.zip
The same trips, plus every location a train runs through without stopping — junctions, loops and timing points included.
- Trace a route across the network
- Path and capacity work
- Not for passenger journey planning
- Trips
- 293,830
- Stop times
- 3,656,317
- Shapes
- 13,062
gtfs‑national‑rail‑only.zip
The standard feed without the services National Rail does not hold authority over — no tube, no Metro, no ferries, no scheduled buses, and no replacement buses TfL runs.
- For a feed merged with other sources
- Where those sources describe the metro better
- Same identifiers as the other two
- Trips
- 279,779
- Stop times
- 2,939,549
Every link resolves to the most recent build, so it can be bookmarked or scripted against and will never need changing. All three feeds in detail →
What’s inside
Passenger rail
The full national timetable, including sleeper services.
Replacement buses
Rail replacement road services as the timetable carries them.
Ferries
The shipping legs that appear in the rail timetable.
One source
Everything comes from the Rail Delivery Group’s DTD feed.
No broken feed ever ships
Every build runs through the MobilityData validator first. A build with a referential integrity error is never published — you get yesterday’s good feed instead of today’s bad one.
The decisions made for you
Identifiers, splits and joins, service days and the extra columns are all choices the GTFS specification does not make. Using this data states every one of them.
Or build it yourself
The tool that produces this feed is open source, and it needs no database. Point it at a DTD file and it writes the zip.
$ npm install -g cif2gtfs$ cif2gtfs build --source RJTTFxxx.ZIP --out gtfs.zipFour tools— for the DTD feeds, the CIF timetable, TransXChange bus data and merging feeds together.
planarnetwork/gb-transit— issues and pull requests welcome.
Sources and licences
- Rail Delivery Group
- Rail Settlement Plan data licence
- Department for Transport
- Open Government Licence v3.0
Read from the build rather than written here, so this cannot credit a source the feed was not built from. The list the build produced is published alongside the feed as enrichment-report.json, and the configuration it came from is gtfs.config.yaml.