Proposal:Public transport schedules

From OpenStreetMap Wiki
Jump to navigation Jump to search


Image of an arrival times timetable at a bus stop.
Bus stops and railway stations often include signs like this to indicate arrival times. A single relation would be created to represent this paper.

Public transport data in OpenStreetMap is improving rapidly. People all over the world are mapping local bus lines, ferries, railways, etc. Some do this manually, while others import General Transit Feed Specification data. Unfortunately, adding timetables, one of the most important aspects of such data, is not possible.

Timetable data, or schedule data, is the last crucial feature yet to be approved for making public transport data in OpenStreetMap useful to riders. Almost every other specification (including adding separate relations for different variations of public transport routes and opening hours) has already been approved. So why not schedule data?

Schedule data in OpenStreetMap would allow for applications such as OsmAnd and to create public transport based routing services that would be useful to users. People could use OpenStreetMap instead of individual operators' maps when navigating new places. Services similar to Google transit could be created, all using OpenStreetMap.

Unfortunately, many mappers in the OpenStreetMap community consider any method of adding schedule data to public transport features to be too complicated. They believe it to be messy and impossible to maintain.

These are valid concerns, which are all considered are mediated to the maximum extent possible in this proposal. Overcoming complexity is easy. Overcoming the issue of maintainability is much more difficult.


This proposes adding three new features to OSM:

  • An interval=* tag for marking the frequency of a public transport feature
  • A new type of relation that would represent the arrival times at a single bus stop for a single route relation
  • A system for marking the departure times and duration of a ferry route

First proposed feature (approved):

Main article: Proposed features/Public transport schedules/IntervalThe tag interval=* can be added to the route relation or ferry route way to state the frequency (how often) buses / trains / ferries operate.

Second proposed feature (rejected)

Main article: Proposed features/Public transport schedules/DeparturesThe new tag departures=* for listing the departure times from the first stop of a route. This tag should be used on any public transport route (but not on stops/platforms).

Third proposed feature (abandoned)

Main article: Proposed features/Public transport schedules/Timetable relations

This method is overly complicated, and would likely cause more harm than good, so it is has now been abandoned.

A new type of relation, tagged with type=public_transport and public_transport=timetable can be used to indicate the arrival times of a certain bus route or train route at a certain platform.

Each public transport platform or stop position can have one timetable relation for each public transport route that serves the platform or stop position.

Tags to add to a public_transport=timetable relation
Tag Description Example
type=public_transport To indicate that this relation has something to do with public transport. type=public_transport
public_transport=timetable To indicate that this public transport relation is a timetable relation public_transport=timetable
departures=* To indicate the times at which trains, trams, buses, etc. arrive at this station. departures=Mo-Fr 08:40, 09:40, 10:40, 11:40, 12:40, 13:40, 14:40, 15:40, 16:40, 17:10, 17:40, 18:10, 18:40, 19:40, 20:40;Sa 08:50, 11:50, 13:50, 15:50, 17:50
Members of a public_transport=timetable relation.
Role What object?
route The public transport route that this timetable applies to. Only one single route should be included as part of a timetable relation.
stop The platform or stop position that this timetable applies to. Only one single platform or stop position should be included as part of a timetable relation.


1) The bus stop in the image above: A new timetable relation is created with the following tags: type=public_transport, public_transport=timetable, and departures=Mo-Fr 10:45, 11:45, 12:45, 13:45, 14:45. The bus stop, or platform, is included in this new relation with the role "stop". The bus route is included with the role "route".


This method would not modify existing public transport features in any way or form.


This proposal adds 3 new keys:

  • departures=*: Used for describing when departures happen for the public transport route of interest at the stop/station of interest when used on timetable relations.
  • interval=* for describing the time between arrivals at every stop of a public transport route. This key, although not approved, is widely in use in the exact same way as is proposed in this proposal. On ferry routes, this will indicate the time between departures as an alternative to full timetables.
  • schedule_type=* Possibly used on ferry ways.


Please use the talk page. Any comments for improving the proposal would be highly appreciated! The goal is to create a system that will serve everyone's needs.