Google Transit GTFS Schedule Reference and Differences

This page describes the major differences between the official GTFS Schedule and Google Transit's implementation of the specification in the following areas:

  • Ignored official specifications:These fields are part of the official GTFS. Google Transit ingests this data without error but doesn't proactively use the data.

  • Different interpretation:These fields include the parts of the official GTFS that Google Transit interprets differently than the GTFS definition of those parts.

  • Experimental support:These fields are experimental in Google Transit’s implementation. If you want to implement a new experimental field, contact the Google Transit team .

  • Google Transit-supported extension:This extension is not part of the official GTFS. The Transit-supported extension includes both public extensions and Google Transit-specific extensions. Any partner can send this information to Transit in their feed.

Static transit

The following sections document the major differences between the official GTFS and Google Transit's implementation of the static feed.

Ignored official specifications in static feeds

Some official specifications that are ignored by Transit are experimental. To learn more, go to gtfs.org .

Table 1 lists GTFS files that aren't supported by Transit in static feeds. Also, none of the fields that are defined in these files are supported by Transit.

areas.txt
Table 1. Unsupported GTFS files in static feeds
fare_leg_rules.txt
fare_products.txt
fare_transfer_rules.txt
levels.txt
stop_areas.txt

Table 2 lists all the GTFS-defined fields that are ignored by Transit in the static feeds.

Filename Ignored field defined in the GTFS Field type
Table 2. Ignored GTFS fields in static feeds
payment_method Enum
default_lang Language code
feed_publisher_name Text
max_slope Float
continuous_drop_off Enum
continuous_pickup Enum
network_id ID
route_desc Text
route_sort_order Non-negative integer
level_id ID
stop_desc Text
stop_url URL
tts_stop_name Text
bikes_allowed Enum

Different interpretation in static feeds

Although Transit accepts certain GTFS-defined fields, Transit interprets them differently than the GTFS.

Table 3 shows the fields in static feeds that Transit implements differently than as described in the GTFS.

Filename Field defined in the GTFS Field type Required by Google Transit? Google Transit implementation details
Table 3. Differently implemented static feed fields
transfers Enum Required

Google Transit extension.

The public GTFS limits values to a range from 0 to 2 . Google Transit accepts values from 0 to 5 .

Use this field to set the maximum number of allowable transfers with the fare. This doesn't include block transfers, also known as in-seat transfers. If you don't want to set limits on the number of transfers for a fare, leave the transfers field empty.

pathway_mode Enum Optional When the pathway_mode field is specified, if it's left empty, Google Transit accepts it and treats it as unknown.
arrival_time Time Conditionally required Hours are restricted to values from 00 to 99 , which is more than enough for three-day trips.
transfer_type Enum Required

Values of 4 and 5 aren't supported and are ignored.

Google Transit supports values of 0 , 1 , 2 , and 3 .

block_id ID Optional To learn more, see Block transfer example .

Experimental support in static feeds

If you need support to integrate new experimental fields in this category, contact Google Transit .

Google Transit-supported extensions in static feeds

Table 4 provides information about Google Transit extensions . These fields aren't part of the official GTFS.

Table 4. Supported static feed extensions
Filename
Field
Field type
Required by Google Transit?
Google Transit implementation details
ic_price
Float
Optional

This Google Transit extension is available only for partners in Japan.

The ic_price field represents the discounted amount of money to be paid for this fare with a smart card. If no discounts are provided for this fare, or the smart card isn't supported, the ic_price field's value needs to be -1 .

contains_route_id
ID
Optional

Google Transit extension.

This fare applies only to travel that visits an exact set of routes identified by the route_id value in all rows for this combination of the fare_id , origin_id , and destination_id columns.

If the contains_route_id column is missing, or all its values for this fare are null, then the fare isn't restricted in this parameter. If the contains_route_id field is given for a fare, then the route_id field must be empty.

checkin_duration
Integer
Optional

Google Transit extension.

The checkin_duration field specifies how many seconds early a passenger is advised to arrive before the scheduled departure in order to check in and board.

If the passenger connects to the departure by a transfer, then any defined transfer time overrides the checkin_duration value.

The checkin_duration value is only a recommendation that's usually provided by the transit operator. It might not reflect the absolute last possible moment that a passenger can arrive and still board the vehicle.

route_type
Enum
Required

Google Transit extension.

To learn how Google Transit extends the GTFS‑accepted route_type value options, see Extended GTFS route types .

stop_direction_name
Text
Optional

Google Transit extension.

The stop_direction_name field identifies a trip's direction to passengers. The direction is stored as the direction_name value of the departure from this stop.

If the stop_direction_name field is empty, then the Transit-supported trip_direction_name field is used instead. If the trip_direction_name and stop_direction_name fields are both empty, then the transit importer leaves them empty. In that case, partners can use the stop_headsign or trip_headsign value instead. The values of the stop_direction_name field are case normalized.

signposted_as
Text
Optional

Google Transit extension.

The signposted_as field contains the verbatim text written on the signboard for the platform. Examples are "Towards Central" and "East side & Brooklyn."

The GTFS platform_code field and the Transit-supported signposted_as field can be set simultaneously.

Differences between the platform_code and signposted_as fields include the following:

  • Length. The platform_code field usually contains a number or letter like 2 or C .
  • Language. The platform_code field doesn't have a language, but signposted_as values can have translations.
  • Stability. The platform_code field changes much less often than the signposted_as field.
vehicle_type
Integer
Optional

Google Transit extension.

The vehicle_type field specifies the type of vehicles that are used at a stop. This field accepts hierarchical vehicle type (HVT) route types. The HVT values are derived from the European Transport Protocol Experts Group (TPEG) standard.

ticketing_deep_link_id
ID
Optional

Google Transit ticketing extension.

In the agency.txt file, the ticketing_deep_link_id field represents the deep link that's used to ticket the trips of this agency.

ticketing_deep_link_id
ID
Optional

Google Transit ticketing extension.

In the routes.txt file, the ticketing_deep_link_id field represents the deep link that's used to ticket the trips of this route.

ticketing_stop_time_id
ID
Optional

Google Transit ticketing extension.

If present in the stop_times.txt file, the ticketing_stop_time_id field overrides the identifier that represents the stop time for ticketing with deep links.

ticketing_type
Enum
Optional

Google Transit ticketing extension.

The ticketing_type field specifies the type of ticketing that applies to this stop time.

Google Transit accepts the following values:

  • Empty . Default—as defined by the trip.
  • 0 . Available only if the agency or route has a ticketing deep link that's enabled.
  • 1 . Unavailable.
android_intent_uri
URI
Optional

Google Transit ticketing extension.

The android_intent_uri field represents the intent URI that's used for deep linking on Android.

ios_universal_link_url
URL
Optional

Google Transit ticketing extension.

The ios_universal_link_url field represents the universal link URL that's used for deep linking on iOS.

ticketing_deep_link_id
ID
Required

Google Transit ticketing extension.

The ticketing_deep_link_id field represents the identifier of the deep link.

web_url
URL
Optional

Google Transit ticketing extension.

The web_url field represents the URL that's used for deep linking on the web.

agency_id
ID
Required

Google Transit ticketing extension.

To specify the agency of the stop that the default ticketing_stop_id field is defined for, the agency_id field contains the ID from the GTFS agency.txt file.

stop_id
ID
Required

Google Transit ticketing extension.

To specify the stop that the default ticketing_stop_id field is defined for, the stop_id field contains the ID from the GTFS stops.txt file.

ticketing_stop_id
ID
Required

Google Transit ticketing extension.

The ticketing_stop_id field contains the ticketing ID that is applied to the stop. Optionally, an agency qualifies the ID.

trips.txt
exceptional
Enum
Optional

This field indicates exceptional trips. They operate outside of the regular schedule or are diverted from the usual route due to special events or planned disruptions (such as trackwork, etc).

Google accepts the following value options:

  • 0 . Regular services
  • 1 . Service exception. For example, services that are added due to special events or services diverted away from the usual route due to planned disruptions.
ID
Optional

Google Transit ticketing extension.

If the ticketing_trip_id field is present, its value overrides the trip_id field to identify the trip for ticketing with deep links.

Enum
Optional

Google Transit ticketing extension.

The ticketing_type field specifies the type of ticketing that applies to this trip.

Google Transit accepts the following values:

  • 0 . Default. Available only if the agency or route has a ticketing deep link that's enabled.
  • 1 . Unavailable.
lang
Language Code
Optional

Google Transit extension.

The lang field isn't part of the official GTFS, but Google Transit uses this value when it’s present.

To specify the translation of a phrase, use the lang field. Its value must not be empty or und (an undefined language).

trans_id
ID
Optional

Google Transit extension.

The trans_id field isn't part of the official GTFS, but Google Transit uses this value when it’s present.

To specify the ID token of the phrase that the translation is provided for, use the trans_id field. Each row of the translations.txt table means that in the language lang , the phrase trans_id translates to translation .

original_trip_id
ID
Optional

Google Transit extension.

If it's present in the trips.txt file, the original_trip_id value overrides the trip_id value for use by other systems. An example is realtime matching.

trip_direction_name
Text
Optional

Google Transit extension.

The trip_direction_name field identifies a trip's direction to passengers. The value in this field is stored as the direction_name value of each trip.

If the stop_direction_name value in the stop_times table changes along the trip, it might override the trip_direction_name value.

Values in the trip_direction_name field are case normalized.

vehicle_category_id
ID
Optional

Google Transit extension.

In the trips.txt file, the vehicle_category_id field identifies the vehicle that's allotted to this trip. When this field is in the trips.txt file, its value overrides the vehicle_category_id value in the routes.txt file.

vehicle_categories.txt
vehicle_category_id
ID
Required

Google Transit extension.

Identifies a vehicle category.

vehicle_categories.txt
vehicle_amenity_id
ID
Optional

Google Transit extension.

Identifies a set of amenities available to all passengers in the vehicle category. Alternatively, see vehicle_category_amenities.txt for when different amenity sets are available in the same vehicle category.

vehicle_amenities.txt
vehicle_amenity_id
ID
Required

Google Transit extension.

Identifies a set of amenities.

vehicle_amenities.txt
ac_availability
Enum
Optional

Google Transit extension.

Defines if air conditioning is available.

Google accepts the following values:

  • 0 . Default. Unknown.
  • 1 . Available anywhere, anytime.
  • 2 . Not available.
vehicle_amenities.txt
wifi_availability
Enum
Optional

Google Transit extension.

Defines if Wifi is available onboard.

Google accepts the following values:

  • 0 . Default. Unknown.
  • 1 . Available anywhere, anytime.
  • 2 . Not available.
vehicle_amenities.txt
toilet_availability
Enum
Optional

Google Transit extension.

Defines if a toilet is available inside the vehicle.

Google accepts the following values:

  • 0 . Default. Unknown.
  • 1 . Available anywhere, anytime.
  • 2 . Not available.
vehicle_amenities.txt
gender_accessibility
Enum
Optional

Google Transit extension.

Defines if gender restrictions apply.

Google accepts the following values:

  • 0 . Default. Unknown.
  • 1 . No gender restrictions.
  • 2 . Restricted to women only.
  • 3 . Restricted to men only.
vehicle_amenities.txt
seat_type
Enum
Optional

Google Transit extension.

Defines the type of seat.

Google accepts the following values:

  • 0 . Default. Seat (not foldable, may be reclining).
  • 1 . Fixed bed (cannot be reclined back as seat).
  • 2 . Reclining seat.
vehicle_amenities.txt
service_class
Enum
Optional

Google Transit extension.

Defines the class of the seat.

Google accepts the following values:

  • 0 . Default. Unknown.
  • 1 . First class.
  • 2 . Second class.
  • 3 . Third class.
  • 4 . Business.
  • 5 . Premium Economy.
  • 6 . Economy.
vehicle_amenities.txt
service_class_code
String
Optional

Google Transit extension.

Defines a short form class code (e.g. 1A for Air-Conditioned First Class). This field is a more specific version of the class field, where the classes not available in the class enum can be specified.

vehicle_amenities.txt
seat_plug
Enum
Optional

Google Transit extension.

Defines if either an electric or usb plug (of any type) is available at the seat.

Google accepts the following values:

  • 0 . Default. Unknown.
  • 1 . Available at all seats.
  • 2 . Not available.
vehicle_amenities.txt
row_layout_summary
String
Optional

Google Transit extension.

Defines the number of seats or beds in one row of the vehicle. Some examples are: "2" (2 seats in a row, but whether they are separated or next to each other is unknown), "1+1" (2 individual seats in a row), "2+2" (4 seats in a row with a separation in the middle).

vehicle_amenities.txt
row_leg_space
Enum
Optional

Google Transit extension.

Defines if rows have additional leg space.

Google accepts the following values:

  • 0 . Default. Unknown / Not applicable.
  • 1 . Standard leg space.
  • 2 . Additional leg space.
vehicle_category_amenities.txt
vehicle_category_id
ID
Required

Google Transit extension.

Identifies the vehicle category. The same vehicle category can have numerous amenity sets by repeating the value of this field in multiple rows. This is typically helpful when a vehicle category has various classes of service.

vehicle_category_amenities.txt
vehicle_amenity_id
ID
Required

Google Transit extension.

Identifies a set of amenities available to all passengers in the vehicle category.

Design a Mobile Site
View Site in Mobile | Classic
Share by: