Saltar a contenido


Flex is a GTFS Schedule extension project that aims to facilitate discoverability of Demand Responsive Transportation Services.

🤔 Services like dial-a-ride are often brushed over by riders, who sometimes have no clue they even exist. This lack of accessibility is an issue for transit agencies, trip planners, and riders. Imagine a group of tourists arriving at your local airport who would like to reach a rural area that only offers an on-demand bus service. The tourists check their preferred trip planner app and do not find a viable public transportation option. They end up renting a car. Being tourists, they miss all of your paper flyers posted along the hallway announcing the on-demand service. Not only is your service underused, but it lacks the discoverability to meet current and future rider demand. This is where GTFS-Flex comes in. GTFS-Flex helps riders discover your service, so they enjoy the services you worked hard to promote.

GTFS-Flex User Journey

🔮 MobilityData expects GTFS-Flex to open the door to deeper standardization of demand responsive transportation, including expansion into transactional and real-time components using GTFS-OnDemand. We are preparing a suggested strategy to best handle the growing number of modes of transportation and complexity of concepts in this area.

See the full proposal

Latest Pull Request

This extension describes services that operate according to a schedule, but also include one or more flexible features, such as:

  • Dial-a-ride service: the vehicle serves a zone where pickups and drop offs are allowed during certain service hours.
  • Route deviation services: the vehicle serves a fixed route and ordered set of stops, and may detour to pick up or drop off a passenger between stops.
  • Point-to-zone service: the rider can board at a fixed stop such as a train station, and then alight anywhere within an area, or vice versa. Departures from some locations are scheduled or timed with other services.
  • Point deviation or checkpoint service: the rider can board at a fixed stop, and then alight anywhere among an unordered list of stops, or the opposite. The driver only serves stops at which a request is made.

For more information please see original proposal and issue#382(closed since we changed the scope).

In the working meeting on June 28th, there was an agreement among the group community to pursue an iteration that covers all fields currently produced and consumed. Therefore, all fields that appear as “in discussion” in the adoption tracker are included in this PR.

The changes in this PR are:

  • Modify file: -- Modify stop_areas.txt to allow grouping of GeoJSON locations and/or stops which allow predetermined groups of these features to be specified on individual rows of stop_times.txt. -- Modify stop_times.txt to clarify elements of the current specification necessary to inform data consumers of how to interpret the added and extended files and fields
  • Extend file: -- Extend stop_times.txt with start_pickup_drop_off_window and end_pickup_drop_off_window to define the time that demand responsive transportation service becomes available/ends in a GeoJSON location, stop area or stop. -- Extend stop_times.txt with pickup_booking_rule_id and drop_off_booking_rule_id to define links to booking rules
  • Add new file: -- locations.geojson, to define zones (Polygon or Multipolygon) where riders can request either pickup or drop off. -- booking_rules.txt, to define the booking rules that provide riders information about how to request service.

Here is a data example for RufBus in Angermünde and Gartzer, Germany. The image below is an example illustrating how the data could be presented in a trip planner:

Visit the Pull Request page to read the full post and contribute to the conversation.

See the Pull Request

Join #gtfs-flex on SlackJoin GTFS-Changes Google Group

Early Implementations

Contact us to add your GTFS-Flex implementation to this page

Contact us

Adoption tracker


Request a changeAdd your organization (consumers)Add your organization (producers)

Ideas parking lot

This area is intended as a community "parking lot". Share something you would like to add to the next increment of GTFS-Flex.

Add your future plans



📲 Dial-a-ride is a variation of multiple terms used across Europe.

🇨🇭 In Switzerland, it would fall under the term Rufbus / On-call bus. There's also the availability of the PubliCar system by PostAuto. Under this proposal, the PubliCar App and service would be discoverable in the user’s preferred trip planner app.

🇦🇹 In Austria, dial-a-ride would also be Rufbus and under the bigger umbrella of Bedarfsverkehr (Demand Responsive Transport) and Mikro-ÖV (Microtransit).

🇩🇰 In Denmark, it can be referred to NT / midttrafik / sydtrafik / FYNBUS / movia (

  • flextur (english: flex trip)
  • formerly flextrafik (english: flex transit)

🇫🇷 ⚠️ In France the terms TDA (Transport à la Demande) and PMR (Personnes à Mobilité Réduite) for Paratransit services

🇩🇪 In Germany they refer to it as On-Demand-Angebot, Flexible Fahrt and AST

  • BVG
  • Brand: Muva
  • On-Demand-Angebot (english: on-demand-service)
  • Flexible Fahrt (english: flexible trip)
  • Other areas
  • Anruf-sammel-taxi or AST (english: call-collect-taxi)

🇬🇧 In the United Kingdom, there is the following service:

The terminology varies across borders but in general we can assume that dial-a-ride is any demand responsive service that requires some form of contact by the rider to the operator.