[{"data":1,"prerenderedAt":539},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fconcepts\u002Fsource-feeds":3,"_apollo:default":535,"_apollo:stationEditor":536,"_apollo:feedManagement":537,"_apollo:transferAnalyst":538},{"id":4,"title":5,"body":6,"description":525,"extension":526,"meta":527,"navigation":529,"path":530,"seo":531,"stem":532,"__hash__":533,"lastUpdated":534},"content\u002Fdocs\u002Fconcepts\u002Fsource-feeds.md","Source feeds",{"type":7,"value":8,"toc":513},"minimark",[9,13,16,21,24,53,57,65,73,84,95,99,106,119,127,131,143,146,195,202,260,263,353,364,377,381,384,407,411,423,426,446,453,457,460,467,471,474],[10,11,12],"p",{},"Transitland regularly fetches and ingests data from thousands of source feeds. Source feeds are provided by operators of transit service around the world, including public transit agencies and also companies that operate regularly scheduled transit service within or between cities.",[10,14,15],{},"Typically, Transitland catalogs and ingests feeds that describe transit service open to the general public. However, sometimes Transitland also includes feeds for private employer shuttles or other transit service with limited access. Interline provides customized versions of the Transitland platform for organizations that require Transitland APIs for private feeds.",[17,18,20],"h2",{"id":19},"feed-specifications","Feed specifications",[10,22,23],{},"Transitland ingests data in the following feed specifications (also known as \"specs\"):",[25,26,27,37,44],"ul",{},[28,29,30,36],"li",{},[31,32,35],"a",{"href":33,"target":34},"https:\u002F\u002Fgtfs.org\u002Fdocumentation\u002Fschedule\u002Freference\u002F","_blank","GTFS"," for fixed-route transit such as buses, trains, subways, and ferries. GTFS is also known as \"static GTFS\" or \"GTFS Schedule.\"",[28,38,39,43],{},[31,40,42],{"href":41,"target":34},"https:\u002F\u002Fgtfs.org\u002Fdocumentation\u002Frealtime\u002Freference\u002F","GTFS Realtime"," for service alerts, trip updates, and vehicle positions for fixed-route transit. GTFS Realtime is also referred to as GTFS-RT or GTFS-R.",[28,45,46,52],{},[31,47,51],{"href":48,"rel":49},"https:\u002F\u002Fgithub.com\u002FMobilityData\u002Fgbfs",[50],"nofollow","GBFS"," for bike-share and micro-mobility rental systems.",[17,54,56],{"id":55},"onestop-ids-for-feeds","Onestop IDs for feeds",[10,58,59,60,64],{},"Every feed within Transitland is identified by a globally unique Onestop ID that begins with ",[61,62,63],"code",{},"f-",".",[10,66,67,68,72],{},"Onestop IDs for feeds are defined within the ",[31,69,71],{"href":70},"\u002Fdocumentation\u002Fatlas","Transitland Atlas"," repository on GitHub. A continuous integration job running on GitHub Actions ensures that Onestop IDs are not duplicated.",[10,74,75,76,79,80,64],{},"The geohash component is optional for feed Onestop IDs, so ",[61,77,78],{},"f-galesburg~il~us"," is valid. See the ",[31,81,83],{"href":82},"\u002Fdocumentation\u002Fconcepts\u002Fonestop-id-scheme#geohash","Onestop ID scheme",[85,86,87,88],"info",{},"\n  ",[10,89,90,91,94],{},"Transitland Atlas tracks deprecated Onestop IDs for some feed and operator records in ",[61,92,93],{},"supersedes_ids",". Transitland APIs and the Transitland website do not query feeds or operators by superseded Onestop IDs.",[17,96,98],{"id":97},"adding-a-feed-to-transitland","Adding a feed to Transitland",[10,100,101,102,64],{},"For more information on how to add a GTFS or GTFS Realtime feed to Transitland, see the ",[31,103,105],{"href":104},"\u002Fdocumentation\u002Fatlas#how-to-add-a-new-feed","Transitland Atlas documentation",[10,107,108,109,114,115,118],{},"To add a GBFS feed to Transitland, open a pull request against the ",[31,110,113],{"href":111,"rel":112},"https:\u002F\u002Fgithub.com\u002FMobilityData\u002Fgbfs\u002Fblob\u002Fmaster\u002Fsystems.csv",[50],"the GBFS repository on GitHub",". The ",[61,116,117],{},"systems.csv"," file in that repository will be automatically synchronized into the Transitland Atlas repository.",[10,120,121,122,126],{},"Transit operators are welcome to ",[31,123,125],{"href":124},"mailto:info@interline.io","email Interline for assistance"," in adding their feeds to Transitland.",[17,128,130],{"id":129},"feed-license-information","Feed license information",[10,132,133,134,136,137,142],{},"Interline and other contributors to ",[31,135,71],{"href":70}," 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 ",[138,139,141],"abbr",{"title":140},"Distributed Mobility Feed Registry","DMFR"," listing in Transitland Atlas. These feeds listings are imported into Transitland and available throughout Transitland APIs.",[10,144,145],{},"Each feed listing may include the following information about the license attached to a source feed:",[147,148,149,162],"table",{},[150,151,152],"thead",{},[153,154,155,159],"tr",{},[156,157,158],"th",{},"Field",[156,160,161],{},"Description",[163,164,165,176],"tbody",{},[153,166,167,173],{},[168,169,170],"td",{},[61,171,172],{},"url",[168,174,175],{},"A URL for a custom license, or for a webpage that identifies a standard open license attached to the feed",[153,177,178,183],{},[168,179,180],{},[61,181,182],{},"spdx_identifier",[168,184,185,186,189,190,64],{},"A standard identifier for an open license. For example, ",[61,187,188],{},"CC-BY-4.0"," is the SPDX identifier for the Creative Commons Attribution 4.0 International license. See the ",[31,191,194],{"href":192,"rel":193},"https:\u002F\u002Fspdx.org\u002Flicenses\u002F",[50],"full list of SPDX identifiers",[10,196,197,198,201],{},"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 Transitland users provide a link to ",[61,199,200],{},"https:\u002F\u002Fwww.transit.land\u002Fterms",", on every plan except Enterprise and commercial Datasets licenses. 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:",[147,203,204,212],{},[150,205,206],{},[153,207,208,210],{},[156,209,158],{},[156,211,161],{},[163,213,214,238,250],{},[153,215,216,221],{},[168,217,218],{},[61,219,220],{},"use_without_attribution",[168,222,223,226,227,230,231,234,235,237],{},[61,224,225],{},"yes",", ",[61,228,229],{},"no",", or ",[61,232,233],{},"unknown",": Are feed consumers allowed to use the feed contents without including attribution text in their app or map? Transitland users outside Enterprise and commercial Datasets licenses are always required to attribute Transitland by linking to ",[61,236,200],{},", which meets all attribution requirements on source feeds.",[153,239,240,245],{},[168,241,242],{},[61,243,244],{},"attribution_text",[168,246,247,248,64],{},"Feed consumers must include this text when using this feed. This text is automatically included on ",[61,249,200],{},[153,251,252,257],{},[168,253,254],{},[61,255,256],{},"attribution_instructions",[168,258,259],{},"Feed consumers must follow these instructions for how to provide attribution.",[10,261,262],{},"Each feed listing may also summarize additional license terms with the following parameters:",[147,264,265,273],{},[150,266,267],{},[153,268,269,271],{},[156,270,158],{},[156,272,161],{},[163,274,275,291,315,331],{},[153,276,277,282],{},[168,278,279],{},[61,280,281],{},"create_derived_product",[168,283,284,226,286,230,288,290],{},[61,285,225],{},[61,287,229],{},[61,289,233],{},": Are feed consumers allowed to create and share derived products from the feed?",[153,292,293,298],{},[168,294,295],{},[61,296,297],{},"redistribution_allowed",[168,299,300,226,302,230,304,306,307,309,310,314],{},[61,301,225],{},[61,303,229],{},[61,305,233],{},": Are feed consumers allowed to redistribute the feed in its entirety? When set to ",[61,308,229],{},", Transitland does not allow ",[31,311,313],{"href":312},"\u002Fdocumentation\u002Fconcepts\u002Fstatic-gtfs-feed-versions#downloading-static-gtfs-feed-versions","downloading of feed versions"," or of cached GTFS Realtime data.",[153,316,317,322],{},[168,318,319],{},[61,320,321],{},"commercial_use_allowed",[168,323,324,226,326,230,328,330],{},[61,325,225],{},[61,327,229],{},[61,329,233],{},": Are feed consumers allowed to use the feed for commercial purposes?",[153,332,333,338],{},[168,334,335],{},[61,336,337],{},"share_alike_optional",[168,339,340,226,342,230,344,346,347,352],{},[61,341,225],{},[61,343,229],{},[61,345,233],{},": Are feed consumers allowed to keep their modifications of this feed private? This is most relevant to feeds licensed under the Open Data Commons Open Database License (ODbL). See the ",[31,348,351],{"href":349,"rel":350},"https:\u002F\u002Fopendatacommons.org\u002Flicenses\u002Fodbl\u002Fsummary\u002F",[50],"ODbL summary from Open Data Commons"," for its \"share-alike\" and \"keep open\" requirements.",[10,354,355,356,359,360,363],{},"The v2 REST and GraphQL APIs allow users to filter results based on the license parameters for each source feed. The REST API takes ",[61,357,358],{},"license_"," query parameters, such as ",[61,361,362],{},"license_share_alike_optional",", on the feeds, agencies, operators, routes, stops, and trips endpoints. For example, this allows users to search for transit stops within an area excluding stops that are sourced from feeds that require share-alike.",[10,365,366,367,372,373,376],{},"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 ",[31,368,371],{"href":369,"rel":370},"https:\u002F\u002Fgithub.com\u002Ftransitland\u002Ftransitland-atlas",[50],"Transitland Atlas repository on GitHub",". Feed producers whose feeds are not correctly listed in Transitland Atlas are welcome to email us at ",[31,374,375],{"href":124},"info@interline.io"," and we will fix any issues as promptly as possible.",[17,378,380],{"id":379},"gtfs-static-feed-fetching-and-import","GTFS static feed fetching and import",[10,382,383],{},"Transitland fetches and imports static GTFS feeds in a two-step process:",[25,385,386,397],{},[28,387,388,392,393,64],{},[389,390,391],"strong",{},"Feed fetch",": Transitland runs feed fetching jobs throughout the day. URLs for each static feed are typically checked every hour. The contents of the feed are compared to feed versions already fetched (using SHA1 checksums). If the contents have changed, a new feed version is created and stored. This feed version is now available in Transitland's archive for downloading. However, the feed version's contents have not yet been imported, so many querying capabilities are not yet available. See ",[31,394,396],{"href":395},"\u002Fdocumentation\u002Fconcepts\u002Fstatic-gtfs-feed-versions#new-feed-versions","new feed versions",[28,398,399,402,403,64],{},[389,400,401],{},"Feed import",": Every hour, Transitland runs a workflow that imports newly fetched feed versions and selects each feed's ",[31,404,406],{"href":405},"\u002Fdocumentation\u002Fconcepts\u002Fstatic-gtfs-feed-versions#active-feed-version","active feed version",[17,408,410],{"id":409},"gtfs-realtime-feed-fetching-and-caching","GTFS Realtime feed fetching and caching",[10,412,413,414,418,419,64],{},"GTFS Realtime feeds are fetched by Transitland once per minute. The latest feed is cached for use by Transitland APIs, including the ",[31,415,417],{"href":416},"\u002Fdocumentation\u002Frest-api\u002Fdepartures","stop departures REST endpoint"," and many REST endpoints that can optionally include ",[31,420,422],{"href":421},"\u002Fdocumentation\u002Fconcepts\u002Falerts","alerts",[10,424,425],{},"The cached GTFS Realtime feeds can be downloaded in their original Protocol Buffer (PB) format or as JSON, and vehicle positions also as GeoJSON. Three types of GTFS Realtime feeds are supported:",[25,427,428,434,440],{},[28,429,430,433],{},[389,431,432],{},"Vehicle positions",": Real-time location of transit vehicles",[28,435,436,439],{},[389,437,438],{},"Trip updates",": Real-time updates to scheduled trips",[28,441,442,445],{},[389,443,444],{},"Service alerts",": Information about service disruptions and other alerts",[10,447,448,449,64],{},"See also ",[31,450,452],{"href":451},"\u002Fdocumentation\u002Frest-api\u002Ffeeds#downloading-latest-gtfs-realtime","downloading latest GTFS Realtime",[17,454,456],{"id":455},"gbfs-feed-fetching-and-caching","GBFS feed fetching and caching",[10,458,459],{},"GBFS feeds are fetched by Transitland approximately every 10 minutes.",[10,461,462,463,64],{},"Select information extracted from GBFS feeds is made available for querying through the ",[31,464,466],{"href":465},"\u002Fdocumentation\u002Fgraphql-api","GraphQL API",[17,468,470],{"id":469},"browsing-source-feeds","Browsing source feeds",[10,472,473],{},"To explore source feeds within the Transitland platform, use one or more of the following approaches:",[25,475,476,488,498,505],{},[28,477,478,482,483,487],{},[479,480,481],"em",{},"Easy",": Browse the ",[31,484,486],{"href":485},"\u002Fdata\u002Ffeeds","Source Feeds"," section on the Transitland website.",[28,489,490,493,494,64],{},[479,491,492],{},"Intermediate",": Query the ",[31,495,497],{"href":496},"\u002Fdocumentation\u002Frest-api\u002Ffeeds","REST API feed endpoint",[28,499,500,493,503,64],{},[479,501,502],{},"Advanced",[31,504,466],{"href":465},[28,506,507,509,510,512],{},[479,508,502],{},": Parse DMFR files from the ",[31,511,71],{"href":70}," repository on GitHub.",{"title":514,"searchDepth":515,"depth":515,"links":516},"",2,[517,518,519,520,521,522,523,524],{"id":19,"depth":515,"text":20},{"id":55,"depth":515,"text":56},{"id":97,"depth":515,"text":98},{"id":129,"depth":515,"text":130},{"id":379,"depth":515,"text":380},{"id":409,"depth":515,"text":410},{"id":455,"depth":515,"text":456},{"id":469,"depth":515,"text":470},"Transitland source feeds in GTFS, GTFS Realtime, and GBFS: feed Onestop IDs, license metadata, and how often each feed type is fetched, imported, and cached.","md",{"layout":528},"documentation",true,"\u002Fdocs\u002Fconcepts\u002Fsource-feeds",{"title":5,"description":525},"docs\u002Fconcepts\u002Fsource-feeds","zfE6xEGpP3BzF2zlBSLR_SR8yROMu2SAk_7ODG22KEg","2026-10-18T16:11:50-07:00",{},{},{},{},1792449185754]