Transport for London, England Place API

The Place API from Transport for London, England — 9 operation(s) for place.

GitHub OpenAPI

Operations 9

GET /Place/Meta/Categories Gets a list of all of the available place property categories and keys. #
GET /Place/Meta/PlaceTypes Gets a list of the available types of Place. #
GET /Place/Address/Streets/{Postcode} Gets the set of streets associated with a post code. #
GET /Place/Type/{types} Gets all places of a given type #
GET /Place/{id} Gets the place with the given id. #
GET /Place Gets the places that lie within a geographic region. The geographic region of interest can either be specified by using a lat/lon geo-point and a radius in metres to return places #
GET /Place/{type}/At/{Lat}/{Lon} Gets any places of the given type whose geography intersects the given latitude and longitude. In practice this means the Place must be polygonal e.g. a BoroughBoundary. #
GET /Place/{type}/overlay/{z}/{Lat}/{Lon}/{width}/{height} Gets the place overlay for a given set of co-ordinates and a given width/height. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/transport-for-london-england:transport-for-london-england-place-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

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 Specification

transport-for-london-england-place-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: v1
  title: Transport for London Unified Place API
servers:
- url: https://api.tfl.gov.uk
tags:
- name: Place
paths:
  /Place/Meta/Categories:
    get:
      tags:
      - Place
      summary: Gets a list of all of the available place property categories and keys.
      operationId: Place_MetaCategories
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.PlaceCategory'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.PlaceCategory'
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.PlaceCategory'
            text/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.PlaceCategory'
      deprecated: false
  /Place/Meta/PlaceTypes:
    get:
      tags:
      - Place
      summary: Gets a list of the available types of Place.
      operationId: Place_MetaPlaceTypes
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.PlaceCategory'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.PlaceCategory'
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.PlaceCategory'
            text/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.PlaceCategory'
      deprecated: false
  /Place/Address/Streets/{Postcode}:
    get:
      tags:
      - Place
      summary: Gets the set of streets associated with a post code.
      operationId: Place_GetStreetsByPostCode
      parameters:
      - name: postcode
        in: query
        required: true
        schema:
          type: string
      - name: postcodeInput.postcode
        in: query
        required: false
        schema:
          type: string
          pattern: ^(([gG][iI][rR] {0,}0[aA]{2})|((([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y]?[0-9][0-9]?)|(([a-pr-uwyzA-PR-UWYZ][0-9][a-hjkstuwA-HJKSTUW])|([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y][0-9][abehmnprv-yABEHMNPRV-Y]))) {0,}[0-9][abd-hjlnp-uw-zABD-HJLNP-UW-Z]{2}))$
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/System.Object'
            text/json:
              schema:
                $ref: '#/components/schemas/System.Object'
            application/xml:
              schema:
                $ref: '#/components/schemas/System.Object'
            text/xml:
              schema:
                $ref: '#/components/schemas/System.Object'
      deprecated: false
  /Place/Type/{types}:
    get:
      tags:
      - Place
      summary: Gets all places of a given type
      operationId: Place_GetByType
      parameters:
      - name: types
        in: path
        description: "A comma-separated list of the types to return. Max. approx 12 types.\n            A valid list of place types can be obtained from the /Place/Meta/placeTypes endpoint."
        required: true
        schema:
          type: array
          items:
            type: string
      - name: activeOnly
        in: query
        description: An optional parameter to limit the results to active records only (Currently only the 'VariableMessageSign' place type is supported)
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
            text/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
      deprecated: false
  /Place/{id}:
    get:
      tags:
      - Place
      summary: Gets the place with the given id.
      operationId: Place_Get
      parameters:
      - name: id
        in: path
        description: The id of the place, you can use the /Place/Types/{types} endpoint to get a list of places for a given type including their ids
        required: true
        schema:
          type: string
      - name: includeChildren
        in: query
        description: Defaults to false. If true child places e.g. individual charging stations at a charge point while be included, otherwise just the URLs of any child places will be returned
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
            text/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
      deprecated: false
  /Place:
    get:
      tags:
      - Place
      summary: "Gets the places that lie within a geographic region. The geographic region of interest can either be specified\n            by using a lat/lon geo-point and a radius in metres to return places within the locus defined by the lat/lon of\n            its centre or alternatively, by the use of a bounding box defined by the lat/lon of its north-west and south-east corners.\n            Optionally filters on type and can strip properties for a smaller payload."
      operationId: Place_GetByGeo
      parameters:
      - name: radius
        in: query
        description: The radius of the bounding circle in metres when only lat/lon are specified.
        required: false
        schema:
          type: number
          format: double
      - name: categories
        in: query
        description: An optional list of comma separated property categories to return in the Place's property bag. If null or empty, all categories of property are returned. Pass the keyword "none" to return no properties (a valid list of categories can be obtained from the /Place/Meta/categories endpoint)
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: includeChildren
        in: query
        description: Defaults to false. If true child places e.g. individual charging stations at a charge point while be included, otherwise just the URLs of any child places will be returned
        required: false
        schema:
          type: boolean
      - name: type
        in: query
        description: Place types to filter on, or null to return all types
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: activeOnly
        in: query
        description: An optional parameter to limit the results to active records only (Currently only the 'VariableMessageSign' place type is supported)
        required: false
        schema:
          type: boolean
      - name: numberOfPlacesToReturn
        in: query
        description: If specified, limits the number of returned places equal to the given value
        required: false
        schema:
          type: integer
          format: int32
      - name: placeGeo.swLat
        in: query
        required: false
        schema:
          type: number
          format: double
      - name: placeGeo.swLon
        in: query
        required: false
        schema:
          type: number
          format: double
      - name: placeGeo.neLat
        in: query
        required: false
        schema:
          type: number
          format: double
      - name: placeGeo.neLon
        in: query
        required: false
        schema:
          type: number
          format: double
      - name: placeGeo.lat
        in: query
        required: false
        schema:
          type: number
          format: double
      - name: placeGeo.lon
        in: query
        required: false
        schema:
          type: number
          format: double
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.StopPoint'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.StopPoint'
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.StopPoint'
            text/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.StopPoint'
      deprecated: false
  /Place/{type}/At/{Lat}/{Lon}:
    get:
      tags:
      - Place
      summary: "Gets any places of the given type whose geography intersects the given latitude and longitude. In practice this means the Place\n            must be polygonal e.g. a BoroughBoundary."
      operationId: Place_GetAt
      parameters:
      - name: type
        in: path
        description: The place type (a valid list of place types can be obtained from the /Place/Meta/placeTypes endpoint)
        required: true
        schema:
          type: array
          items:
            type: string
      - name: lat
        in: query
        required: true
        schema:
          type: string
      - name: lon
        in: query
        required: true
        schema:
          type: string
      - name: location.lat
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: location.lon
        in: query
        required: true
        schema:
          type: number
          format: double
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/System.Object'
            text/json:
              schema:
                $ref: '#/components/schemas/System.Object'
            application/xml:
              schema:
                $ref: '#/components/schemas/System.Object'
            text/xml:
              schema:
                $ref: '#/components/schemas/System.Object'
      deprecated: false
  /Place/{type}/overlay/{z}/{Lat}/{Lon}/{width}/{height}:
    get:
      tags:
      - Place
      summary: Gets the place overlay for a given set of co-ordinates and a given width/height.
      operationId: Place_GetOverlay
      parameters:
      - name: z
        in: path
        description: The zoom level
        required: true
        schema:
          type: integer
          format: int32
      - name: type
        in: path
        description: The place type (a valid list of place types can be obtained from the /Place/Meta/placeTypes endpoint)
        required: true
        schema:
          type: array
          items:
            type: string
      - name: width
        in: path
        description: The width of the requested overlay.
        required: true
        schema:
          type: integer
          format: int32
      - name: height
        in: path
        description: The height of the requested overlay.
        required: true
        schema:
          type: integer
          format: int32
      - name: lat
        in: query
        required: true
        schema:
          type: string
      - name: lon
        in: query
        required: true
        schema:
          type: string
      - name: location.lat
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: location.lon
        in: query
        required: true
        schema:
          type: number
          format: double
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/System.Object'
            text/json:
              schema:
                $ref: '#/components/schemas/System.Object'
            application/xml:
              schema:
                $ref: '#/components/schemas/System.Object'
            text/xml:
              schema:
                $ref: '#/components/schemas/System.Object'
      deprecated: false
  /Place/Search:
    get:
      tags:
      - Place
      summary: Gets all places that matches the given query
      operationId: Place_Search
      parameters:
      - name: name
        in: query
        description: The name of the place, you can use the /Place/Types/{types} endpoint to get a list of places for a given type including their names.
        required: true
        schema:
          type: string
      - name: types
        in: query
        description: A comma-separated list of the types to return. Max. approx 12 types.
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
            text/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
      deprecated: false
components:
  schemas:
    Tfl.Api.Presentation.Entities.PlaceCategory:
      type: object
      properties:
        category:
          type: string
        availableKeys:
          type: array
          items:
            type: string
    Tfl.Api.Presentation.Entities.LineModeGroup:
      type: object
      properties:
        modeName:
          type: string
        lineIdentifier:
          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
    System.Object:
      type: object
      properties: {}
    Tfl.Api.Presentation.Entities.PassengerFlow:
      type: object
      properties:
        timeSlice:
          description: Time in 24hr format with 15 minute intervals e.g. 0500-0515, 0515-0530 etc.
          type: string
        value:
          format: int32
          description: Count of passenger flow towards a platform
          type: integer
    Tfl.Api.Presentation.Entities.Crowding:
      type: object
      properties:
        passengerFlows:
          description: Busiest times at a station (static information)
          type: array
          items:
            $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.PassengerFlow'
        trainLoadings:
          description: Train Loading on a scale 1-6, 1 being "Very quiet" and 6 being "Exceptionally busy" (static information)
          type: array
          items:
            $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.TrainLoading'
    Tfl.Api.Presentation.Entities.StopPoint:
      type: object
      properties:
        naptanId:
          type: string
        platformName:
          type: string
        indicator:
          description: The indicator of the stop point e.g. "Stop K"
          type: string
        stopLetter:
          description: The stop letter, if it could be cleansed from the Indicator e.g. "K"
          type: string
        modes:
          type: array
          items:
            type: string
        icsCode:
          type: string
        smsCode:
          type: string
        stopType:
          type: string
        stationNaptan:
          type: string
        accessibilitySummary:
          type: string
        hubNaptanCode:
          type: string
        lines:
          type: array
          items:
            $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Identifier'
        lineGroup:
          type: array
          items:
            $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.LineGroup'
        lineModeGroups:
          type: array
          items:
            $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.LineModeGroup'
        fullName:
          type: string
        naptanMode:
          type: string
        status:
          type: boolean
        individualStopId:
          type: string
        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\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: '#/components/schemas/Tfl.Api.Presentation.Entities.AdditionalProperties'
        children:
          type: array
          items:
            $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
        childrenUrls:
          type: array
          items:
            type: string
        lat:
          format: double
          description: WGS84 latitude of the location.
          type: number
        lon:
          format: double
          description: WGS84 longitude of the location.
          type: number
    Tfl.Api.Presentation.Entities.Identifier:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        uri:
          type: string
        fullName:
          type: string
        type:
          type: string
        crowding:
          $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Crowding'
        routeType:
          enum:
          - Unknown
          - All
          - Cycle Superhighways
          - Quietways
          - Cycleways
          - Mini-Hollands
          - Central London Grid
          - Streetspace Route
          type: string
        status:
          enum:
          - Unknown
          - All
          - Open
          - In Progress
          - Planned
          - Planned - Subject to feasibility and consultation.
          - Not Open
          type: string
        motType:
          type: string
        network:
          type: string
    Tfl.Api.Presentation.Entities.LineGroup:
      type: object
      properties:
        naptanIdReference:
          type: string
        stationAtcoCode:
          type: string
        lineIdentifier:
          type: array
          items:
            type: string
    Tfl.Api.Presentation.Entities.TrainLoading:
      type: object
      properties:
        line:
          description: The Line Name e.g. "Victoria"
          type: string
        lineDirection:
          description: Direction of the Line e.g. NB, SB, WB etc.
          type: string
        platformDirection:
          description: Direction displayed on the platform e.g. NB, SB, WB etc.
          type: string
        direction:
          description: Direction in regards to Journey Planner i.e. inbound or outbound
          type: string
        naptanTo:
          description: Naptan of the adjacent station
          type: string
        timeSlice:
          description: Time in 24hr format with 15 minute intervals e.g. 0500-0515, 0515-0530 etc.
          type: string
        value:
          format: int32
          description: "Scale between 1-6, \n             1 = Very quiet, 2 = Quiet, 3 = Fairly busy, 4 = Busy, 5 = Very busy, 6 = Exceptionally busy"
          type: integer
    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\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: '#/components/schemas/Tfl.Api.Presentation.Entities.AdditionalProperties'
        children:
          type: array
          items:
            $ref: '#/components/schemas/Tfl.Api.Presentation.Entities.Place'
        childrenUrls:
          type: array
          items:
            type: string
        lat:
          format: double
          description: WGS84 latitude of the location.
          type: number
        lon:
          format: double
          description: WGS84 longitude of the location.
          type: number
  securitySchemes:
    apiKey:
      type: apiKey
      description: API Key Authentication
      name: app_key
      in: query
    appId:
      type: apiKey
      description: Application ID
      name: app_id
      in: query
x-provenance:
  method: harvested
  publisher: Transport for London, England
  source: https://api.tfl.gov.uk/swagger/docs/v1
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)