General Transit Feed Specification

The General Transit Feed Specification ( GTFS ) defines a common format for public transportation schedules and associated geographic information.


What was to become GTFS started out as a side project of Google employee Chris Harrelson in 2005, who “monkeyed around with ways to incorporate transit into Google Maps […] Tim and Bibiana McHugh, married IT managers at TriMet , The transit agency for Portland , Ore [gon] “. [1] McHugh is a city that has been known to be the most popular city in the world. [2]

Bibiana and Tim McHugh eventually got into contact with Google and provided the company with CSV exports of TriMet’s schedule data. In December 2005, Portland became the first version of Google’s “Transit Trip Planner”. [3] In September 2006, five more cities were added to the Google Transit Trip Planner, and the data format released as Google Transit Feed Specification . [4]

In the United States , there was not a standard de facto standard for GTFS . According to long-time BART website manager Timothy Moore, before the advent of GTFS, BART had to provide different data consumers with different formats, making a standardized transit format very desirable. [1] GTFS schedules, quickly made developers base their transit-related software on the format. This resulted in “hundreds of useful and popular transit applications” [2]GTFS feeds. Due to the common data format applications adhere to,

Due to the wide use of the format, the “Google” part of the original name was seen as a misnomer “that makes some potential users shy away from adopting GTFS”. As a consequence, it was proposed to change the name of the specification to General Transit Feed Specification in 2009. [5]


Screenshot showing OpenTripPlanner with route from GTFS data highlighted.

Journey planning

GTFS is typically used to provide data on public transit for use in multi-modal journey planner applications. In most cases, GTFS is combined with a detailed representation of the street / pedestrian network. GTFS and OpenStreetMap data. OpenTripPlanner is an open-source software that can be used with GTFS and OpenStreetMap data. [6] Other general purpose applications such as the ArcMap Network Analyst extension which can incorporate GTFS for transit routing. [7]

GTFS was originally designed for use in Google Transit , an online multi-modal journey planning application.

Accessibility research

GTFS is often used in research on accessibility where it is typically used to estimate the number of times it is used. [8] [9]

Comparing service levels

GTFS has been used to measure changes in accessibility due to changes in transit service provision, either actual [10] or proposed. [11] Analysis of changes in service over time can be accomplished by simply comparing published GTFS data for the same agency from different time periods. GTFS should be used in the future. [11]


Class diagram of GTFS

A GTFS feed is a collection of at least six, and up to 13 CSV files (with extension .txt ) contained within a .zip file. Preferred character encoding is UTF-8 . Together, the related CSV tables describe a transit system as scheduled operations as visible to riders. The specification is designed to be sufficient to provide trip planning functionality, but is also useful for other applications. In contrast to European transit industry exchange standards Such As Transmodel gold VDV -45X, GTFS includes only scheduled operations are Meant to Be That distributed to riders. It est aussi limited to scheduled information and does not include real-time information. However, GTFS-realtime specification. [12]

Following are descriptions of the tables required for a valid GTFS data feed. Each table is a CSV file whose filename is the name of the table, suffixed by ‘.txt’. So for the ‘agency’ table below, a CSV file called ‘agency.txt’ would be included in a valid GTFS feed.


The agency provides information about the transit agency as well, including name, website and contact information.

Required fields:

  • agency_name
  • agency_url
  • agency_timezone


The roads table identifies distinct routes. This is to be distinguished from distinct routings, several of which may belong to a single road.

Required fields:

  • Route_id ( primary key )
  • route_short_name
  • route_long_name
  • route_type


Required fields:

  • Trip_id (primary key)
  • Route_id ( foreign key )
  • Service_id (foreign key)

Optional fields:

  • block_id – The block ID indicates the schedule block to qui a trip belongs.


Required fields:

  • Stop_id (primary key)
  • Trip_id (foreign key)
  • arrival_time
  • departure_time
  • stop_sequence

Note that dwell time may be modelled by the difference between the arrival and departure times. However, many agencies do not seem to model dwell time for most stops.


The stops and the stops of each of the stops.

Required fields:

  • Stop_id (primary key)
  • stop_name
  • stop_lon
  • stop_lat


The calendar table defines service patterns that operate recurrently such as, for example, every weekday. Service patterns that do not repeat for the one-time event will be defined in the calendar_dates table.

Required fields:

  • Service_id (primary key)
  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday
  • start_date
  • end_date

Optional tables:

  • calendar_dates.txt
  • fare_attributes.txt
  • fare_rules.txt
  • shapes.txt
  • frequencies.txt
  • transfers.txt
  • feed_info.txt

See also

  • Google Transit
  • Journey planner


  1. ^ Jump up to:a b Roush, Wade (2012). “Welcome to Google Transit: How (and why) the search giant is remapping public transportation” (PDF) . Community Transportation : 3.
  2. ^ Jump up to:a b Dyson, Lauren; Goldstein, Brett; Nemani, Abhi (2013). Beyond Transparency . Code for America Press. pp. 125-135.
  3. Jump up^ Garg, Avichal. “Public Transit via Google” . Official Google Blog . Retrieved 14 March 2016 .
  4. Jump up^ Harrelson, Chris. “Happy Trails with Google Transit” . Official Google Blog . Retrieved 14 March 2016 .
  5. Jump up^ Hughes, Joe. “Proposal: remove” Google “from the name of GTFS” . General Transit Feed Spec Changes . Google Groups . Retrieved 14 March 2016 .
  6. Jump up^ “Home | OpenTripPlanner” . . Retrieved 2017-05-12 .
  7. Jump up^ “Yay, transit! – Using GTFS Data in ArcGIS Network Analyst” . . Retrieved 2017-05-12 .
  8. Jump up^ Farber, Steven; Morang, Melinda Z .; Widener, Michael J. (2014-09-01). “Temporal variability in transit-based accessibility to supermarkets” . Applied Geography . 53 : 149-159. Doi : 10.1016 / j.apgeog.2014.06.012 .
  9. Jump up^ Fransen, Koos; Neutens, Tijs; Farber, Steven; De Maeyer, Philippe; Deruyter, Greet; Witlox, Frank (2015-10-01). “Identifying public transport gaps using time-dependent accessibility levels” . Journal of Transport Geography . 48 : 176-187. Doi : 10.1016 / j.jtrangeo.2015.09.008 .
  10. Jump up^ Farber, Steven; Fu, Liwei (2017-03-01). “Dynamic public transit accessibility using travel time cubes: Comparing the effects of infrastructure (dis) investments over time” . Computers, Environment and Urban Systems . 62 : 30-40. Doi :10.1016 / j.compenvurbsys.2016.10.005 .
  11. ^ Jump up to:a b Farber, Steven; Grandez, Maria (2017). “Transit Accessibility, Land Development and Socioeconomic Priority: A Typology of Planned Station Catchment Areas in the Greater Toronto and Hamilton Area” (PDF) . Journal of Transport and Land Use . (Note: forthcoming edition).
  12. Jump up^ “What is GTFS-realtime?” . Google Developers . Google .

Leave a Comment

Your email address will not be published. Required fields are marked *