TransportAPI

UK public transport data API providing real-time bus and rail departures, multimodal journey planning, bus and rail performance analytics, and transport places lookup across Great Britain.

OpenAPI Specification

transportapi-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: TransportAPI
  description: >-
    TransportAPI is a managed data service provider for UK public transport,
    offering real-time and scheduled bus, rail, and multimodal transport data.
    The API provides journey planning, departure boards, performance analytics,
    and places lookup across Great Britain.
  version: v3.0.0
  contact:
    name: TransportAPI Support
    url: https://www.transportapi.com/contact/
  x-logo:
    url: https://www.transportapi.com/logo.png
servers:
  - url: https://transportapi.com/v3/uk
    description: TransportAPI UK Production Server
security:
  - AppIdAuth: []
tags:
  - name: Bus Information
    description: Real-time and scheduled bus departure and arrival data
  - name: Rail Information
    description: Real-time and scheduled rail departure and arrival data
  - name: Journey Planner
    description: Multimodal journey planning across Great Britain
  - name: Places
    description: Transport stops, stations, and points of interest
  - name: Bus Performance
    description: Bus fleet performance analytics and punctuality metrics
  - name: Rail Performance
    description: Rail service performance and delay analytics
paths:
  /bus/stop/{atcocode}/live.json:
    get:
      operationId: getBusStopLiveDepartures
      summary: Get Bus Stop Live Departures
      description: >-
        Returns real-time departure information for buses at a specific stop,
        identified by its ATCO code.
      tags:
        - Bus Information
      parameters:
        - name: atcocode
          in: path
          required: true
          schema:
            type: string
          description: The ATCO code of the bus stop
        - name: group
          in: query
          required: false
          schema:
            type: string
            enum: ['route', 'no']
            default: 'route'
          description: How to group departures in the response
        - name: nextbuses
          in: query
          required: false
          schema:
            type: string
            enum: ['yes', 'no']
            default: 'yes'
          description: Whether to include real-time next bus predictions
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 5
          description: Maximum number of departures to return
        - name: app_id
          in: query
          required: false
          schema:
            type: string
          description: Application ID for authentication
        - name: app_key
          in: query
          required: false
          schema:
            type: string
          description: Application key for authentication
      responses:
        '200':
          description: Successful response with live bus departures
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusLiveDeparturesResponse'
        '401':
          description: Unauthorized - invalid credentials
        '404':
          description: Bus stop not found
  /bus/stop/{atcocode}/timetable.json:
    get:
      operationId: getBusStopTimetable
      summary: Get Bus Stop Timetable
      description: >-
        Returns scheduled timetable for buses at a specific stop.
      tags:
        - Bus Information
      parameters:
        - name: atcocode
          in: path
          required: true
          schema:
            type: string
          description: The ATCO code of the bus stop
        - name: date
          in: query
          required: false
          schema:
            type: string
            format: date
          description: Date for timetable (YYYY-MM-DD, defaults to today)
        - name: app_id
          in: query
          required: false
          schema:
            type: string
        - name: app_key
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response with bus timetable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusTimetableResponse'
        '401':
          description: Unauthorized - invalid credentials
  /bus/route/{operator}/{line}/{direction}/{atcocode}/{date}/timetable.json:
    get:
      operationId: getBusRouteTimetable
      summary: Get Bus Route Timetable
      description: >-
        Returns the complete timetable for a specific bus route, including
        all stops and scheduled times.
      tags:
        - Bus Information
      parameters:
        - name: operator
          in: path
          required: true
          schema:
            type: string
          description: Bus operator code
        - name: line
          in: path
          required: true
          schema:
            type: string
          description: Bus line/route number
        - name: direction
          in: path
          required: true
          schema:
            type: string
            enum: [inbound, outbound]
          description: Direction of travel
        - name: atcocode
          in: path
          required: true
          schema:
            type: string
          description: Starting stop ATCO code
        - name: date
          in: path
          required: true
          schema:
            type: string
            format: date
          description: Date for timetable (YYYY-MM-DD)
        - name: app_id
          in: query
          required: false
          schema:
            type: string
        - name: app_key
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response with route timetable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusRouteTimetableResponse'
  /train/station/{station_code}/live.json:
    get:
      operationId: getTrainStationLiveDepartures
      summary: Get Train Station Live Departures
      description: >-
        Returns real-time departure and arrival information for trains at a
        specific station, including live status and calling points.
      tags:
        - Rail Information
      parameters:
        - name: station_code
          in: path
          required: true
          schema:
            type: string
          description: The CRS (Computer Reservation System) station code
        - name: train_status
          in: query
          required: false
          schema:
            type: string
            enum: ['passenger', 'all']
            default: 'passenger'
          description: Filter by train status
        - name: type
          in: query
          required: false
          schema:
            type: string
            enum: ['arrival', 'departure', 'pass']
            default: 'departure'
          description: Type of trains to include
        - name: app_id
          in: query
          required: false
          schema:
            type: string
        - name: app_key
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response with live train departures
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainLiveDeparturesResponse'
        '401':
          description: Unauthorized - invalid credentials
        '404':
          description: Station not found
  /train/station/{station_code}/{date}/{time}/timetable.json:
    get:
      operationId: getTrainStationTimetable
      summary: Get Train Station Timetable
      description: >-
        Returns scheduled timetable for trains at a specific station on a
        given date and time.
      tags:
        - Rail Information
      parameters:
        - name: station_code
          in: path
          required: true
          schema:
            type: string
          description: The CRS station code
        - name: date
          in: path
          required: true
          schema:
            type: string
            format: date
          description: Date for timetable (YYYY-MM-DD)
        - name: time
          in: path
          required: true
          schema:
            type: string
          description: Time in HH:MM format
        - name: app_id
          in: query
          required: false
          schema:
            type: string
        - name: app_key
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response with train timetable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainTimetableResponse'
  /places.json:
    get:
      operationId: searchPlaces
      summary: Search Transport Places
      description: >-
        Finds bus stops, train stations, and other transport access points
        by name or geographic coordinates across Great Britain.
      tags:
        - Places
      parameters:
        - name: query
          in: query
          required: false
          schema:
            type: string
          description: Text search query for place name
        - name: lat
          in: query
          required: false
          schema:
            type: number
            format: float
          description: Latitude for proximity search
        - name: lon
          in: query
          required: false
          schema:
            type: number
            format: float
          description: Longitude for proximity search
        - name: type
          in: query
          required: false
          schema:
            type: string
            enum: [bus_stop, train_station, tram_stop, ferry_terminal, airport]
          description: Filter by place type
        - name: radius
          in: query
          required: false
          schema:
            type: integer
            default: 1000
          description: Search radius in meters
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 10
          description: Maximum results to return
        - name: app_id
          in: query
          required: false
          schema:
            type: string
        - name: app_key
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response with matching places
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlacesResponse'
        '401':
          description: Unauthorized - invalid credentials
  /journey/from/{from_coords}/to/{to_coords}.json:
    get:
      operationId: planJourney
      summary: Plan Journey
      description: >-
        Plans a multimodal journey from origin to destination across Great
        Britain, supporting bus, train, metro, coach, tram, light rail, cycle,
        car, ferry, and taxi modes.
      tags:
        - Journey Planner
      parameters:
        - name: from_coords
          in: path
          required: true
          schema:
            type: string
          description: Origin coordinates as lat,lon or ATCO/CRS code
        - name: to_coords
          in: path
          required: true
          schema:
            type: string
          description: Destination coordinates as lat,lon or ATCO/CRS code
        - name: service
          in: query
          required: false
          schema:
            type: string
          description: Journey planning service/engine to use
        - name: modes
          in: query
          required: false
          schema:
            type: string
          description: Comma-separated transport modes to include
        - name: date
          in: query
          required: false
          schema:
            type: string
            format: date
          description: Journey date (YYYY-MM-DD)
        - name: time
          in: query
          required: false
          schema:
            type: string
          description: Journey time (HH:MM)
        - name: time_is
          in: query
          required: false
          schema:
            type: string
            enum: [Departing, Arriving]
            default: Departing
          description: Whether time is departure or arrival
        - name: app_id
          in: query
          required: false
          schema:
            type: string
        - name: app_key
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response with journey options
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JourneyResponse'
        '401':
          description: Unauthorized - invalid credentials
components:
  securitySchemes:
    AppIdAuth:
      type: apiKey
      in: header
      name: X-App-Id
      description: Application ID header
    AppKeyAuth:
      type: apiKey
      in: header
      name: X-App-Key
      description: Application key header
  schemas:
    BusLiveDeparturesResponse:
      type: object
      properties:
        atcocode:
          type: string
        bearing:
          type: string
        stop_name:
          type: string
        request_time:
          type: string
          format: date-time
        departures:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/BusDeparture'
    BusDeparture:
      type: object
      properties:
        mode:
          type: string
        line:
          type: string
        line_name:
          type: string
        direction:
          type: string
        operator:
          type: string
        operator_name:
          type: string
        date:
          type: string
        expected_departure_date:
          type: string
        aimed_departure_time:
          type: string
        expected_departure_time:
          type: string
        status:
          type: object
          properties:
            live:
              type: boolean
            delay:
              type: string
    BusTimetableResponse:
      type: object
      properties:
        atcocode:
          type: string
        stop_name:
          type: string
        request_time:
          type: string
          format: date-time
        departures:
          type: array
          items:
            $ref: '#/components/schemas/BusDeparture'
    BusRouteTimetableResponse:
      type: object
      properties:
        operator:
          type: string
        line:
          type: string
        direction:
          type: string
        stops:
          type: array
          items:
            $ref: '#/components/schemas/TimetableStop'
    TimetableStop:
      type: object
      properties:
        atcocode:
          type: string
        name:
          type: string
        times:
          type: array
          items:
            type: string
    TrainLiveDeparturesResponse:
      type: object
      properties:
        station_code:
          type: string
        station_name:
          type: string
        request_time:
          type: string
          format: date-time
        departures:
          type: object
          properties:
            all:
              type: array
              items:
                $ref: '#/components/schemas/TrainDeparture'
    TrainDeparture:
      type: object
      properties:
        mode:
          type: string
        service:
          type: string
        train_uid:
          type: string
        platform:
          type: string
        operator:
          type: string
        operator_name:
          type: string
        aimed_departure_time:
          type: string
        expected_departure_time:
          type: string
        best_departure_estimate_mins:
          type: integer
        status:
          type: string
        origin_name:
          type: string
        destination_name:
          type: string
        stops:
          type: array
          items:
            $ref: '#/components/schemas/CallingPoint'
    CallingPoint:
      type: object
      properties:
        station_code:
          type: string
        station_name:
          type: string
        aimed_departure_time:
          type: string
        expected_departure_time:
          type: string
    TrainTimetableResponse:
      type: object
      properties:
        station_code:
          type: string
        request_time:
          type: string
          format: date-time
        departures:
          type: array
          items:
            $ref: '#/components/schemas/TrainDeparture'
    PlacesResponse:
      type: object
      properties:
        request_time:
          type: string
          format: date-time
        member:
          type: array
          items:
            $ref: '#/components/schemas/Place'
    Place:
      type: object
      properties:
        type:
          type: string
        name:
          type: string
        latitude:
          type: number
          format: float
        longitude:
          type: number
          format: float
        atcocode:
          type: string
        station_code:
          type: string
        description:
          type: string
        distance:
          type: number
    JourneyResponse:
      type: object
      properties:
        request_time:
          type: string
          format: date-time
        source:
          type: string
        acknowledgements:
          type: string
        routes:
          type: array
          items:
            $ref: '#/components/schemas/JourneyRoute'
    JourneyRoute:
      type: object
      properties:
        duration:
          type: integer
          description: Journey duration in seconds
        departure_datetime:
          type: string
          format: date-time
        arrival_datetime:
          type: string
          format: date-time
        route_parts:
          type: array
          items:
            $ref: '#/components/schemas/RoutePart'
    RoutePart:
      type: object
      properties:
        mode:
          type: string
        from_point_name:
          type: string
        to_point_name:
          type: string
        departure_datetime:
          type: string
          format: date-time
        arrival_datetime:
          type: string
          format: date-time
        line_name:
          type: string
        operator_name:
          type: string
        coordinates:
          type: array
          items:
            type: array
            items:
              type: number