gb‑transit
Rebuilt every night

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.

Covers
11/09/202611/12/2026
Trips
293,830
Built from
RJTTC955.ZIP
Built
11 Sept 2026, 09:47

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.

Checked before release

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.

Read this first

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.zip

Four 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.