Check the setup
- Python 3.10 or newer
- A notebook environment such as Jupyter or Google Colab
- A free Mobility Database access token saved in the MOBILITY_DATABASE_ACCESS_TOKEN environment variable
A global catalog of GTFS and related mobility feeds for building transit-feed finders that respect each agency's license.
From source to product signal
The Mobility Database API lists GTFS, GTFS Realtime, and GBFS feeds with provider, geography, and license metadata. Start by searching active GTFS schedule feeds for one country. Catalog metadata is CC0; each feed's contents remain under that agency's license, so do not download or redistribute a feed until you read its license URL.
Install the packages, then run the notebook cell.
python -m pip install pandas requests
import os
import pandas as pd
import requests
response = requests.get(
"https://api.mobilitydatabase.org/v1/gtfs_feeds",
headers={
"Authorization": f"Bearer {os.environ['MOBILITY_DATABASE_ACCESS_TOKEN']}",
},
params={"limit": 20, "offset": 0, "country_code": "US", "status": "active"},
timeout=30,
)
response.raise_for_status()
payload = response.json()
feeds = pd.json_normalize(payload if isinstance(payload, list) else payload.get("results", payload))
feeds["retrieved_at_utc"] = pd.Timestamp.now(tz="UTC")
license_col = next(
(column for column in feeds.columns if "license" in column.lower()),
feeds.columns[0],
)
print(feeds[[column for column in ["id", "provider", "status", license_col] if column in feeds.columns]].head(20))Test a useful signal
List a bounded set of cataloged GTFS feeds and record each feed's license URL before any download.
MobilityData is a nonprofit source. Last verified 2026-08-14. Temporal coverage: continuously updated feed catalog.