TransCAPI Disruptions API
The Disruptions API from TransCAPI — 1 operation(s) for disruptions.
The Disruptions API from TransCAPI — 1 operation(s) for disruptions.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/transcapi:transcapi-disruptions-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
contact:
url: https://www.transcapi.com
description: 'Public transport data for Great Britain (England, Scotland and Wales): stops and places, bus and rail departures and arrivals with live running, routes and services, live bus positions, disruptions and journey planning. Every departure says in `source` whether its time is live or timetabled. Data is official open data; attribution requirements are at https://www.transcapi.com/docs/data-sources.'
termsOfService: https://www.transcapi.com/terms
title: TransC Disruptions API
version: 1.0.0
servers:
- description: Production
url: https://api.transcapi.com
security:
- ApiKeyHeader: []
- ApiKeyQuery: []
tags:
- name: Disruptions
paths:
/v1/disruptions.json:
get:
description: 'Combines the DfT''s national BODS SIRI-SX bus situation feed, National Rail''s Knowledgebase incidents (planned engineering works and unplanned incidents), TfL''s line status for the Tube, DLR, Overground, Elizabeth line and trams, and the service alerts of every Dutch operator (OVapi) and of SNCB, De Lijn and TEC in Belgium, normalised into one shape. Each result carries the `source` it came from (`bods_siri_sx`, `nre_kb`, `tfl`, `ovapi_gtfsr`, `bmc_gtfsr`). National Rail incidents list the stations named in their affected routes, with CRS codes and positions, so stop, location and route filters apply to rail too.
By default only disruptions currently in force are returned, and lines running a good service are omitted; pass `include_good_service=true` to see every TfL line''s status including the healthy ones. The `sources` object reports when each feed was last retrieved and whether it last failed, so an empty list is distinguishable from an outage.'
parameters:
- description: 'Comma-separated modes to include - any of `bus`, `tram`, `rail`, `metro`, `ferry`, `tube`, `dlr`, `overground`, `elizabeth-line`. Default is all of them. `tram` draws on both SIRI-SX and TfL. `rail` is National Rail''s engineering works and incidents, plus any rail situations bus operators publish through SIRI-SX, and SNCB''s in Belgium. `metro` and `ferry` are the Netherlands and Belgium.
'
in: query
name: mode
schema:
type: string
- description: 'Comma-separated severities - any of `severe`, `minor`, `information`, `good`, `unknown`.
'
in: query
name: severity
schema:
type: string
- description: Only disruptions naming this stop as affected
in: query
name: atcocode
schema:
type: string
- description: Operator name or code, matched as a substring
in: query
name: operator
schema:
type: string
- description: Line or route name, matched as a substring
in: query
name: line
schema:
type: string
- in: query
name: lat
schema:
type: number
- in: query
name: lon
schema:
type: number
- description: 'Search radius in metres around lat/lon. Only disruptions naming at least one stop with coordinates can match a geographic query.
'
in: query
name: radius
schema:
default: 2000
type: integer
- in: query
name: min_lat
schema:
type: number
- in: query
name: min_lon
schema:
type: number
- in: query
name: max_lat
schema:
type: number
- in: query
name: max_lon
schema:
type: number
- description: 'An encoded polyline (precision 5, as OpenTripPlanner and Google Maps emit) describing a route. Only disruptions naming a stop within `path_radius` metres of it are returned. Use this rather than a bounding box to ask "what is disrupting this journey": a service number identifies a route only within one operator''s area, so filtering by `line` alone will match the same number in other towns. Matching uses each situation''s complete stop list, not the capped one in the response.
'
in: query
name: path
schema:
type: string
- description: 'How far from the path a stop may be, in metres. Maximum 5000. Only meaningful alongside `path`.
'
in: query
name: path_radius
schema:
default: 300
type: integer
- description: 'True for planned works only, false for unplanned incidents only. Omit to include both.
'
in: query
name: planned
schema:
type: boolean
- description: Exclude disruptions whose validity period has not started or has ended
in: query
name: active_only
schema:
default: true
type: boolean
- in: query
name: include_good_service
schema:
default: false
type: boolean
- in: query
name: limit
schema:
default: 50
type: integer
- in: query
name: page
schema:
default: 1
type: integer
responses:
'200':
description: List of disruptions
summary: Planned works, incidents and line status across bus, National Rail and TfL modes
tags:
- Disruptions
operationId: getV1DisruptionsJson
x-operation-id-source: derived
components:
securitySchemes:
ApiKeyHeader:
in: header
name: X-Api-Key
type: apiKey
ApiKeyQuery:
in: query
name: api_key
type: apiKey