Wheelchair-Accessible Public Transport Routing Is Now in BusMaps

The fastest public transport route is not useful when a passenger cannot enter a station or board the scheduled vehicle. BusMaps can now use the accessibility data published in GTFS to filter route searches, show accessible stops and trips, and expose the same information through the BusMaps Public Transit API.

We built this after seeing a repeated need from people using trip planners and from teams integrating public transport data. A journey planner may know that a train leaves in eight minutes, yet still fail to answer the first practical question for a wheelchair user: can I make this trip? The answer depends on two separate facts. The stop must provide an accessible boarding path, and the vehicle assigned to the trip must be able to carry a wheelchair.

A new option in the BusMaps Trip Planner

The BusMaps Trip Planner now includes Wheelchair accessible under Route options. It is a route choice alongside Best route and Fewer transfers. Selecting it runs the public transport search with the strict accessibility mode: both the boarding stops and the scheduled trips must be marked accessible.

BusMaps mobile Route options with Wheelchair accessible selected
Wheelchair-accessible routing is selected from the same Route options dialog used for other journey preferences.

The example below travels from London Paddington to Farringdon on the Elizabeth line. In the routing response, London Paddington and Farringdon both have wheelchairBoarding: 1, and the selected Elizabeth line trip has wheelchairAccessible: 1. The itinerary takes 10 minutes and includes 125 m of walking in total.

This is a useful test case because the accessibility record is consistent with Transport for London guidance: all Elizabeth line stations are step-free from street to platform, while stations between Paddington and Woolwich are step-free from street to train. The Trip Planner marks the accessible boarding point in the detailed itinerary.

BusMaps desktop itinerary from Paddington to Farringdon with a wheelchair accessibility marker
A wheelchair marker appears beside the boarding details for the accessible London Paddington stop. The route uses an accessible Elizabeth line trip.

What changed in the BusMaps Public Transit API

The BusMaps Public Transit API used by the website and external integrations now supports accessible journey planning. Two methods accept barrierMode:

  • GET /routes filters complete itineraries between an origin and a destination.
  • GET /nextDepartures filters departures near a coordinate or at a specified stop.
Value Filtering rule
0No accessibility filter. This remains the default.
1Require accessible stops and accessible trips.
2Require accessible stops; do not filter by trip accessibility.
3Require accessible trips; do not filter by stop accessibility.

The website uses mode 1 because it is the only value that checks both parts of the journey. Modes 2 and 3 are available to API clients that have another source for the missing half, or that need to inspect data coverage independently.

curl -H "capi-key: Bearer YOUR_API_KEY" \
  -H "capi-host: busmaps.com" \
  "https://capi.busmaps.com:8443/routes?origin=51.5154,-0.1755&destination=51.5202,-0.1053&barrierMode=1&lang=en"

Accessibility is also present in Public Transit API responses. Stop objects use wheelchairBoarding. Transit sections and scheduled trips use wheelchairAccessible. The /stopsInRadius, /trip, and /line responses expose these values so an application can show the information even when it is not running a filtered route search. In /line, each stop may contain wheelchairBoarding, while each compact schedule trip may contain wheelchairAccessible beside its trip ID and stop-time list.

{
  "departure": {
    "place": {
      "name": "London Paddington",
      "wheelchairBoarding": 1
    }
  },
  "transport": {
    "name": "Elizabeth line",
    "wheelchairAccessible": 1
  },
  "arrival": {
    "place": {
      "name": "Farringdon",
      "wheelchairBoarding": 1
    }
  }
}

Wheelchair-accessible routing for AI assistants

The same accessibility features are available through the BusMaps Transit MCP Server. Claude, ChatGPT, Gemini, Cursor, and other MCP clients can use plan_transit_route and get_departures with barrierMode. This gives an AI assistant a direct way to find accessible journeys and departures while preserving the stop and trip accessibility information returned by the Public Transit API.

Connect an MCP client to https://mcp.busmaps.com/mcp, then ask, for example:

  • Plan a wheelchair-accessible public transport route from London Paddington to Farringdon.
  • Show wheelchair-accessible departures near Manchester Piccadilly.

The server exposes 23 read-only transit tools with discoverable schemas. An assistant can therefore identify the available parameters and call the appropriate BusMaps tool without requiring the user to translate a journey question into an API request.

What the GTFS values mean

The fields come from the open GTFS Schedule specification. In stops.txt, wheelchair_boarding describes whether boarding is possible at a stop, platform, station, or entrance. In trips.txt, wheelchair_accessible describes whether the vehicle used for a particular scheduled trip can accommodate at least one rider in a wheelchair. The official GTFS accessibility guide stresses that both the stop and the trip must be accessible for a passenger to use the service.

Both fields use the same numeric convention: 1 means accessible, 2 means not accessible, and 0 or an empty field means no information. Unknown does not mean inaccessible. BusMaps keeps that distinction in the API and omits unknown accessibility fields from compact responses rather than presenting uncertainty as a negative result.

Accessibility coverage in the latest BusMaps data

The latest BusMaps accessibility analysis covers 4,000 of the 7,000+ feeds processed by BusMaps - 4.7 million unique boarding points and 29 million trip records. Accessibility information is considered known when a publisher explicitly marks a boarding point or trip as accessible or not accessible. Missing values remain unknown. All figures in this section are rounded.

1,000 feeds 26% publish at least one known accessibility value
530,000 unique boarding points 11% of unique boarding points have known wheelchair boarding information
7.4 million trips 25% have known wheelchair vehicle information
440 feeds 11% of feeds publish both boarding-point and trip accessibility

Of the unique boarding points with a known value, 350,000 are marked accessible and 180,000 are marked not accessible. For trips, 6.4 million are marked accessible and 1 million are marked not accessible. These figures describe data publication, not the share of a country's physical network that is accessible.

Wheelchair accessibility data by region

North America has the most balanced regional coverage, with known values for 27% of boarding points and 43% of trips. Europe and Asia have broader trip coverage than boarding-point coverage. Oceania shows the largest gap: trip accessibility is available for 66% of records, while boarding information is available for only 3%. This makes stop-level publishing the main opportunity for improving accessible journey planning in the region.

Region Boarding-point coverage Trip coverage
North America 27% 43%
Europe 9% 24%
Asia 7% 19%
Oceania 3% 66%
South America 1% 10%
Africa 1% 1%

Accessibility coverage by country

Wheelchair accessibility data coverage varies significantly between countries. The table combines countries with large published accessibility datasets and countries where boarding-point and trip coverage differ sharply. Countries are ordered by their lower coverage percentage, from highest to lowest, because reliable accessible journey planning depends on information about both the boarding point and the scheduled vehicle.

Country Unique boarding points with known value Trips with known value
Thailand 17,000 / 19,000 (88%) 4,200 / 4,700 (90%)
Canada 65,000 / 129,000 (51%) 494,000 / 774,000 (64%)
France 140,000 / 327,000 (43%) 1.1 million / 2.2 million (50%)
United States 170,000 / 665,000 (26%) 768,000 / 2.2 million (36%)
Czech Republic 15,000 / 88,000 (18%) 503,000 / 637,000 (79%)
Hungary 6,700 / 48,000 (14%) 239,000 / 334,000 (72%)
Spain 13,000 / 122,000 (11%) 298,000 / 973,000 (31%)
Finland 5,600 / 66,000 (8%) 397,000 / 469,000 (85%)
Poland 7,100 / 87,000 (8%) 654,000 / 1 million (65%)
Netherlands 23,000 / 52,000 (45%) 25,000 / 407,000 (6%)
Indonesia 7,700 / 8,500 (90%) 40 / 770 (5%)
Italy 8,600 / 177,000 (5%) 38,000 / 527,000 (7%)
Australia 2,800 / 171,000 (2%) 410,000 / 567,000 (72%)
United Kingdom 4,200 / 485,000 (below 1%) 382,000 / 3.1 million (13%)
Singapore 4,500 / 5,400 (82%) 1,600 / 199,000 (1%)
Germany 2,400 / 795,000 (below 1%) 1.4 million / 7.2 million (19%)
  • France and Canada publish substantial coverage for both sides of an accessible journey: boarding points and scheduled trips.
  • The Czech Republic, Finland, Australia, Poland, and Hungary have much stronger trip coverage than boarding-point coverage.
  • The Netherlands, Indonesia, and Singapore show the opposite pattern: boarding information is much more complete than trip information.
  • Thailand has high coverage for both fields, although its published dataset is smaller than the national datasets at the top of the table.
  • Germany and the United Kingdom contain large transit datasets, but known boarding-point values remain below 1%.

GTFS feeds with complete wheelchair accessibility data

A quality-only comparison produces a large tie at the top: 230 feeds provide known accessibility values for 100% of both boarding points and trips. Another 50 feeds cover at least 90% of both fields. The table shows examples from the complete-coverage group. Feed size does not affect qualification. Counts are rounded, and each dataset name links to its current feed page.

Dataset Country Agencies in feed Boarding-point coverage Trip coverage
Warsaw Public Transport Poland Warsaw Public Transport 100% (6,800 / 6,800) 100% (277,000 / 277,000)
STM Montreal Canada STM 100% (8,900 / 8,900) 100% (142,000 / 142,000)
TTC schedules Canada Toronto Transit Commission 100% (9,300 / 9,300) 100% (132,000 / 132,000)
CTA Chicago United States Chicago Transit Authority 100% (10,800 / 10,800) 100% (82,000 / 82,000)
STAR transitfeeds France STAR 100% (1,500 / 1,500) 100% (57,000 / 57,000)
TriMet United States TriMet, Portland Streetcar, and Portland Aerial Tram 100% (6,400 / 6,400) 100% (42,000 / 42,000)
Metro Transit United States Metro Transit and regional partners 100% (8,400 / 8,400) 100% (35,000 / 35,000)
Miami-Dade Transit United States Miami-Dade Transit 100% (6,900 / 6,900) 100% (24,000 / 24,000)
MiWay Canada MiWay 100% (3,100 / 3,100) 100% (25,000 / 25,000)
Niagara Region Canada Niagara Region Transit 100% (1,900 / 1,900) 100% (17,000 / 17,000)
RTL Longueuil Canada RTL 100% (3,100 / 3,100) 100% (13,000 / 13,000)
York Region Transit Canada York Region Transit 100% (4,200 / 4,200) 100% (12,000 / 12,000)
Grand River Transit Canada Grand River Transit 100% (2,400 / 2,400) 100% (12,000 / 12,000)
Capital District Transportation Authority United States CDTA 100% (2,600 / 2,600) 100% (6,800 / 6,800)
Bilbobus Spain Bilbobus 100% (530 / 530) 100% (19,000 / 19,000)
Alghero Airport summer schedule Italy Alghero Airport operators 100% (24 / 24) 100% (269 / 269)
Alghero Airport winter schedule Italy Alghero Airport operators 100% (11 / 11) 100% (79 / 79)
Aiken Senior Life Services United States Aiken Senior Life Services 100% (25 / 25) 100% (6 / 6)
American Samoa public works United States American Samoa Government Department of Public Works 100% (2 / 2) 100% (56 / 56)
Annapolis Transit United States Annapolis Transit 100% (166 / 166) 100% (331 / 331)
Quebec ferry services Canada Societe des traversiers du Quebec 100% (21 / 21) 100% (2,800 / 2,800)
Santa Ynez Valley Transit United States Santa Ynez Valley Transit 100% (35 / 35) 100% (71 / 71)
Appaloosa Express Transit United States Appaloosa Express Transit 100% (23 / 23) 100% (6 / 6)
Aquabus Canada Aquabus 100% (8 / 8) 100% (8 / 8)
Mountain Express Transit United States Mountain Express Transit 100% (26 / 26) 100% (10 / 10)
Avon Transit United States Avon Transit 100% (27 / 27) 100% (155 / 155)
Azalys Blois France Azalys 100% (259 / 259) 100% (890 / 890)
Azienda Varesina Trasporti Italy Azienda Varesina Trasporti 100% (2 / 2) 100% (308 / 308)
Battle Creek Transit United States Battle Creek Transit 100% (369 / 369) 100% (87 / 87)
Beelinebus Public Transit United States Beelinebus Public Transit 100% (93 / 93) 100% (23 / 23)

Credit belongs to the publishers

A routing engine can only use accessibility facts that reach the feed. The strongest examples in this data come from agencies and data publishers that maintain both the stop and trip fields. Warsaw Public Transport, STM Montreal, TTC, CTA Chicago, STAR, TriMet, Metro Transit, and Miami-Dade Transit provide known values for every boarding point and trip record in their feeds. MiWay, Niagara Region Transit, RTL, York Region Transit, Grand River Transit, CDTA, and Bilbobus do the same.

We thank these operators and data publishers for treating accessibility information as part of the core passenger service. Their work allows journey planners, accessibility applications, and passengers to make decisions using explicit data instead of assumptions.

Publishing an explicit 2 is also useful. It prevents an application from offering a trip that the operator knows cannot accommodate a wheelchair. Leaving the field empty communicates a different fact: the publisher has not supplied an answer. Accurate negative values and accurate positive values are both better than silence.

GTFS can describe more than these two fields. Station entrances, parent stations, platforms, pathways.txt, and elevator levels can model how a passenger moves through a complex station. The current BusMaps filter uses the stop and trip accessibility values carried by the routing data. It does not certify every pavement, crossing, elevator, temporary closure, or platform gap on the journey. Passengers should still check live operator guidance where a lift outage or other disruption could change access at short notice.

For agencies and application developers

Agencies can improve accessible journey planning without creating a new proprietary format. Add and maintain wheelchair_boarding in stops.txt and wheelchair_accessible in trips.txt, use 0 only when the status is genuinely unknown, and republish the feed when vehicles or station access change. BusMaps will carry those fields through its feed pages, API responses, departure boards, route timetables, and filtered journey search.

Application developers can start with barrierMode=1 for strict filtering, then display the returned fields beside the relevant stop and transit leg. Read the complete Public Transit API documentation for authentication, time handling, response schemas, and tested request examples. To discuss data integration or a Public Transit API account, use the BusMaps contact form.