GTFS, or the General Transit Feed Specification, defines a common data format for
public transportation schedules and associated geographic information.
GTFS contains only static or scheduled information about public transport services, and is sometimes known as GTFS Static or GTFS Schedule to distinguish it from the
GTFS Realtime extension, which defines how information on the realtime status of services can be shared.
History
What was to become GTFS started out as a side project of Google
Google LLC (, ) is an American multinational corporation and technology company focusing on online advertising, search engine technology, cloud computing, computer software, quantum computing, e-commerce, consumer electronics, and artificial ...
employee Chris Harrelson in 2005, who "monkeyed around with ways to incorporate transit data into Google Maps
Google Maps is a web mapping platform and consumer application offered by Google. It offers satellite imagery, aerial photography, street maps, 360° interactive panorama, interactive panoramic views of streets (Google Street View, Street View ...
when he heard from Tim and Bibiana McHugh, married IT managers at TriMet
The Tri-County Metropolitan Transportation District of Oregon (TriMet) is a Transit district, transit agency that serves most of the Oregon part of the Portland metropolitan area. Created in 1969 by the Oregon Legislative Assembly, Oregon legi ...
, the transit agency for Portland
Portland most commonly refers to:
*Portland, Oregon, the most populous city in the U.S. state of Oregon
*Portland, Maine, the most populous city in the U.S. state of Maine
*Isle of Portland, a tied island in the English Channel
Portland may also r ...
, Oregon". McHugh is cited with being frustrated about finding transit directions in unfamiliar cities, while popular mapping services were already offering easy-to-use driving directions at the time.
Bibiana and Tim McHugh eventually got into contact with Google
Google LLC (, ) is an American multinational corporation and technology company focusing on online advertising, search engine technology, cloud computing, computer software, quantum computing, e-commerce, consumer electronics, and artificial ...
and provided the company with CSV exports of TriMet's schedule data. In December 2005, Portland became the first city to be featured in the first version of Google's "Transit Trip Planner". In September 2006, five more US cities were added to the Google Transit Trip Planner, and the data format released as the ''Google Transit Feed Specification''.
In the United States
The United States of America (USA), also known as the United States (U.S.) or America, is a country primarily located in North America. It is a federal republic of 50 U.S. state, states and a federal capital district, Washington, D.C. The 48 ...
, there had not been any standard for public transit timetables prior to the advent of GTFS, not even a de facto standard
A ''de facto'' standard is a custom or convention that is commonly used even though its use is not required.
is a Latin phrase (literally " of fact"), here meaning "in practice but not necessarily ordained by law" or "in practice or actuality, ...
. According to long-time BART
Bay Area Rapid Transit (BART) is a rapid transit system serving the San Francisco Bay Area in California. BART serves List of Bay Area Rapid Transit stations, 50 stations along six routes and of track, including eBART, a spur line running t ...
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. The publicly and freely available format specification, as well as the availability of GTFS schedules, quickly made developers base their transit-related software on the format. This resulted in "hundreds of useful and popular transit applications" as well as catalogues listing available GTFS feeds. Due to the common data format those applications adhere to, solutions do not need to be custom-tailored to one transit operator, but can easily be extended to any region where a GTFS feed is available.
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.
Applications
Journey planning
GTFS is typically used to supply data on public transit for use in multi-modal journey planner
A journey planner, trip planner, or route planner is a specialized search engine used to find an optimal means of travelling between two or more given locations, sometimes using more than one Mode of transport, transport mode. Searches may be op ...
applications. In most cases, GTFS is combined with a detailed representation of the street/pedestrian network to allow routing to take place from point to point rather than just between stops. This data is often extended using GTFS-Realtime to factor delays, cancellations, and modified trips into realtime journey planning queries. OpenTripPlanner is open-source software
Open-source software (OSS) is Software, computer software that is released under a Open-source license, license in which the copyright holder grants users the rights to use, study, change, and Software distribution, distribute the software an ...
that can do journey planning with a combination of GTFS and OpenStreetMap
OpenStreetMap (abbreviated OSM) is a free, Open Database License, open geographic database, map database updated and maintained by a community of volunteers via open collaboration. Contributors collect data from surveying, surveys, trace from Ae ...
data. Other general purpose applications exist such as the ArcMap
ArcMap is the former main component of Esri's ArcGIS suite of geospatial processing programs. Used primarily to view, edit, create, and analyze geospatial data. ArcMap allows the user to explore data within a data set, symbolize features accordi ...
Network Analyst extension which can incorporate GTFS for transit routing.
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 transit accessibility where it is typically used to estimate travel times by transit from one point to many other points at different times of day. Studies however have called such applications into question due to their reliance on schedules alone without accounting for reliability issues and regular schedule non-adherence.
Comparing service levels
GTFS has been used to measure changes in accessibility due to changes in transit service provision, either actual or proposed. Analysis of changes in service over time can be accomplished by simply comparing published GTFS data for the same agency from different time periods. For comparison of existing service with proposed infrastructure or service changes, a future GTFS must often be constructed by hand based on proposed service characteristics.
Feed registries
Public GTFS feeds have been aggregated in a variety of feed registries:
Mobility Database
(2023 - present) builds o
TransitFeeds
(2013-2024) which maintained a directory of GTFS and GTFS Realtime feeds and an interactive website for browsing feed contents.
Transitland
(2014 - present) maintains a directory of GTFS and GTFS Realtime feeds in 55+ countries and provides both an interactive website and APIs for querying feed contents. Transitland was originally created by Mapzen and is now maintained b
Interline Technologies
GTFS Data Exchange
(2008–2016) allowed public transit agencies of all sizes to upload copies of their GTFS feeds. The website is no longer active.
Structure
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
UTF-8 is a character encoding standard used for electronic communication. Defined by the Unicode Standard, the name is derived from ''Unicode Transformation Format 8-bit''. Almost every webpage is transmitted as UTF-8.
UTF-8 supports all 1,112,0 ...
. Together, the related CSV tables describe a transit system's 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 such as analysis of service levels and some general performance measures. In contrast to European transit industry exchange standards such as Transmodel
Transmodel, also known as Reference Data Model For Public Transport (EN 12896), is a European Standard for modelling and exchanging public transport information. It provides a standard data model and specialised data structures to uniformly repres ...
or VDV-45X, GTFS only includes scheduled operations that are meant to be distributed to riders. It is also limited to ''scheduled'' information and does not include real-time information. However, real-time information can be related to GTFS schedules according to the related GTFS Realtime specification.[
Following are descriptions of the tables required for a valid GTFS data feed. Each table is literally a text 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.
]
Mandatory tables
agency
The agency table provides information about the transit agency as such, including name, website and contact information.
Required fields:
* agency_name
* agency_url
* agency_timezone
routes
The routes table identifies distinct routes. This is to be distinguished from distinct routings (or paths), several of which may belong to a single route.
Required fields:
* route_id (primary key
In the relational model of databases, a primary key is a designated attribute (column) that can reliably identify and distinguish between each individual record in a table. The database creator can choose an existing unique attribute or combinati ...
)
* route_short_name
* route_long_name
* route_type
* background_color
* foreground_color
trips
Required fields:
* trip_id (primary key)
* route_id (foreign key
A foreign key is a set of attributes in a table that refers to the primary key of another table, linking these two tables. In the context of relational databases, a foreign key is subject to an inclusion dependency constraint that the tuples ...
)
* service_id (foreign key)
Optional fields:
* block_id - The block ID indicates the schedule block to which a trip belongs.
stop_times
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.{{or, date=October 2024
stops
The stops table defines the geographic locations of each and every actual stop or station in the transit system as well as, and optionally, some of the amenities associated with those stops.
Required fields:
* stop_id (primary key)
* stop_name
* stop_lon
* stop_lat
calendar
The calendar table defines service patterns that operate recurrently such as, for example, every weekday. Service patterns that don't repeat such as for a one-time special 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
Calendar dates is an optional table which adds exceptions to the calendar.txt file. This can be adding additional days or removing days, such as for holiday service. The file only contains three columns, the service id, date, and exception type (either added or removed). A service id does not have to be inside the calendar.txt file to be added to this table.
fare_attributes
fare_rules
shapes
Rules for drawing lines on a map to represent a transit organization's routes.
frequencies
This table specifies headway (time between trips) for routes with variable frequency of service.
transfers
Rules for making connections at transfer points between routes.
feed_info
An optional feed start date and optional feed expiration date can be set. Agencies may publish feeds that are several days into the future. Thus, journey planning software applications keep multiple feed versions and the correct feed for a particular day or time.
translations
The translations table consists of the columns table_name, field_name, field_value,record_id,record_sub_id,language,translation. Translations are broken down into their respective tables, and any text field or URL may be translated. Translations in GTFS use two types of keys in the key-value table. Record_id uses ID for the field like stop_id or trip_id, while field_value is a matching value to the field_name's original contents. Tables using a two value tuple
In mathematics, a tuple is a finite sequence or ''ordered list'' of numbers or, more generally, mathematical objects, which are called the ''elements'' of the tuple. An -tuple is a tuple of elements, where is a non-negative integer. There is o ...
, such as stop_times, use record_id and record_sub_id to represent the tuple. The translation column is the output.
See also
* Bing Maps
Bing Maps (previously Live Search Maps, Windows Live Maps, Windows Live Local, and MSN Virtual Earth) is a web mapping service provided as a part of Microsoft's Bing suite of search engines and powered by the Bing Maps Platform framework which al ...
* Google Transit
* Journey planner
A journey planner, trip planner, or route planner is a specialized search engine used to find an optimal means of travelling between two or more given locations, sometimes using more than one Mode of transport, transport mode. Searches may be op ...
* Open standard
An open standard is a standard that is openly accessible and usable by anyone. It is also a common prerequisite that open standards use an open license that provides for extensibility. Typically, anybody can participate in their development due to ...
References
This article contains excerpts fro
"Opening Public Transit Data in Germany"
by Stefan Kaufmann, which is available under a Creative Commons Attribution 3.0 unported license.
External links
Google documentation on GTFS Specification
History of GTFS
GTFS Tools
GTFS resource center
managed b
MobilityData
General Transit Feed Specification
article on TransitWiki, with history, uses and applications, production methods, and best practices
Public transport information systems
Scheduling (transportation)
Web syndication formats
Computer file formats
Open data