REST API - Feeds

Feeds

Transitland is built on publicly available GTFS data contributed by our user community to the Transitland Atlas.

Feeds contain details on how to access transit information, including URLs to data sources in various formats (GTFS, GTFS-RT, GBFS, etc), license information, related feeds, details on how to make authorized requests, and feed version archives. Feed versions are archived (as .zip files) and imported into the Transitland database for querying agencies, stops, routes, trips, etc.

Feed license information

Interline and other contributors to Transitland Atlas make a good-faith effort to check for licenses attached to each source feed in Transitland. When a license can be found, we briefly review it and summarize it in the DMFR listing in Transitland Atlas. These feeds listings are imported into Transitland and available throughout Transitland APIs.

Each feed listing may include the following information about the license attached to a source feed:

  • url: a URL for a custom license or a URL for a webpage that identifies a standard open license attached to the feed
  • spdx_identifier: SPDX identifiers provide a common scheme for naming standard open licenses. For example, CC-BY-4.0 is the SPDX identifier for the Creative Commons Attribution 4.0 International license. For a full list of SPDX identifiers, see https://spdx.org/licenses/

Many feed producers care about data consumers providing attribution to the source. That is, a consumer of transit data who uses the data to create a web app, a map, a report, or another type of visual or textual product to credit the source of their data. While not all source feeds in Transitland require attribution, enough do so that we make sure to meet this requirement by requiring that users of the Transitland API Free and Professional plans provide a link to https://www.transit.land/terms This webpage is dynamically generated to provide full attribution to all of Transitland's source feeds. More information about attribution requirements is contained in each feed record with the following parameters:

  • use_without_attribution (allowed values: yes, no, unknown): Are feed consumers allowed to use the feed contents without including attribution text in their app or map? Note that users of the Transitland Free and Professional plans are always required to attribute Transitland by linking to https://www.transit.land/terms This ensures that we meet all attribution requirements on source feeds.
  • attribution_text: Feed consumers must include this particular text when using this feed. This text is automatically included on the webpage at https://www.transit.land/terms
  • attribution_instructions: Feed consumers must follow these instructions for how to provide attribution.

Each feed listing may also summarize additional license terms with the following parameters:

  • create_derived_products (allowed values: yes, no, unknown): Are feed consumers allowed to create and share derived products from the feed?
  • redistribution_allowed (allowed values: yes, no, unknown): Are feed consumers allowed to redistribute the feed in its entirety? If this parameters is set to no, Transitland will not allow downloading of feed versions.
  • commercial_use_allowed (allowed values: yes, no, unknown): Are feed consumers allowed to use the feed for commercial purposes?
  • share_alike_optional (allowed values: yes, no, unknown): Are feed consumers allowed to keep their modifications of this feed private? This parameter is most relevant to feeds licensed under the Open Data Commons Open Database License (ODbL). For a summary of the ODbL and its requirements for "share-alike" and "keep open" see this summary from Open Data Commons.

The v2 REST and GraphQL APIs allow users to filter results based on the license parameters for each source feed. For example, this allows users to search for transit stops within an area excluding stops that are sourced from feeds that require share-alike.

Transitland Atlas may provide incomplete or incorrect information about source feed licenses. We do not guarantee completeness or accuracy. We welcome corrections and additions to the Transitland Atlas repository on GitHub. Feed producers whose feeds are not correctly listed in Transitland Atlas are welcome to email us at info@interline.io and we will fix any issues as promptly as possible.

Request overview

The feeds API provides a number of searching and filtering parameters; results are based on this GraphQL query.


Request parameters

GET/api/v2/rest/feeds Feeds — Search for feeds

GET/api/v2/rest/feeds.{format}Request feeds in specified format

GET/api/v2/rest/feeds/{feed_key}Request a feed by ID or Onestop ID

GET/api/v2/rest/feeds/{feed_key}.{format}Request a feed by ID or Onestop ID in specified format

ParameterTypeDescriptionExample
idinteger
0 ... unlimited
Search for a specific internal ID
feed_keystring

Feed lookup key; can be an integer ID or a Onestop ID
afterinteger

Return records past this record ID
limitinteger
0 ... 100
Maximum number of records to returnlimit=1
format enum
jsongeojsonpng
Response formatformat=geojson
searchstring

Full text searchsearch=caltrain
onestop_idstring

Search for a specific Onestop IDonestop_id=f-9q9-caltrain
specstring enum
gtfsgtfs-rtgbfsmds
Type of data contained in this feedspec=gtfs
fetch_errorstring enum
truefalse
Search for feeds with or without a fetch errorfetch_error=true
tag_keystring

Search for feeds with a tag. Combine with tag_value also query for the value of the tag.tag_key=gtfs_data_exchange
tag_valuestring

Search for feeds tagged with a given value. Must be combined with tag_key.tag_key=unstable_url&tag_value=true
license_commercial_use_allowed enum
yesnounknownexclude_no
Filter entities by feed license 'commercial_use_allowed' value. Please see feed documentation for details on license values. 'exclude_no' is equivalent to 'yes' and 'unknown'.
license_share_alike_optional enum
yesnounknownexclude_no
Filter entities by feed license 'share_alike_optional' value. Please see feed documentation for details on license values. 'exclude_no' is equivalent to 'yes' and 'unknown'.
license_create_derived_product enum
yesnounknownexclude_no
Filter entities by feed license 'create_derived_product' value. Please see feed documentation for details on license values. 'exclude_no' is equivalent to 'yes' and 'unknown'.
license_redistribution_allowed enum
yesnounknownexclude_no
Filter entities by feed license 'redistribution_allowed' value. Please see feed documentation for details on license values. 'exclude_no' is equivalent to 'yes' and 'unknown'.
license_use_without_attribution enum
yesnounknownexclude_no
Filter entities by feed license 'use_without_attribution' value. Please see feed documentation for details on license values. 'exclude_no' is equivalent to 'yes' and 'unknown'.

Response format

Array of objects
Description Distributed mobility data registry (DMFR) feed
Reference DMFR Schema
id
(integer)
Unique integer ID
onestop_id
(string)
Onestop ID for this feed

Examplef-9q9-bart

name
(string)
A common name for this feed

ExampleBay Area Rapid Transit

spec
(string)
Type of data contained in this feed: GTFS, GTFS-RT, GBFS, or MDS
Enumgtfsgtfs-rtgbfsmds
languages
(string array)
Language(s) included in this feed

Example{ "0": "en-US" }

feed_versions
(object array)
A subset of fields for the feed versions associated with this feed
urls
(object)
URLs that provide data associated with this feed
static_current
(string)
URL for the static feed that represents today's service

Examplehttps://www.bart.gov/dev/schedules/google_transit.zip

static_historic
(string array)
URLs for static feeds that represent past service that is no longer in effect
static_planned
(string)
URLs for static feeds that represent service planned for upcoming dates. Typically used to represent calendar/service changes that will take effect few weeks or months in the future
realtime_vehicle_positions
(string)
URL for GTFS Realtime VehiclePosition messages
realtime_trip_updates
(string)
URL for GTFS Realtime TripUpdate messages
realtime_alerts
(string)
URL for GTFS Realtime Alert messages
gbfs_auto_discovery
(string)
URL for GBFS auto discovery
mds_provider
(string)
URL for MDS endpoint
license
(object)
License information for this feed, if present
spdx_identifier
(string)
SPDX identifier for a common license. See https://spdx.org/licenses/

ExampleCC-BY-4.0

url
(string)
URL for a custom license

Examplehttp://www.actransit.org/data-terms-and-conditions/

use_without_attribution
(string)
Are feed consumers allowed to use the feed contents without including attribution text in their app or map?
Enumyesnounknown
create_derived_product
(string)
Are feed consumers allowed to create and share derived products from the feed?
Enumyesnounknown
redistribution_allowed
(string)
Are feed consumers allowed to redistribute the feed in its entirety?
Enumyesnounknown
commercial_use_allowed
(string)
Are feed consumers allowed to use the feed for commercial purposes?
Enumyesnounknown
share_alike_optional
(string)
Are feed consumers allowed to keep their modifications of this feed private?
Enumyesnounknown
attribution_text
(string)
Feed consumers must include this particular text when using this feed

Exampledata provided by 511.org

attribution_instructions
(string)
Feed consumers must follow these instructions for how to provide attribution

ExampleYou must acknowledge the source of the provided data...

auth
(object)
Details on how to construct an HTTP request to access a protected resource
type
(string)
Method for inserting authorization secret into request
Enumheaderbasic_authquery_parampath_segment
param_name
(string)
When type=query_param, this specifies the name of the query parameter. When type=header, this specifies the name of the header.
info_url
(string)
Website to visit to sign up for an account
feed_state
(object)
Details on the current state of this feed, such as active version, last fetch time, etc.
last_fetch_error
(string)
Error produced during the last fetch attempt. Empty string if no error.

Example404 error

last_fetched_at
(datetime)
Time of last attempted fetch

Example2019-11-15T00:45:55.409906

last_successful_fetch_at
(datetime)
Time of last successful fetch that returned valid data

Example2019-11-15T00:45:55.409906

feed_version
(object)
The subset of fields of the active feed version. See feed version documentation for full details.
geometry
(object)
Geometry in GeoJSON format
type
(string)
GeoJSON geometry type

ExampleLineString

coordinates
(number array)
An array of coordinates; may be nested arrays if geometry is Polygon or MultiLineString

Example[ [ -122.496, 37.778 ], [ -122.425, 37.786 ] ]


Downloading source GTFS

GET/api/v2/rest/feeds/{feed_key}/download_latest_feed_versionDownload latest feed version for this feed

Description Download the latest feed version GTFS zip for this feed, if redistribution is allowd by the source feed's license