{"openapi":"3.1.0","info":{"title":"Transport for London API","version":"1.0.0","description":"London public transport as an API, powered by the official Transport for London Unified API. Get live line status for the Tube and every other mode (DLR, Overground, Elizabeth line, trams, buses, river bus) with severity and disruption reasons, search any station or stop by name to get its NaPTAN id, modes, lines and coordinates, pull live arrival predictions for a stop (which line, to where, in how many minutes, from which platform), check a single line in detail with its current disruptions, and plan a door-to-door journey between two places with full leg-by-leg directions and durations. Stops and journey endpoints accept a place name, a NaPTAN id or lat,lon. Perfect for commuter and travel apps, station departure boards, status widgets, Slack/Discord bots and trip planners. No accounts, no upstream key.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/tfl-api","description":"oanor gateway"}],"tags":[{"name":"Status"},{"name":"Stops"},{"name":"Arrivals"},{"name":"Journey"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/line":{"get":{"operationId":"get_v1_line","tags":["Status"],"summary":"One line status & disruptions","description":"","parameters":[{"name":"id","in":"query","required":true,"description":"Line id","schema":{"type":"string"},"example":"victoria"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"line":{"id":"victoria","mode":"tube","name":"Victoria","status":[{"reason":"Victoria Line: Service will resume later this morning.\r\n ","severity":20,"description":"Service Closed"}],"disruptions":[]}},"meta":{"timestamp":"2026-06-01T00:04:04.092Z","request_id":"4fd3f2cc-c8e5-4714-99b1-e5d69bb70773"},"status":"ok","message":"Line retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/status":{"get":{"operationId":"get_v1_status","tags":["Status"],"summary":"Live line status for a mode","description":"","parameters":[{"name":"mode","in":"query","required":false,"description":"tube|dlr|overground|elizabeth-line|tram|bus|national-rail|river-bus|cable-car","schema":{"type":"string"},"example":"tube"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"mode":"tube","count":11,"lines":[{"id":"bakerloo","mode":"tube","name":"Bakerloo","status":[{"reason":"BAKERLOO LINE: Saturday 30 and Sunday 31 May, no service between Queens Park and Harrow & Wealdstone. There will also be no LIONESS LINE service between Euston and Watford Junction. A very limited SOUTHERN service will continue to serve Wembley Central early and late on Saturday and on Sunday, and LONDON NORTH WESTERN RAILWAY trains stop at Harrow & Wealdstone. If travelling to Wembley for the Rugby League Challenge Cup Finals on Saturday or the Women's FA Cup Final on Sunday. Special bus service 718 operates.","severity":5,"description":"Part Closure"},{"reason":"Bakerloo Line: Service will resume later this morning.\r\n ","severity":20,"description":"Service Closed"}],"disruptions":[]},{"id":"central","mode":"tube","name":"Central","status":[{"reason":"Central Line: Service will resume later this morning.\r\n ","severity":20,"description":"Service Closed"}],"disruptions":[]},{"id":"circle","mode":"tube","name":"Circle","status":[{"reason":"Circle Line: Service will resume later this morning.\r\n ","severity":20,"description":"Service Closed"}],"disruptions":[]},{"id":"district","mode":"tube","name":"District","status":[{"reason":"District Line: Service will resume later this morning.\r\n ","severity":20,"description":"Service Closed"}],"disruptions":[]},{"id":"hammersmith-city","mode":"tube","name":"Hammersmith & City","status":[{"reason":"Hammersmith and City Line: Service will resume later this morning.\r\n ","severity":20,"description":"Service Closed"}],"disruptions":[]},{"id":"jubilee","mode":"tube","name":"Jubilee","status":[{"reason":"Jubilee Line: Service will resume later this morning.\r\n ","severity":20,"description":"Service Closed"}],"disruptions":[]},{"id":"metropolitan","mode":"tube","name":"Metropolitan","status":[{"reason":"Metropolitan Line: Service will resume later this morning.\r\n ","severity":20,"description":"Service Closed"}],"disruptions":[]},{"id":"northern","mode":"tube","name":"Northern","status":[{"reason":"Northern Line: Service will resume later this morning.\r\n ","severity":20,"description":"Service Closed"}],"disruptions":[]},{"id":"piccadilly","mode":"tube","name":"Piccadilly","status":[{"reason":"PICCADILLY LINE: Thursday 28, Friday 29, Saturday 30 and Sunday 31 May, no service between Rayners Lane and Uxbridge. Please use METROPOLITAN LINE services instead.","severity":5,"description":"Part Closure"},{"reason":"PICCADILLY LINE: Thursday 28, Friday 29, Saturday 30 and Sunday 31 May (including Friday and Saturday Night Tube), no service between Acton Town and Heathrow (all terminals). Replacement buses operate.","severity":5,"description":"Part Closure"},{"reason":"Piccadilly Line: Service will resume later this morning.\r\n ","severity":20,"description":"Service Closed"}],"disruptions":[]},{"id":"victoria","mode":"tube","name":"Victoria","status":[{"reason":"Victoria Line: Service will resume later this morning.\r\n ","severity":20,"description":"Service Closed"}],"disruptions":[]},{"id":"waterloo-city","mode":"tube","name":"Waterloo & City","status":[{"severity":10,"description":"Good Service"}],"disruptions":[]}]},"meta":{"timestamp":"2026-06-01T00:04:04.218Z","request_id":"5488d536-fae6-4540-8720-731c7a7f912d"},"status":"ok","message":"Status retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/stops":{"get":{"operationId":"get_v1_stops","tags":["Stops"],"summary":"Search stations & stops","description":"","parameters":[{"name":"query","in":"query","required":true,"description":"Place name","schema":{"type":"string"},"example":"oxford circus"},{"name":"mode","in":"query","required":false,"description":"Filter by mode","schema":{"type":"string"},"example":"tube"},{"name":"limit","in":"query","required":false,"description":"Max results","schema":{"type":"string"},"example":"25"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":1,"query":"oxford circus","stops":[{"id":"940GZZLUOXC","lat":51.515224,"lon":-0.141903,"name":"Oxford Circus Underground Station","lines":[],"modes":["tube"]}],"total":1},"meta":{"timestamp":"2026-06-01T00:04:04.340Z","request_id":"2938d5f4-aeb3-4f41-84af-145a48dda160"},"status":"ok","message":"Stops retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/arrivals":{"get":{"operationId":"get_v1_arrivals","tags":["Arrivals"],"summary":"Live arrival predictions","description":"","parameters":[{"name":"stop","in":"query","required":true,"description":"Stop name or NaPTAN id","schema":{"type":"string"},"example":"oxford circus"},{"name":"limit","in":"query","required":false,"description":"Max results","schema":{"type":"string"},"example":"20"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"stop":"940GZZLUOXC","count":2,"station":"Oxford Circus Underground Station","arrivals":[{"line":"Bakerloo","minutes":17,"towards":"Elephant and Castle","expected":"2026-06-01T00:19:36Z","platform":"Southbound - Platform 3","destination":"Elephant & Castle Underground Station","time_to_station_s":998},{"line":"Bakerloo","minutes":19,"towards":"Elephant and Castle","expected":"2026-06-01T00:21:36Z","platform":"Southbound - Platform 3","destination":"Elephant & Castle Underground Station","time_to_station_s":1118}]},"meta":{"timestamp":"2026-06-01T00:04:04.515Z","request_id":"836344bd-3269-409b-852a-033d4adda1f7"},"status":"ok","message":"Arrivals retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/journey":{"get":{"operationId":"get_v1_journey","tags":["Journey"],"summary":"Plan a journey A to B","description":"","parameters":[{"name":"from","in":"query","required":true,"description":"From place/id/latlon","schema":{"type":"string"},"example":"oxford circus"},{"name":"to","in":"query","required":true,"description":"To place/id/latlon","schema":{"type":"string"},"example":"waterloo"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"to":"HUBWAT","from":"940GZZLUOXC","count":3,"journeys":[{"legs":[{"mode":"walking","arrival":"Oxford Circus Stn  / Margaret Street","summary":"Transfer to Oxford Circus Stn /Margaret St","departure":"Oxford Circus Station","duration_min":1},{"mode":"bus","arrival":"Westminster Stn  / Parliament Square","summary":"88 bus to Westminster Station / Parliament Square","departure":"Oxford Circus Stn  / Margaret Street","duration_min":11},{"mode":"bus","arrival":"Lower Marsh","summary":"N155 bus to Lower Marsh","departure":"Westminster Stn  / Parliament Square","duration_min":5},{"mode":"walking","arrival":"Lambeth, Waterloo Hub Hotel","summary":"Walk to Lambeth, Waterloo Hub Hotel","departure":"Lower Marsh","duration_min":8}],"start":"2026-06-01T01:03:00","arrival":"2026-06-01T01:31:00","duration_min":28},{"legs":[{"mode":"walking","arrival":"Oxford Circus Stn  / Margaret Street","summary":"Transfer to Oxford Circus Stn /Margaret St","departure":"Oxford Circus Station","duration_min":1},{"mode":"bus","arrival":"Lambeth North Station","summary":"12 bus to Lambeth North Station","departure":"Oxford Circus Stn  / Margaret Street","duration_min":14},{"mode":"walking","arrival":"Lambeth, Waterloo Hub Hotel","summary":"Walk to Lambeth, Waterloo Hub Hotel","departure":"Lambeth North Station","duration_min":7}],"start":"2026-06-01T01:09:00","arrival":"2026-06-01T01:31:00","duration_min":22},{"legs":[{"mode":"walking","arrival":"Oxford Circus Stn  / Margaret Street","summary":"Transfer to Oxford Circus Stn /Margaret St","departure":"Oxford Circus Station","duration_min":1},{"mode":"bus","arrival":"Lambeth Road / Kennington Road","summary":"N3 bus to Lambeth Road / Kennington Road","departure":"Oxford Circus Stn  / Margaret Street","duration_min":16},{"mode":"walking","arrival":"Lambeth, Waterloo Hub Hotel","summary":"Walk to Lambeth, Waterloo Hub Hotel","departure":"Lambeth Road / Kennington Road","duration_min":1}],"start":"2026-06-01T01:14:00","arrival":"2026-06-01T01:32:00","duration_min":18}]},"meta":{"timestamp":"2026-06-01T00:04:05.518Z","request_id":"1b2a3b9d-adf1-4123-8727-652d71462513"},"status":"ok","message":"Journey planned","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Usage notes","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"London public transport. /v1/status?mode=tube = live line status for a mode (tube, dlr, overground, elizabeth-line, tram, bus, national-rail, river-bus, cable-car); /v1/stops?query=oxford circus = search stations/stops (ids, modes, lines, coords); /v1/arrivals?stop=oxford circus = live arrival predictions (accepts a stop name or NaPTAN id); /v1/line?id=victoria = one line's status & disruptions; /v1/journey?from=oxford circus&to=waterloo = door-to-door journey planning with legs (from/to accept names, ids or 'lat,lon'). Powered by TfL open data.","source":"Transport for London Unified API (api.tfl.gov.uk)","endpoints":["/v1/status","/v1/stops","/v1/arrivals","/v1/line","/v1/journey","/v1/meta"]},"meta":{"timestamp":"2026-06-01T00:04:05.568Z","request_id":"37b93b83-7e94-42f3-8307-8e559627d715"},"status":"ok","message":"Meta retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":4000,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":580,"monthly_call_quota":50000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1640,"monthly_call_quota":250000,"rps_limit":16,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":4340,"monthly_call_quota":1250000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/tfl-api"}