Better transit data for the journeys people depend on
A valid GTFS file can still contain duplicate stops, confusing route names or schedules that contradict themselves. Those problems become missed connections, misleading maps and extra integration work for the applications that use the data. BusMaps processes 7,000+ feeds from transit operators worldwide, combining automated corrections with maintained reference data and targeted improvements for individual sources. The aim is consistent, usable information for journey planning, departure boards and analysis. Transit data changes along with the networks it describes. Operators introduce new routes, change their scheduling software and publish corrections. We maintain our processing rules alongside those changes, investigate recurring problems and reprocess data through regular update cycles. Improvements become part of the service rather than a repair that each customer has to repeat in their own application. The examples on this page illustrate some of the results of our in-house processing. The broader methodology, including additional checks and provider-specific decisions, is developed and maintained as part of the BusMaps service. It draws on years of work with real transit datasets across different countries and operators. Quality work continues with every update
Selected examples from years of development
Beyond checking whether a file is valid
Format validation matters, but it cannot answer every question about how a network should appear or behave. A route can pass a structural check and still carry an unhelpful name. A stop can have valid coordinates while its station information is incomplete. Overlapping sources can each be valid while presenting the same service more than once.
We address these issues across 10,000+ transit agencies in 90+ countries. The applicable corrections depend on the source, the available reference data and the problem identified. Some records can be enriched; others must be excluded when they cannot support a usable journey. A corrected dataset still reflects the coverage and limitations of the information available to us.
What better data looks like
The examples below show how we turn inconsistent source records into information that is easier to integrate and use. They illustrate selected outcomes of our processing; the full set of checks adapts to each provider and the data available. Our approach brings naming, schedules and network geography into a more coherent dataset, reducing repeated cleanup work in customer applications.
Clearer names and service information
Passenger-facing information should be readable and consistent enough to use in search, route lists and departure boards without another round of cleanup in your application.
Readable stop and route names
Inconsistent casing, stray formatting and repeated text can make the same network look different from one screen to the next. We clean display names and apply maintained corrections where needed, giving developers more useful labels for search results, maps and stop lists.
Useful route labels
Route numbers, destination descriptions and repeated labels often arrive in inconsistent fields. We improve the distinction between a route's short and long names and remove redundant wording. This makes route selectors and departure boards easier to read while retaining useful service information.
More complete destination information
A missing destination label makes it harder to distinguish services travelling in different directions. Where the schedule provides enough information, we fill gaps in trip headsigns so applications can display a destination alongside the route name. This improves presentation without requiring a separate lookup.
Consistent transport types
Providers do not always use transport classifications consistently. We normalise supported route types and apply maintained corrections to known errors in route and operator information. Applications can use the resulting classifications for mode filters and map symbols without maintaining the same source-specific fixes.
Legible route colours
Broken colour values and missing text colours can make route badges difficult to read. We validate these fields and improve text contrast where the supplied data is incomplete. The result is easier to present in route lists and timetables while retaining usable operator colours.
Consistent identities across updates
Source identifiers can change between releases even when a stop or service is unchanged. We provide consistent identities for processed records, helping applications connect updates to existing information. Customers can maintain links to stops, routes and scheduled services with less dependence on a provider's internal numbering.
More consistent schedules and connections
Timetable errors are especially costly because plausible-looking records can still describe an unusable journey. Our processing checks relationships as well as individual values.
Cleaner service calendars
Redundant calendars, conflicting exceptions and obsolete service records make it harder to determine which journeys run on a given day. We check calendar consistency and consolidate redundant records, producing a more coherent basis for timetable queries and date-specific journey planning across the available service period.
Checks for unusable trip times
Missing endpoint times, reversed time sequences and implausible travel times need different treatment. We validate these cases and apply the relevant correction or exclusion rules. Problems that exceed those rules are reported for investigation, helping us avoid silently treating a widespread source problem as normal service.
Overnight services kept in context
A journey after midnight must remain associated with the right service day. We normalise overnight timetable representations while preserving scheduled departure times. This supports consistent date-based queries for late services and reduces the risk of presenting a journey under the wrong day in a downstream application.
Fewer duplicate services
Repeated trips and overlapping source records can inflate departure lists or network statistics. We identify and consolidate duplicate service information so applications can work with a cleaner representation of the network. Distinguishing duplication from separate journeys is part of the processing maintained for each dataset.
Checks on vehicle continuity
Incorrect links between journeys can suggest that a passenger may remain on the same vehicle when the schedules conflict. We check these associations and clear confirmed conflicts where appropriate. The scheduled journeys remain available without the invalid link implying a connection that the data cannot support.
Consistent timezones and references
Invalid timezones and references to missing stops or routes can disrupt otherwise usable schedules. We validate these relationships and remove unsupported transfer records. This reduces broken links in the dataset and gives applications a more consistent foundation for interpreting local departure times and connections.
Better stops and network maps
Maps need more than a set of points. Stop records, station relationships and route geometry should describe a network that people can recognise and navigate.
Improved stop information
Where suitable reference data is available, we supplement missing stop information and apply reviewed corrections to names and coordinates. This can recover useful detail that a scheduling export omitted and improve how stops appear in search and on a map, without asking each customer to maintain those corrections.
More complete station information
Platforms, parent stations and entrances are often described unevenly across providers. We enrich station relationships and access points from maintained records where coverage allows. Applications receive more context for complex interchanges, helping passengers distinguish a station from its individual boarding locations and find the available access points.
Fewer duplicate stops
Multiple records for the same physical stop can clutter a map and fragment departure information. We consolidate duplicate stop records while accounting for their role in the network. This gives applications a more coherent view of boarding locations, including areas covered by overlapping operators and data sources.
Accessibility information kept meaningful
Missing accessibility information should remain distinguishable from an explicit restriction. We normalise supported accessibility fields and improve consistency within station hierarchies where source information permits. These fields help applications present the available evidence, while the completeness of accessibility coverage still depends on the underlying providers and reference datasets.
Route geometry checked against the service
A route line can be misleading even when its coordinates are valid. We check supplied geometry for inconsistencies with the journey it describes and remove invalid associations. For supported road services without geometry, we can generate a route shape when a suitable result can be validated.
Data prepared for maps and analysis
We reduce unnecessary geometry detail and enrich geographic context to make processed data more useful in downstream products. City associations and route-at-stop information support geographic filtering, network exploration and exports. Customers can work with the resulting data without building those supporting relationships from the raw feed each time.
Real-time information connected to the schedule
A live vehicle position is useful only when it can be interpreted in the context of the right service. Providers may use different identifiers in their schedules and real-time feeds, and their update frequency and coverage vary. Our real-time processing connects supported live information with the static network so applications can use vehicle positions and arrival updates together.
- Geographic plausibility checks help keep clearly misplaced vehicle positions from appearing as local services.
- Provider-specific matching handles differences between published schedules and live identifiers. Unresolved signals can remain unmatched.
- Arrival estimates support departure information where suitable live data is available. Coverage and freshness remain dependent on the provider.
Local knowledge where the data needs it
A shared format does not make every country's data alike. Local naming conventions, station models and operator practices need context. Alongside common processing, we maintain targeted rules for particular providers and regions. These complement the general checks and address issues that a uniform correction would miss.
The data behind BusMaps
The same processed data powers route searches, departure boards and API responses on BusMaps. You can explore the available coverage on the website, connect through our API or request corrected datasets for your own infrastructure. We discuss the required region, formats and update arrangements before agreeing a delivery.
Use improved transit data in your project
Request corrected GTFS, GeoJSON or a custom export, or discuss API access for your application. Tell us the region and the information your product needs.