TransCAPI Journey API
The Journey API from TransCAPI — 3 operation(s) for journey.
The Journey API from TransCAPI — 3 operation(s) for journey.
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-journey-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 Journey API
version: 1.0.0
servers:
- description: Production
url: https://api.transcapi.com
security:
- ApiKeyHeader: []
- ApiKeyQuery: []
tags:
- name: Journey
paths:
/v1/journey.json:
get:
description: 'Returns transit itineraries between two coordinates, with per-leg fare estimates and live vehicle positions where available, plus optional walking and cycling alternatives. Covers England, Scotland and Wales (bus, coach, rail, Underground, metro, tram, ferry) up to two months ahead, and the island of Ireland (Translink in Northern Ireland, every NTA-listed operator in the Republic, Luas and Irish Rail) as a separate area: a journey between Great Britain and Ireland returns 422 outside_coverage, as does the Isle of Man. Bus, tram and metro legs follow the operator''s route where published (leg_geometry_source). Walking legs carry terrain (climb, descent, steepest gradient, shape and estimated calories, from OS Terrain 50) and each itinerary a walking summary. Every leg and itinerary carries carbon: grams of CO2e from the UK government''s 2026 conversion factors, with driving alone the same distance for comparison. Itineraries with changes carry connections: the time to spare at each and the chance of making it, from how the buses involved have run on recent days.'
parameters:
- in: query
name: from_lat
required: true
schema:
type: number
- in: query
name: from_lon
required: true
schema:
type: number
- in: query
name: to_lat
required: true
schema:
type: number
- in: query
name: to_lon
required: true
schema:
type: number
- description: ISO8601 datetime for departure (or arrival if arrive_by=true). Defaults to now.
in: query
name: datetime
schema:
type: string
- in: query
name: arrive_by
schema:
default: false
type: boolean
- description: 'Comma-separated non-transit alternatives to compute alongside the transit result - any of `walk`, `bicycle`, `car`. Pass an empty value to skip them. Transit is always returned. `car` is off by default and returns a single driving itinerary for comparison against transit; like the other alternatives it is subject to the same coverage area, since driving needs the same street network.
'
in: query
name: modes
schema:
default: walk,bicycle
type: string
- description: 'Comma-separated optional transit sub-modes - any of `tram`, `rail`. Bus and coach are always included. Pass an empty value to search bus and coach only.
'
in: query
name: transit_modes
schema:
default: tram,rail
type: string
- description: 'Price rail legs with a railcard (code from /v1/rail/railcards.json, e.g. YNG for the 16-25 Railcard).
'
in: query
name: railcard
schema:
type: string
- in: query
name: include_fares
schema:
default: true
type: boolean
- in: query
name: include_live
schema:
default: true
type: boolean
- description: Include every stop called at on each transit leg.
in: query
name: include_intermediate_stops
schema:
default: false
type: boolean
- description: 'Maximum length in metres of any single walking leg. Itineraries with a longer walk are excluded. Does not apply to the direct walking alternative.
'
in: query
name: max_walk_distance
schema:
type: integer
- description: 'Maximum total metres walked across the whole journey, summed over every walking leg. Does not apply to the direct walking alternative.
'
in: query
name: max_total_walk_distance
schema:
type: integer
- description: 'Steepest slope, in percent, allowed on any walking leg, up or down (8.3 is the 1-in-12 ramp standard). Itineraries with a steeper walk are excluded, measured from OS Terrain 50. Walks that couldn''t be measured don''t exclude a journey but leave accessibility.gradient_checked false.
'
in: query
name: max_gradient
schema:
type: number
- description: 'Include turn-by-turn directions on each walking leg - direction, street name, distance and coordinate per step.
'
in: query
name: include_steps
schema:
default: false
type: boolean
- in: query
name: limit
schema:
default: 5
type: integer
responses:
'200':
description: Journey itineraries
'400':
description: 'Invalid parameter, or date_out_of_range - the datetime is outside the timetables loaded (about two months ahead); the message gives the first and last dates that can be planned.
'
'422':
description: Origin or destination lies outside the routing coverage area
summary: Plan a journey between two points
tags:
- Journey
operationId: getV1JourneyJson
x-operation-id-source: derived
/v1/journey/reachable.json:
get:
description: GeoJSON of the area reachable from a point within each cutoff, by bus, coach, tram, metro, Underground, ferry and rail, anywhere in Great Britain or Ireland, leaving at a given time today or tomorrow. Walking to, between and from stops is estimated by straight-line distance with a detour allowance, so edges are good estimates rather than street-exact.
parameters:
- in: query
name: lat
required: true
schema:
type: number
- in: query
name: lon
required: true
schema:
type: number
- description: Comma-separated minutes, up to four, each at most 90.
in: query
name: cutoffs
schema:
default: 15,30,45
type: string
- description: Departure time, ISO 8601, now until the end of tomorrow. Defaults to now.
in: query
name: datetime
schema:
format: date-time
type: string
- description: Longest walk to or from a stop, metres (100-2000).
in: query
name: max_walk
schema:
default: 800
type: integer
responses:
'200':
description: A GeoJSON FeatureCollection
largest first.: null
one feature per cutoff: null
'422':
description: Outside Great Britain and Ireland
'503':
description: The day's data isn't built yet
summary: Area reachable by public transport (isochrones)
tags:
- Journey
operationId: getV1JourneyReachableJson
x-operation-id-source: derived
/v1/journey/travel_times.json:
post:
description: Minutes by public transport (with walking) from one point to up to 500 destinations, anywhere in Great Britain or Ireland, leaving at a given time today or tomorrow. null where a destination can't be reached within max_minutes. Walking is estimated by straight-line distance with a detour allowance. Also accepts GET with `to=lat,lon|lat,lon` (up to 100).
requestBody:
content:
application/json:
schema:
properties:
datetime:
format: date-time
type: string
from:
properties:
lat:
type: number
lon:
type: number
type: object
max_minutes:
default: 90
type: integer
max_walk:
default: 800
type: integer
to:
items:
properties:
id:
type: string
lat:
type: number
lon:
type: number
type: object
type: array
required:
- from
- to
type: object
responses:
'200':
description: One result per destination
in the order given.: null
summary: Travel times from one origin to many destinations
tags:
- Journey
operationId: postV1JourneyTravelTimesJson
x-operation-id-source: derived
components:
securitySchemes:
ApiKeyHeader:
in: header
name: X-Api-Key
type: apiKey
ApiKeyQuery:
in: query
name: api_key
type: apiKey