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.
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.
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 /routesfilters complete itineraries between an origin and a destination.GET /nextDeparturesfilters departures near a coordinate or at a specified stop.
| Value | Filtering rule |
|---|---|
0 | No accessibility filter. This remains the default. |
1 | Require accessible stops and accessible trips. |
2 | Require accessible stops; do not filter by trip accessibility. |
3 | Require 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.
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.