UK transit data API

Every stop, every timetable,
one API key.

Bus, tram and rail across Great Britain — stops, departures, arrivals, route geometry and journey planning. Built on official BODS, NaPTAN and rail timetable data, served as plain JSON.

Free tier, no card. 30 requests a minute.

387,881stops
632bus operators
1,445,967journeys a week
55,093,376timetabled calls
2,605rail stations

One API across the whole network

Four things you would otherwise assemble from four sources, three formats and a weekend.

Stops & places

Search every bus, tram and rail stop in the country by point, radius or bounding box. Each one says which way its buses go, so two stops sharing a name are still tellable apart.

Departures & arrivals

Scheduled times nationwide, with live vehicle positions from BODS where an operator reports them. Arrival boards too — a terminus is a place people get off, not just a place nothing leaves.

Routes & geometry

A line's directions, calling points and the day's timetable — plus the path each direction actually takes, as an encoded polyline. Draw the road, not a line between stops.

Journey planning

Multi-modal itineraries with walking limits, turn-by-turn directions and fare estimates. Yorkshire today — the coverage note in the docs says exactly where, rather than letting you find out.

Ask a stop what is coming

One request, an API key in a header, JSON back. No SOAP envelope, no per-operator feed to reconcile, no GTFS zip to unpack at three in the morning.

  • Plain REST and JSON, documented with live examples
  • One key for bus, rail, journeys and disruptions
  • Rate limits that tell you where you stand in the headers
Full API reference
$ curl -H "X-Api-Key: $KEY" \
    "https://api.transcapi.com/v1/bus/stops.json\
?lat=53.3811&lon=-1.4701&radius=250"

{
  "member": [
    {
      "atcocode": "370010161",
      "name": "Sheffield Interchange",
      "indicator": "A1",
      "bearing": "SW",
      "towards": "Rotherham Interchange",
      "locality": "Sheffield City Centre",
      "latitude": 53.38131,
      "longitude": -1.46869,
      "distance": 62
    }
  ]
}

National, and we will show our working

That is not an illustration. Every mark is a stop in the register — 387,881 of them — plotted from the same table the API answers from. Great Britain draws itself.

Where coverage is thinner, the docs say so. Journey planning is Yorkshire-only today because a national routing graph needs more memory than this runs on, and route geometry exists for the operators that publish it. Both are stated rather than discovered.

Start in five minutes

Build something with it

Free key, every endpoint, no card. Upgrade when your traffic says so.

Get your API key