Transport for London, England

Transport for London, England — free-tier JSON endpoint

🚆 TransportUNMONITORED
AUTH APIKEYCORS AGENT ?HTTPS COMMERCIAL ?

Transport for London, England offers a free API tier. We verified JSON on a sample GET (Transportation). Check provider docs for key requirements and limits.

HOW IT'S SCORED ⓘ
Status badge · for your READMEshipapis health badge: — · unmonitored
ON PROBE SCHEDULE

We probe a documented GET and expect 2xx JSON — full uptime and health score. Open provider docs ↗

Uptime historystarts after first probe

On our probe schedule. Uptime charts appear after the first check lands.

Example responsefrom provider docs — not verified by us
GET https://api.tfl.gov.uk/swagger/docs/v1

{
  "swagger": "2.0",
  "info": {
    "version": "v1",
    "title": "Transport for London Unified API"
  },
  "host": "api.tfl.gov.uk",
  "schemes": [
    "https"
  ],
  "paths": {
    "/AccidentStats/{year}": {
      "get": {
        "tags": [
          "AccidentStats"
        ],
        "summary": "Gets all accident details for accidents occuring in the specified year",
        "operationId": "AccidentStats_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "year",
            "in": "path",
            "description": "The year for which to filter the accidents on.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Tfl.Api.Presentation.Entities.AccidentStats.AccidentDetail"
              }
            }
          }
        },
        "deprecated": false
      }
    },
    "/AirQuality": {
      "get": {
        "tags": [
          "AirQuality"
        ],
        "summary": "Gets air quality data feed",
        "operationId": "AirQuality_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/System.Object"
            }
          }
        },
        "deprecated": false
      }
    },
    "/BikePoint": {
      "get": {
        "tags": [
          "BikePoint"
        ],
        "summary": "Gets all bike point locations. The Place object has an addtionalProperties array which contains the nbBikes, nbDocks and nbSpaces\r\n            numbers which give the status of the BikePoint. A mismatch in these numbers i.e. nbDocks - (nbBikes + nbSpaces) != 0 indicates broken docks.",
        "operationId": "BikePoint_GetAll",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Tfl.Api.Presentation.Entities.Place"
              }
            }
          }
        },
        "deprecated": false
      }
    },
    "/BikePoint/{id}": {
      "get": {
        "tags": [
          "BikePoint"
        ],
        "summary": "Gets the bike point with the given id.",
        "operationId": "BikePoint_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "A bike point id (a list of ids can be obtained from the above BikePoint call)",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Tfl.Api.Presentation.Entities.Place"
            }
          }
        },
        "deprecated": false
      }
    },
    "/BikePoint/Search": {
      "get": {
        "tags": [
          "BikePoint"
        ],
        "summary": "Search for bike stations by their name, a bike point's name often contains information about the name of the street\r\n            or nearby landmarks, for example. Note that the search result does not contain the PlaceProperties i.e. the status\r\n            or occupancy of the BikePoint, to get that information you should retrieve the BikePoint by its id on /BikePoint/id.",
        "operationId": "BikePoint_Search",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "The search term e.g. \"St. James\"",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Tfl.Api.Presentation.Entities.Place"
              }
            }
          }
        },
        "deprecated": false
      }
    },
    "/Cabwise/search": {
      "get": {
        "tags": [
          "Cabwise"
        ],
        "summary": "Gets taxis and minicabs contact information",
        "operationId": "Cabwise_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "description": "Latitude",
            "required": true,
            "type": "number",
            "format": "double"
          },
          {
            "name": "lon",
            "in": "query",
            "description": "Longitude",
            "required": true,
            "type": "number",
            "format": "double"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/System.Object"
            }
          }
        },
        "deprecated": false
      }
    },
    "/Journey/Meta/Modes": {
      "get": {
        "tags": [
          "Journey"
        ],
        "summary": "Gets a list of all of the available journey planner modes",
        "operationId": "Journey_Meta",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Tfl.Api.Presentation.Entities.Mode"
              }
            }
          }
        },
        "deprecated": false
      }
    },
    "/Journey/JourneyResults/{from}/to/{to}": {
      "get": {
        "tags": [
          "Journey"
        ],
        "summary": "Perform a Journey Planner search from the parameters specified in simple types",
        "operationId": "Journey_JourneyResults",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "path",
            "description": "Origin of the journey. Can be WGS84 coordinates expressed as \"lat,long\", a UK postcode, a Naptan (StopPoint) id, an ICS StopId, or a free-text string (will cause disambiguation unless it exactly matches a point of interest name).",
            "required": true,
            "type": "string"
          },
          {
            "name": "to",
            "in": "path",
            "description": "Destination of the journey. Can be WGS84 coordinates expressed as \"lat,long\", a UK postcode, a Naptan (StopPoint) id, an ICS StopId, or a free-text string (will cause disambiguation unless it exactly matches a point of interest name).",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Tfl.Api.Presentation.Entities.JourneyPlanner.ItineraryResult"
            }
          }
        },
        "deprecated": false
      }
    }
  },
  "definitions": {
    "Tfl.Api.Presentation.Entities.AccidentStats.AccidentDetail": {
      "type": "object",
      "properties": {
        "id": {
          "format": "int32",
          "type": "integer"
        },
        "lat": {
          "format": "double",
          "type": "number"
        },
        "lon": {
          "format": "double",
          "type": "number"
        },
        "location": {
          "type": "string"
        },
        "date": {
          "format": "date-time",
          "type": "string"
        },
        "severity": {
          "type": "string"
        },
        "borough": {
          "type": "string"
        },
        "casualties": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Tfl.Api.Presentation.Entities.AccidentStats.Casualty"
          }
        }
      }
    },
    "Tfl.Api.Presentation.Entities.AccidentStats.Casualty": {
      "type": "object",
      "properties": {
        "age": {
          "format": "int32",
          "type": "integer"
        },
        "class": {
          "type": "string"
        },
        "severity": {
          "type": "string"
        },
        "mode": {
          "type": "string"
        },
        "ageBand": {
          "type": "string"
        }
      }
    },
    "Tfl.Api.Presentation.Entities.AccidentStats.Vehicle": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        }
      }
    },
    "Tfl.Api.Presentation.Entities.AccidentStats.AccidentStatsOrderedSummary": {
      "type": "object",
      "properties": {
        "year": {
          "format": "int32",
          "type": "integer"
        },
        "borough": {
          "type": "string"
        },
        "accidents": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "System.Object": {
      "type": "object",
      "properties": {}
    },
    "Tfl.Api.Presentation.Entities.Place": {
      "type": "object",
      "properties": {
        "id": {
          "description": "A unique identifier.",
          "type": "string"
        },
        "url": {
          "description": "The unique location of this resource.",
          "type": "string"
        },
        "commonName": {
          "description": "A human readable name.",
          "type": "string"
        },
        "distance": {
          "format": "double",
          "description": "The distance of the place from its search point, if this is the result\r\n            of a geographical search, otherwise zero.",
          "type": "number"
        },
        "placeType": {
          "description": "The type of Place. See /Place/Meta/placeTypes for possible values.",
          "type": "string"
        },
        "additionalProperties": {
          "description": "A bag of additional key/value pairs with extra information about this place.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Tfl.Api.Presentation.Entities.AdditionalProperties"
          }
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Tfl.Api.Presentation.Entities.Place"
          }
        },
        "childrenUrls": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "Tfl.Api.Presentation.Entities.AdditionalProperties": {
      "type": "object",
      "properties": {
        "category": {
          "type": "string"
        },
        "key": {
          "type": "string"
        },
        "sourceSystemKey": {
          "type": "string"
        },
        "value": {
          "type": "string"
        },
        "modified": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "Tfl.Api.Presentation.Entities.CycleSuperhighway": {
      "description": "",
      "type": "object",
      "properties": {
        "id": {
          "description": "The Id",
          "type": "string"
        },
        "label": {
          "description": "The long label to show on maps when zoomed in",
          "type": "string"
        },
        "labelShort": {
          "description": "The short label to show on maps",
          "type": "string"
        },
        "geography": {
          "$ref": "#/definitions/System.Data.Spatial.DbGeography",
          "description": "A LineString or MultiLineString that forms the route of the highway"
        },
        "segmented": {
          "description": "True if the route is split into segments",
          "type": "boolean"
        },
        "modified": {
          "format": "date-time",
          "description": "When the data was last updated",
          "type": "string"
        },
        "status": {
          "description": "Cycle route status i.e Proposed, Existing etc",
          "enum": [
            "Unknown",
            "All"
          ],
          "type": "string"
        },
        "routeType": {
          "description": "Type of cycle route e.g CycleSuperhighways, Quietways, MiniHollands etc",
          "enum": [
            "Unknown",
            "All"
          ],
          "type": "string"
        }
      }
    }
  },
  "securityDefinitions": {
    "apiKey": {
      "type": "apiKey",
      "description": "API Key Authentication",
      "name": "app_key",
      "in": "query"
    },
    "appId": {
      "type": "apiKey",
      "description": "Application ID",
      "name": "app_id",
      "in": "query"
    }
  }
}
Call itcurl · fetch · python
curl "https://api.tfl.gov.uk/swagger/docs/v1"
const res = await fetch("https://api.tfl.gov.uk/swagger/docs/v1");
const data = await res.json();
console.log(data);
import requests

res = requests.get("https://api.tfl.gov.uk/swagger/docs/v1")
print(res.json())
Endpoints · 6On scheduleFULL DOCS ↗
On schedule — GET /swagger/docs/v1 awaits first probe
GET/swagger/docs/v1PROBED

Transport for London, England — free-tier JSON endpoint

GET/swagger

Swagger — documented GET route.

GET/swagger/1

Swagger details by ID (example: 1).

GET/swagger?limit=10

Swagger — documented GET route.

GET/swagger/search?q=test

Search by query parameters.

GET/Content/DTOs.zip

DTOs Zip — documented GET route.

Machine-readable spec

We probe a documented GET and expect 2xx JSON — full uptime and health score. Export includes every documented route below.

Response-shape history

Not tracked yet. Shape-change history starts once this API joins our probe schedule.

Transport for London, England: common questions

Is Transport for London, England free to use?

Yes — Transport for London, England is a free transport API. Free tier: Free tier — API key may be required for production. Whether the free tier allows commercial use is unclear — check the provider docs.

Does Transport for London, England need an API key?

Yes — Transport for London, England needs a free API key, which you pass on each request. Rate limits: Unpublished.

Can I call Transport for London, England from the browser?

Yes — Transport for London, England returns CORS headers over HTTPS, so front-end code can fetch it directly with no backend proxy. Use the fetch snippet on this page, or hit "Run live" to try it now.

Is Transport for London, England up right now?

Transport for London, England is catalogued but not yet on our probe schedule, so we don't publish a live status for it. Check the provider's own status page or docs for its current state.