Transport for London Unified API
Our unified API brings together data across all modes of transport into a single RESTful API. This API provides access to the most highly requested realtime and status infomation across all the modes of transport, in a single and consistent way. Access to the developer documentation is available at https://api.tfl.gov.uk.
Trust score
How is this computed?Composite of 5 axes from our methodology (proof-based officialness, live verification, metadata completeness, license clarity, agent readiness).
- Officialnessweight 25%45/100
45/100 from 5 proof signals (domain / portal-backlink / GitHub-org / reciprocal / policy).
- Availabilityweight 25%100/100
Latest verification succeeded.
- Metadata completenessweight 20%80/100
8 of 10 recommended metadata fields populated.
- License clarityweight 15%50/100
License info not yet tracked for APIs (datasets only).
- Agent readinessweight 15%60/100
OpenAPI spec URL declared · Spec format known (openapi) · Topic tags assigned
Official Proof
Public Sector APIProof Evidence
official domain (gov.uk); policies found: accessibility
Data schema (143 fields)
| Field | Type | Description |
|---|---|---|
| idTfl.Api.Presentation.Entities.AccidentStats.AccidentDetail | integer (int32) | — |
| latTfl.Api.Presentation.Entities.AccidentStats.AccidentDetail | number (double) | — |
| lonTfl.Api.Presentation.Entities.AccidentStats.AccidentDetail | number (double) | — |
| locationTfl.Api.Presentation.Entities.AccidentStats.AccidentDetail | string | — |
| dateTfl.Api.Presentation.Entities.AccidentStats.AccidentDetail | string (date-time) | — |
| severityTfl.Api.Presentation.Entities.AccidentStats.AccidentDetail | string | — |
| boroughTfl.Api.Presentation.Entities.AccidentStats.AccidentDetail | string | — |
| casualtiesTfl.Api.Presentation.Entities.AccidentStats.AccidentDetail | array<object> | — |
| vehiclesTfl.Api.Presentation.Entities.AccidentStats.AccidentDetail | array<object> | — |
| ageTfl.Api.Presentation.Entities.AccidentStats.Casualty | integer (int32) | — |
| classTfl.Api.Presentation.Entities.AccidentStats.Casualty | string | — |
| severityTfl.Api.Presentation.Entities.AccidentStats.Casualty | string | — |
| modeTfl.Api.Presentation.Entities.AccidentStats.Casualty | string | — |
| ageBandTfl.Api.Presentation.Entities.AccidentStats.Casualty | string | — |
| typeTfl.Api.Presentation.Entities.AccidentStats.Vehicle | string | — |
| yearTfl.Api.Presentation.Entities.AccidentStats.AccidentStatsOrderedSummary | integer (int32) | — |
| boroughTfl.Api.Presentation.Entities.AccidentStats.AccidentStatsOrderedSummary | string | — |
| accidentsTfl.Api.Presentation.Entities.AccidentStats.AccidentStatsOrderedSummary | integer (int32) | — |
| idTfl.Api.Presentation.Entities.Place | string | A unique identifier. |
| urlTfl.Api.Presentation.Entities.Place | string | The unique location of this resource. |
| commonNameTfl.Api.Presentation.Entities.Place | string | A human readable name. |
| distanceTfl.Api.Presentation.Entities.Place | number (double) | The distance of the place from its search point, if this is the result of a geographical search, otherwise zero. |
| placeTypeTfl.Api.Presentation.Entities.Place | string | The type of Place. See /Place/Meta/placeTypes for possible values. |
| additionalPropertiesTfl.Api.Presentation.Entities.Place | array<object> | A bag of additional key/value pairs with extra information about this place. |
| childrenTfl.Api.Presentation.Entities.Place | array<object> | — |
| childrenUrlsTfl.Api.Presentation.Entities.Place | array<string> | — |
| latTfl.Api.Presentation.Entities.Place | number (double) | WGS84 latitude of the location. |
| lonTfl.Api.Presentation.Entities.Place | number (double) | WGS84 longitude of the location. |
| categoryTfl.Api.Presentation.Entities.AdditionalProperties | string | — |
| keyTfl.Api.Presentation.Entities.AdditionalProperties | string | — |
| sourceSystemKeyTfl.Api.Presentation.Entities.AdditionalProperties | string | — |
| valueTfl.Api.Presentation.Entities.AdditionalProperties | string | — |
| modifiedTfl.Api.Presentation.Entities.AdditionalProperties | string (date-time) | — |
| idTfl.Api.Presentation.Entities.CycleSuperhighway | string | The Id |
| labelTfl.Api.Presentation.Entities.CycleSuperhighway | string | The long label to show on maps when zoomed in |
| labelShortTfl.Api.Presentation.Entities.CycleSuperhighway | string | The short label to show on maps |
| geographyTfl.Api.Presentation.Entities.CycleSuperhighway | object | A LineString or MultiLineString that forms the route of the highway |
| segmentedTfl.Api.Presentation.Entities.CycleSuperhighway | boolean | True if the route is split into segments |
| modifiedTfl.Api.Presentation.Entities.CycleSuperhighway | string (date-time) | When the data was last updated |
| statusTfl.Api.Presentation.Entities.CycleSuperhighway | string | Cycle route status i.e Proposed, Existing etc |
| routeTypeTfl.Api.Presentation.Entities.CycleSuperhighway | string | Type of cycle route e.g CycleSuperhighways, Quietways, MiniHollands etc |
| geographySystem.Data.Spatial.DbGeography | object | — |
| coordinateSystemIdSystem.Data.Spatial.DbGeographyWellKnownValue | integer (int32) | — |
| wellKnownTextSystem.Data.Spatial.DbGeographyWellKnownValue | string | — |
| wellKnownBinarySystem.Data.Spatial.DbGeographyWellKnownValue | string (byte) | — |
| idTfl.Api.Presentation.Entities.Fares.Fare | integer (int32) | — |
| passengerTypeTfl.Api.Presentation.Entities.Fares.Fare | string | — |
| validFromTfl.Api.Presentation.Entities.Fares.Fare | string (date-time) | — |
| validUntilTfl.Api.Presentation.Entities.Fares.Fare | string (date-time) | — |
| ticketTimeTfl.Api.Presentation.Entities.Fares.Fare | string | — |
| ticketTypeTfl.Api.Presentation.Entities.Fares.Fare | string | — |
| costTfl.Api.Presentation.Entities.Fares.Fare | string | — |
| capTfl.Api.Presentation.Entities.Fares.Fare | number (double) | — |
| descriptionTfl.Api.Presentation.Entities.Fares.Fare | string | — |
| zoneTfl.Api.Presentation.Entities.Fares.Fare | string | — |
| modeTfl.Api.Presentation.Entities.Fares.Fare | string | — |
| headerTfl.Api.Presentation.Entities.Fares.FaresSection | string | — |
| indexTfl.Api.Presentation.Entities.Fares.FaresSection | integer (int32) | — |
| journeyTfl.Api.Presentation.Entities.Fares.FaresSection | object | — |
| rowsTfl.Api.Presentation.Entities.Fares.FaresSection | array<object> | — |
| messagesTfl.Api.Presentation.Entities.Fares.FaresSection | array<object> | — |
| fromStationTfl.Api.Presentation.Entities.Fares.Journey | object | — |
| toStationTfl.Api.Presentation.Entities.Fares.Journey | object | — |
| boundsIdTfl.Api.Presentation.Entities.Fares.FareDetails | integer (int32) | — |
| startDateTfl.Api.Presentation.Entities.Fares.FareDetails | string (date-time) | — |
| endDateTfl.Api.Presentation.Entities.Fares.FareDetails | string (date-time) | — |
| modeTfl.Api.Presentation.Entities.Fares.FareDetails | string | — |
| passengerTypeTfl.Api.Presentation.Entities.Fares.FareDetails | string | — |
| contactlessPAYGOnlyFareTfl.Api.Presentation.Entities.Fares.FareDetails | boolean | — |
| fromTfl.Api.Presentation.Entities.Fares.FareDetails | string | — |
| toTfl.Api.Presentation.Entities.Fares.FareDetails | string | — |
| fromStationTfl.Api.Presentation.Entities.Fares.FareDetails | string | — |
| toStationTfl.Api.Presentation.Entities.Fares.FareDetails | string | — |
| viaTfl.Api.Presentation.Entities.Fares.FareDetails | string | — |
| routeCodeTfl.Api.Presentation.Entities.Fares.FareDetails | string | — |
| displayNameTfl.Api.Presentation.Entities.Fares.FareDetails | string | — |
| displayOrderTfl.Api.Presentation.Entities.Fares.FareDetails | integer (int32) | — |
| routeDescriptionTfl.Api.Presentation.Entities.Fares.FareDetails | string | — |
| validatorInformationTfl.Api.Presentation.Entities.Fares.FareDetails | string | — |
| operatorTfl.Api.Presentation.Entities.Fares.FareDetails | string | — |
| specialFareTfl.Api.Presentation.Entities.Fares.FareDetails | boolean | — |
| throughFareTfl.Api.Presentation.Entities.Fares.FareDetails | boolean | — |
| isTourTfl.Api.Presentation.Entities.Fares.FareDetails | boolean | — |
| ticketsAvailableTfl.Api.Presentation.Entities.Fares.FareDetails | array<object> | — |
| messagesTfl.Api.Presentation.Entities.Fares.FareDetails | array<object> | — |
| bulletOrderTfl.Api.Presentation.Entities.Message | integer (int32) | — |
| headerTfl.Api.Presentation.Entities.Message | boolean | — |
| messageTextTfl.Api.Presentation.Entities.Message | string | — |
| linkTextTfl.Api.Presentation.Entities.Message | string | — |
| urlTfl.Api.Presentation.Entities.Message | string | — |
| atcoCodeTfl.Api.Presentation.Entities.Fares.FareStation | string | — |
| commonNameTfl.Api.Presentation.Entities.Fares.FareStation | string | — |
| fareCategoryTfl.Api.Presentation.Entities.Fares.FareStation | string | — |
| passengerTypeTfl.Api.Presentation.Entities.Fares.Ticket | string | — |
| ticketTypeTfl.Api.Presentation.Entities.Fares.Ticket | object | — |
| ticketTimeTfl.Api.Presentation.Entities.Fares.Ticket | object | — |
| costTfl.Api.Presentation.Entities.Fares.Ticket | string | — |
| descriptionTfl.Api.Presentation.Entities.Fares.Ticket | string | — |
| modeTfl.Api.Presentation.Entities.Fares.Ticket | string | — |
| displayOrderTfl.Api.Presentation.Entities.Fares.Ticket | integer (int32) | — |
| messagesTfl.Api.Presentation.Entities.Fares.Ticket | array<object> | — |
| typeTfl.Api.Presentation.Entities.Fares.TicketType | string | — |
| descriptionTfl.Api.Presentation.Entities.Fares.TicketType | string | — |
| typeTfl.Api.Presentation.Entities.Fares.TicketTime | string | — |
| descriptionTfl.Api.Presentation.Entities.Fares.TicketTime | string | — |
| idTfl.Api.Presentation.Entities.Fares.FareBounds | integer (int32) | — |
| fromTfl.Api.Presentation.Entities.Fares.FareBounds | string | — |
| toTfl.Api.Presentation.Entities.Fares.FareBounds | string | — |
| viaTfl.Api.Presentation.Entities.Fares.FareBounds | string | — |
| routeCodeTfl.Api.Presentation.Entities.Fares.FareBounds | string | — |
| descriptionTfl.Api.Presentation.Entities.Fares.FareBounds | string | — |
| displayNameTfl.Api.Presentation.Entities.Fares.FareBounds | string | — |
| operatorTfl.Api.Presentation.Entities.Fares.FareBounds | string | — |
| displayOrderTfl.Api.Presentation.Entities.Fares.FareBounds | integer (int32) | — |
| isPopularFareTfl.Api.Presentation.Entities.Fares.FareBounds | boolean | — |
| isPopularTravelCardTfl.Api.Presentation.Entities.Fares.FareBounds | boolean | — |
| isTourTfl.Api.Presentation.Entities.Fares.FareBounds | boolean | — |
| messagesTfl.Api.Presentation.Entities.Fares.FareBounds | array<object> | — |
| idTfl.Api.Presentation.Entities.Fares.FaresPeriod | integer (int32) | — |
| startDateTfl.Api.Presentation.Entities.Fares.FaresPeriod | string (date-time) | — |
| viewableDateTfl.Api.Presentation.Entities.Fares.FaresPeriod | string (date-time) | — |
| endDateTfl.Api.Presentation.Entities.Fares.FaresPeriod | string (date-time) | — |
| isFutureTfl.Api.Presentation.Entities.Fares.FaresPeriod | boolean | — |
| idTfl.Api.Presentation.Entities.Fares.FaresMode | integer (int32) | — |
| nameTfl.Api.Presentation.Entities.Fares.FaresMode | string | — |
| descriptionTfl.Api.Presentation.Entities.Fares.FaresMode | string | — |
| typeTfl.Api.Presentation.Entities.Fares.PassengerType | string | — |
| descriptionTfl.Api.Presentation.Entities.Fares.PassengerType | string | — |
| displayNameTfl.Api.Presentation.Entities.Fares.PassengerType | string | — |
| displayOrderTfl.Api.Presentation.Entities.Fares.PassengerType | integer (int32) | — |
| longitudeTfl.Api.Presentation.Entities.Coordinate | number (double) | — |
| latitudeTfl.Api.Presentation.Entities.Coordinate | number (double) | — |
| eastingTfl.Api.Presentation.Entities.Coordinate | number (double) | — |
| northingTfl.Api.Presentation.Entities.Coordinate | number (double) | — |
| xCoordTfl.Api.Presentation.Entities.Coordinate | integer (int32) | — |
| yCoordTfl.Api.Presentation.Entities.Coordinate | integer (int32) | — |
| typesTfl.Api.Presentation.Entities.GeoCodeSearchMatch | array<string> | The type of the place e.g. "street_address" |
| addressTfl.Api.Presentation.Entities.GeoCodeSearchMatch | string | A string describing the formatted address of the place. Adds additional context to the place's Name. |
| idTfl.Api.Presentation.Entities.GeoCodeSearchMatch | string | — |
| urlTfl.Api.Presentation.Entities.GeoCodeSearchMatch | string | — |
| nameTfl.Api.Presentation.Entities.GeoCodeSearchMatch | string | — |
| latTfl.Api.Presentation.Entities.GeoCodeSearchMatch | number (double) | — |
| lonTfl.Api.Presentation.Entities.GeoCodeSearchMatch | number (double) | — |
Schema captured from openapi 6 days ago.
Verification Status
Using the API
Configuration
- Base URL
- https://api.tfl.gov.uk
- Version
- v1
- Format
- openapi
- Endpoints
- 84
Try the API
/AccidentStats/{year}Gets all accident details for accidents occuring in the specified year
/AirQualityGets air quality data feed
/BikePointGets all bike point locations. The Place object has an addtionalProperties array which contains the nbBikes, nbDocks and nbSpaces numbers which give the status of the BikePoint. A mismatch in these numbers i.e. nbDocks - (nbBikes + nbSpaces) != 0 indicates broken docks.
/BikePoint/{id}Gets the bike point with the given id.
/BikePoint/SearchSearch for bike stations by their name, a bike point's name often contains information about the name of the street or nearby landmarks, for example. Note that the search result does not contain the PlaceProperties i.e. the status or occupancy of the BikePoint, to get that information you should retrieve the BikePoint by its id on /BikePoint/id.
Requests are proxied through our servers. Only GET endpoints are testable.
Query examples
curl -s 'https://api.tfl.gov.uk/swagger/docs/v1' -H 'Accept: application/json'Machine-readable API description (use it to generate clients).
Machine-readable & source
Embed this badge in a README or wiki — it always shows the latest verification state and quality tier.