---
type: "firecrawl-provider"
description: "MobilityData's Mobility Database: the public catalog of GTFS schedule feeds (api.mobilitydatabase.org/v1) with provider, location, producer URL, licence and the latest mirrored dataset's id, SHA-256, service window and validation summary; dataset history per feed; and the GTFS tables (agency, routes, stops, trips, stop_times, shapes, calendar, calendar_dates, feed_info) read row by row from the agency's own producer zip, pinned to one dataset by SHA-256. Catalog metadata is CC0 1.0; each feed's rows keep the publishing agency's licence (source_info.license_url)."
use_when: "MobilityData's Mobility Database: the public catalog of GTFS schedule feeds (api.mobilitydatabase.org/v1) with provider, location, producer URL, licence and the latest mirrored dataset's id, SHA-256, service window and validation summary; dataset history per feed; and the GTFS tables (agency, routes, stops, trips, stop_times, shapes, calendar, calendar_dates, feed_info) read row by row from the agency's own producer zip, pinned to one dataset by SHA-256. Catalog metadata is CC0 1.0; each feed's rows keep the publishing agency's licence (source_info.license_url)."
categories: "Travel"
capabilities: 5
credits_per_call: 5
---
# MobilityData Mobility Database (mobilitydatabase.org) on Firecrawl Alexandria

MobilityData's Mobility Database: the public catalog of GTFS schedule feeds (api.mobilitydatabase.org/v1) with provider, location, producer URL, licence and the latest mirrored dataset's id, SHA-256, service window and validation summary; dataset history per feed; and the GTFS tables (agency, routes, stops, trips, stop_times, shapes, calendar, calendar_dates, feed_info) read row by row from the agency's own producer zip, pinned to one dataset by SHA-256. Catalog metadata is CC0 1.0; each feed's rows keep the publishing agency's licence (source_info.license_url).

- Categories: Travel
- Category index: [Travel category](https://firecrawl.dev/alexandria/agents/categories/travel)
- Provider key: `mobilitydatabase-org`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

- [Human guide](https://firecrawl.dev/app/alexandria/mobilitydatabase-org)
- [OpenAPI spec](https://firecrawl.dev/alexandria/agents/providers/mobilitydatabase-org/openapi.json)

## Capabilities

- [Feeds search](https://firecrawl.dev/alexandria/agents/providers/mobilitydatabase-org/transit-feeds/feeds_search): Search the GTFS schedule feed catalog (`GET /v1/gtfs_feeds`) by country, state/province, municipality, provider name, official flag or bounding box, or run the catalog's full-text search (`GET /v1/search`, `q`) which ignores geographic filters. Returns feed identity, provider, locations, producer URL, licence, bounding box and the latest mirrored dataset summary, paged by limit/offset.
- [Records changes](https://firecrawl.dev/alexandria/agents/providers/mobilitydatabase-org/transit-feeds/records_changes): Publisher-provided dataset history for one feed (`GET /v1/gtfs_feeds/{id}/datasets`): every mirrored dataset version with id, downloaded_at, SHA-256, service window and validation summary, newest first, optionally only those downloaded after/before a timestamp. Row-level diffs between versions are not provided by the catalog and stay downstream.
- [Records get](https://firecrawl.dev/alexandria/agents/providers/mobilitydatabase-org/transit-feeds/records_get): One row of a GTFS table by its GTFS key (stop_id, route_id, trip_id, service_id, agency_id, `trip_id:stop_sequence`, `shape_id:shape_pt_sequence`, `service_id:date`, feed_publisher_name), read from the producer zip and pinned to the dataset like records_list.
- [Records list](https://firecrawl.dev/alexandria/agents/providers/mobilitydatabase-org/transit-feeds/records_list): Rows of one GTFS table (agency, routes, stops, trips, stop_times, shapes, calendar, calendar_dates, feed_info) for one feed, read from the agency's producer zip as published (all values text; times past 24:00 kept verbatim), paged by an opaque cursor pinned to the dataset id and the SHA-256 of the zip bytes. Every page re-fetches the zip and compares its hash with the cursor: a different file fails with `upstream_error` whose message starts with `publication_changed`. Zips over 32 MiB, feeds that need an API key, or feeds without a producer URL return an empty page with a `handoff` object (producer URL, size, posted hash) instead of rows.
- [Source status](https://firecrawl.dev/alexandria/agents/providers/mobilitydatabase-org/transit-feeds/source_status): Cheap version check for one GTFS feed (`GET /v1/gtfs_feeds/{id}` and `/datasets?latest=true`): the latest mirrored dataset id (publication id), when it was downloaded, the catalog's posted SHA-256 and MD5 of the zip, zipped and unzipped size, service window, bounding box and validation summary, plus the producer file URL and whether rows can be read from it (hand-off when the zip is over 32 MiB or needs an API key).

## 1. Choose this provider when

MobilityData's Mobility Database: the public catalog of GTFS schedule feeds (api.mobilitydatabase.org/v1) with provider, location, producer URL, licence and the latest mirrored dataset's id, SHA-256, service window and validation summary; dataset history per feed; and the GTFS tables (agency, routes, stops, trips, stop_times, shapes, calendar, calendar_dates, feed_info) read row by row from the agency's own producer zip, pinned to one dataset by SHA-256. Catalog metadata is CC0 1.0; each feed's rows keep the publishing agency's licence (source_info.license_url).

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "mobilitydatabase-org",
  "capability": "transit-feeds/feeds_search",
  "options": {
    "limit": 5,
    "q": "Mountain Line Missoula"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `bbox` (object): Filter by the latest dataset's bounding box (dataset_latitudes / dataset_longitudes). Example: `{}`
- `bounding_filter_method` (string): How a feed's bounding box must relate to `bbox`; default partially_enclosed. Example: `completely_enclosed`
- `country_code` (string): ISO 3166-1 alpha-2 country code, e.g. US. Pattern: ^[A-Za-z]{2}$. Example: `<country_code>`
- `is_official` (boolean): Only feeds the catalog marks as official (published by the agency itself). Example: `false`
- `limit` (number): Page size; default 20. Example: `10`
- `municipality` (string): City or county name as the catalog spells it, e.g. Billings. Example: `<municipality>`
- `offset` (number): Items to skip; default 0. Example: `10`
- `provider` (string): Provider (agency) name, matched by the catalog as a substring. Example: `<provider>`
- `q` (string): Full-text query over provider, feed name and location (`/v1/search`, GTFS schedule feeds only). Cannot be combined with the geographic or provider filters, which that endpoint ignores. Example: `/v1/search`
- `status` (string[]): With `q` only: restrict the full-text search to these feed statuses; default active. Example: `[]`
- `subdivision_name` (string): State, province or region name as the catalog spells it, e.g. Montana. Example: `<subdivision_name>`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "mobilitydatabase-org",
    capability: "transit-feeds/feeds_search",
    options: {
      limit: 5,
      q: "Mountain Line Missoula",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "mobilitydatabase-org",
  "capability": "transit-feeds/feeds_search",
  "options": {
    "limit": 5,
    "q": "Mountain Line Missoula"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "mobilitydatabase-org",
    "capability": "transit-feeds/feeds_search",
    "options": {
      "limit": 5,
      "q": "Mountain Line Missoula"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'mobilitydatabase-org/transit-feeds/feeds_search' \
  --options '{"limit":5,"q":"Mountain Line Missoula"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "mobilitydatabase-org",
  "capability": "transit-feeds/feeds_search",
  "options": {
    "limit": 5,
    "q": "Mountain Line Missoula"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "mobilitydatabase-org",
  "capability": "transit-feeds/feeds_search",
  "options": {
    "limit": 5,
    "q": "Mountain Line Missoula"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "feed_count": 1,
  "feeds": [
    {
      "bounding_box": null,
      "data_type": "gtfs",
      "external_ids": [
        {
          "external_id": "292",
          "source": "mdb"
        },
        {
          "external_id": "mountain-line-missoula/765",
          "source": "transitfeeds"
        }
      ],
      "feed_name": "",
      "id": "mdb-292",
      "is_official": true,
      "latest_dataset": {
        "agency_timezone": "America/Denver",
        "downloaded_at": "2026-07-09T00:48:39.851260Z",
        "hash": "0fee0b84cb8ef94d3320ae679f592648625efd3d2a412b53bceb48ab696d6a93",
        "hash_md5": null,
        "hosted_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202607090048/mdb-292-202607090048.zip",
        "id": "mdb-292-202607090048",
        "service_date_range_end": "2027-02-16T06:59:00Z",
        "service_date_range_start": "2026-07-03T06:00:00Z",
        "unzipped_folder_size_mb": null,
        "validation_report": {
          "features": [
            "Bike Allowed",
            "Feed Information",
            "Headsigns",
            "Route Colors",
            "Shapes",
            "Stops Wheelchair Accessibility",
            "Trips Wheelchair Accessibility"
          ],
          "total_error": 0,
          "total_info": 0,
          "total_warning": 1,
          "validated_at": null,
          "validator_version": null
        },
        "zipped_folder_size_mb": null
      },
      "locations": [
        {
          "country": "United States",
          "country_code": "US",
          "municipality": "Missoula",
          "subdivision_name": "Montana"
        },
        {
          "country": "United States",
          "country_code": "US",
          "municipality": "Missoula County",
          "subdivision_name": "Montana"
        }
      ],
      "provider": "Mountain Line",
      "publication_id": "mdb-292-202607090048",
      "reliability_seal": {
        "earned_at": "2026-08-27T04:00:11.308331Z",
        "evaluated_at": "2026-10-17T09:00:17.483130Z",
        "has_seal": true,
        "lost_at": null
      },
      "retrieved_at": "2026-10-18T13:37:39Z",
      "source_info": {
        "authentication_info_url": "",
        "authentication_type": 0,
        "license_id": null,
        "license_url": "",
        "producer_url": "http://www.mountainline.com/files/MUTD_GTFS.zip"
      },
      "source_record_id": "mdb-292",
      "source_url": "https://mobilitydatabase.org/feeds/gtfs/mdb-292",
      "status": "active"
    }
  ],
  "next_offset": null,
  "observed_at_ms": 1792330659028,
  "retrieved_at": "2026-10-18T13:37:39Z",
  "source_url": "https://api.mobilitydatabase.org/v1/search?limit=5&offset=0&search_query=Mountain+Line+Missoula&data_type=gtfs&status=active",
  "total": 1
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Feeds search

- Capability: `transit-feeds/feeds_search`
- Description: Search the GTFS schedule feed catalog (`GET /v1/gtfs_feeds`) by country, state/province, municipality, provider name, official flag or bounding box, or run the catalog's full-text search (`GET /v1/search`, `q`) which ignores geographic filters. Returns feed identity, provider, locations, producer URL, licence, bounding box and the latest mirrored dataset summary, paged by limit/offset.
- Instructions: Find the feed ids for an area or an agency before calling source_status, records_list or records_changes.
- Cost: 5 credits per call
- Capability file: [Feeds search](https://firecrawl.dev/alexandria/agents/providers/mobilitydatabase-org/transit-feeds/feeds_search)

Accepted options:
- `bbox` (object): Filter by the latest dataset's bounding box (dataset_latitudes / dataset_longitudes). Example: `{}`
- `bounding_filter_method` (string): How a feed's bounding box must relate to `bbox`; default partially_enclosed. Example: `completely_enclosed`
- `country_code` (string): ISO 3166-1 alpha-2 country code, e.g. US. Pattern: ^[A-Za-z]{2}$. Example: `<country_code>`
- `is_official` (boolean): Only feeds the catalog marks as official (published by the agency itself). Example: `false`
- `limit` (number): Page size; default 20. Example: `10`
- `municipality` (string): City or county name as the catalog spells it, e.g. Billings. Example: `<municipality>`
- `offset` (number): Items to skip; default 0. Example: `10`
- `provider` (string): Provider (agency) name, matched by the catalog as a substring. Example: `<provider>`
- `q` (string): Full-text query over provider, feed name and location (`/v1/search`, GTFS schedule feeds only). Cannot be combined with the geographic or provider filters, which that endpoint ignores. Example: `/v1/search`
- `status` (string[]): With `q` only: restrict the full-text search to these feed statuses; default active. Example: `[]`
- `subdivision_name` (string): State, province or region name as the catalog spells it, e.g. Montana. Example: `<subdivision_name>`

Response schema example:
```json
{
  "feed_count": 1,
  "feeds": [
    {
      "bounding_box": null,
      "data_type": "gtfs",
      "external_ids": [
        {
          "external_id": "292",
          "source": "mdb"
        },
        {
          "external_id": "mountain-line-missoula/765",
          "source": "transitfeeds"
        }
      ],
      "feed_name": "",
      "id": "mdb-292",
      "is_official": true,
      "latest_dataset": {
        "agency_timezone": "America/Denver",
        "downloaded_at": "2026-07-09T00:48:39.851260Z",
        "hash": "0fee0b84cb8ef94d3320ae679f592648625efd3d2a412b53bceb48ab696d6a93",
        "hash_md5": null,
        "hosted_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202607090048/mdb-292-202607090048.zip",
        "id": "mdb-292-202607090048",
        "service_date_range_end": "2027-02-16T06:59:00Z",
        "service_date_range_start": "2026-07-03T06:00:00Z",
        "unzipped_folder_size_mb": null,
        "validation_report": {
          "features": [
            "Bike Allowed",
            "Feed Information",
            "Headsigns",
            "Route Colors",
            "Shapes",
            "Stops Wheelchair Accessibility",
            "Trips Wheelchair Accessibility"
          ],
          "total_error": 0,
          "total_info": 0,
          "total_warning": 1,
          "validated_at": null,
          "validator_version": null
        },
        "zipped_folder_size_mb": null
      },
      "locations": [
        {
          "country": "United States",
          "country_code": "US",
          "municipality": "Missoula",
          "subdivision_name": "Montana"
        },
        {
          "country": "United States",
          "country_code": "US",
          "municipality": "Missoula County",
          "subdivision_name": "Montana"
        }
      ],
      "provider": "Mountain Line",
      "publication_id": "mdb-292-202607090048",
      "reliability_seal": {
        "earned_at": "2026-08-27T04:00:11.308331Z",
        "evaluated_at": "2026-10-17T09:00:17.483130Z",
        "has_seal": true,
        "lost_at": null
      },
      "retrieved_at": "2026-10-18T13:37:39Z",
      "source_info": {
        "authentication_info_url": "",
        "authentication_type": 0,
        "license_id": null,
        "license_url": "",
        "producer_url": "http://www.mountainline.com/files/MUTD_GTFS.zip"
      },
      "source_record_id": "mdb-292",
      "source_url": "https://mobilitydatabase.org/feeds/gtfs/mdb-292",
      "status": "active"
    }
  ],
  "next_offset": null,
  "observed_at_ms": 1792330659028,
  "retrieved_at": "2026-10-18T13:37:39Z",
  "source_url": "https://api.mobilitydatabase.org/v1/search?limit=5&offset=0&search_query=Mountain+Line+Missoula&data_type=gtfs&status=active",
  "total": 1
}
```

### Records changes

- Capability: `transit-feeds/records_changes`
- Description: Publisher-provided dataset history for one feed (`GET /v1/gtfs_feeds/{id}/datasets`): every mirrored dataset version with id, downloaded_at, SHA-256, service window and validation summary, newest first, optionally only those downloaded after/before a timestamp. Row-level diffs between versions are not provided by the catalog and stay downstream.
- Instructions: List the dataset versions MobilityData mirrored since a given date to decide which publications to collect.
- Cost: 5 credits per call
- Capability file: [Records changes](https://firecrawl.dev/alexandria/agents/providers/mobilitydatabase-org/transit-feeds/records_changes)

Accepted options:
- `downloaded_after` (string): ISO 8601 date or date-time; only datasets downloaded after it. Pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?)?$. Example: `<downloaded_after>`
- `downloaded_before` (string): ISO 8601 date or date-time; only datasets downloaded before it. Pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?)?$. Example: `<downloaded_before>`
- `feed_id` (string, required): feed_id Example: `<feed_id>`
- `limit` (number): Page size; default 20. Example: `10`
- `offset` (number): Items to skip; default 0. Example: `10`

Response schema example:
```json
{
  "dataset_count": 3,
  "datasets": [
    {
      "agency_timezone": "America/Denver",
      "bounding_box": {
        "maximum_latitude": 46.924218,
        "maximum_longitude": -113.865247,
        "minimum_latitude": 46.819761,
        "minimum_longitude": -114.08799
      },
      "downloaded_at": "2026-07-09T00:48:39.851260Z",
      "feed_id": "mdb-292",
      "hash": "0fee0b84cb8ef94d3320ae679f592648625efd3d2a412b53bceb48ab696d6a93",
      "hash_md5": "1603c929f1b79420cffe3df634dcdaa3",
      "hosted_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202607090048/mdb-292-202607090048.zip",
      "id": "mdb-292-202607090048",
      "note": null,
      "publication_id": "mdb-292-202607090048",
      "retrieved_at": "2026-10-18T13:37:53Z",
      "service_date_range_end": "2027-02-16T06:59:00Z",
      "service_date_range_start": "2026-07-03T06:00:00Z",
      "source_record_id": "mdb-292:mdb-292-202607090048",
      "source_url": "https://api.mobilitydatabase.org/v1/datasets/gtfs/mdb-292-202607090048",
      "unzipped_folder_size_mb": 2.64,
      "validation_report": {
        "features": [
          "Route Colors",
          "Shapes",
          "Headsigns",
          "Feed Information",
          "Stops Wheelchair Accessibility",
          "Trips Wheelchair Accessibility",
          "Bike Allowed"
        ],
        "report_html_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202607090048/report_8.0.1.html",
        "report_json_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202607090048/report_8.0.1.json",
        "total_error": 0,
        "total_info": 0,
        "total_warning": 1,
        "validated_at": "2026-07-09T00:48:43Z",
        "validator_version": "8.0.1"
      },
      "zipped_folder_size_mb": 0.45
    },
    {
      "agency_timezone": "America/Denver",
      "bounding_box": {
        "maximum_latitude": 46.924218,
        "maximum_longitude": -113.865247,
        "minimum_latitude": 46.819761,
        "minimum_longitude": -114.08799
      },
      "downloaded_at": "2026-07-05T01:18:29.656369Z",
      "feed_id": "mdb-292",
      "hash": "3d4c2bd604e4cfd3458b701582b7a2dec2c78778cda75dbb224f7d681ee22c97",
      "hash_md5": "27aabe6a0dfd0a8daa43bcad80c49ebb",
      "hosted_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202607050118/mdb-292-202607050118.zip",
      "id": "mdb-292-202607050118",
      "note": null,
      "publication_id": "mdb-292-202607050118",
      "retrieved_at": "2026-10-18T13:37:53Z",
      "service_date_range_end": "2027-02-16T06:59:00Z",
      "service_date_range_start": "2026-07-03T06:00:00Z",
      "source_record_id": "mdb-292:mdb-292-202607050118",
      "source_url": "https://api.mobilitydatabase.org/v1/datasets/gtfs/mdb-292-202607050118",
      "unzipped_folder_size_mb": 2.64,
      "validation_report": {
        "features": [
          "Route Colors",
          "Shapes",
          "Headsigns",
          "Feed Information",
          "Stops Wheelchair Accessibility",
          "Trips Wheelchair Accessibility",
          "Bike Allowed"
        ],
        "report_html_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202607050118/report_8.0.1.html",
        "report_json_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202607050118/report_8.0.1.json",
        "total_error": 0,
        "total_info": 0,
        "total_warning": 1,
        "validated_at": "2026-07-05T01:18:31Z",
        "validator_version": "8.0.1"
      },
      "zipped_folder_size_mb": 0.45
    },
    {
      "agency_timezone": "America/Denver",
      "bounding_box": {
        "maximum_latitude": 46.924218,
        "maximum_longitude": -113.865247,
        "minimum_latitude": 46.819761,
        "minimum_longitude": -114.08799
      },
      "downloaded_at": "2026-02-28T01:48:06.090947Z",
      "feed_id": "mdb-292",
      "hash": "bf4f4ada4e8b2bc4026947cd56ca96dec2d2c7514268b78a45bbbdf70440af72",
      "hash_md5": "39dd5e493f1060a40637215ad381e14c",
      "hosted_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202602280148/mdb-292-202602280148.zip",
      "id": "mdb-292-202602280148",
      "note": null,
      "publication_id": "mdb-292-202602280148",
      "retrieved_at": "2026-10-18T13:37:53Z",
      "service_date_range_end": "2027-01-01T06:59:00Z",
      "service_date_range_start": "2025-11-10T07:00:00Z",
      "source_record_id": "mdb-292:mdb-292-202602280148",
      "source_url": "https://api.mobilitydatabase.org/v1/datasets/gtfs/mdb-292-202602280148",
      "unzipped_folder_size_mb": 2.75,
      "validation_report": {
        "features": [
          "Route Colors",
          "Shapes",
          "Headsigns",
          "Feed Information",
          "Stops Wheelchair Accessibility",
          "Trips Wheelchair Accessibility",
          "Bike Allowed"
        ],
        "report_html_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202602280148/report_8.0.0.html",
        "report_json_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202602280148/report_8.0.0.json",
        "total_error": 0,
        "total_info": 0,
        "total_warning": 14,
        "validated_at": "2026-05-07T18:16:38Z",
        "validator_version": "8.0.0"
      },
      "zipped_folder_size_mb": 0.47
    }
  ],
  "feed_id": "mdb-292",
  "next_offset": null,
  "observed_at_ms": 1792330674158,
  "retrieved_at": "2026-10-18T13:37:53Z",
  "source_url": "https://api.mobilitydatabase.org/v1/gtfs_feeds/mdb-292/datasets?downloaded_after=2026-01-01T00%3A00%3A00Z&limit=20&offset=0"
}
```

### Records get

- Capability: `transit-feeds/records_get`
- Description: One row of a GTFS table by its GTFS key (stop_id, route_id, trip_id, service_id, agency_id, `trip_id:stop_sequence`, `shape_id:shape_pt_sequence`, `service_id:date`, feed_publisher_name), read from the producer zip and pinned to the dataset like records_list.
- Instructions: Fetch one stop, route, trip or calendar entry when its id is known.
- Cost: 5 credits per call
- Capability file: [Records get](https://firecrawl.dev/alexandria/agents/providers/mobilitydatabase-org/transit-feeds/records_get)

Accepted options:
- `feed_id` (string, required): feed_id Example: `<feed_id>`
- `key` (string, required): The row's GTFS key, exactly as published. Example: `<key>`
- `table` (string, required): table Example: `agency`

Response schema example:
```json
{
  "catalog_hash": "0fee0b84cb8ef94d3320ae679f592648625efd3d2a412b53bceb48ab696d6a93",
  "columns": [
    "stop_id",
    "stop_code",
    "stop_name",
    "stop_desc",
    "stop_lat",
    "stop_lon",
    "zone_id",
    "stop_url",
    "location_type",
    "parent_station",
    "stop_timezone",
    "wheelchair_boarding"
  ],
  "content_hash": "0fee0b84cb8ef94d3320ae679f592648625efd3d2a412b53bceb48ab696d6a93",
  "dataset_id": "mdb-292-202607090048",
  "feed_id": "mdb-292",
  "observed_at_ms": 1792330700783,
  "producer_url": "http://www.mountainline.com/files/MUTD_GTFS.zip",
  "publication_id": "mdb-292-202607090048",
  "record": {
    "fields": {
      "location_type": "",
      "parent_station": "",
      "stop_code": "1001",
      "stop_desc": "",
      "stop_id": "1",
      "stop_lat": "46.868711",
      "stop_lon": "-114.018665",
      "stop_name": "Russell St & 2nd St",
      "stop_timezone": "",
      "stop_url": "",
      "wheelchair_boarding": "0",
      "zone_id": ""
    },
    "key": "1",
    "publication_id": "mdb-292-202607090048",
    "retrieved_at": "2026-10-18T13:38:20Z",
    "row_number": 1,
    "source_record_id": "mdb-292:mdb-292-202607090048:stops:1",
    "source_url": "http://www.mountainline.com/files/MUTD_GTFS.zip"
  },
  "retrieved_at": "2026-10-18T13:38:20Z",
  "source_url": "http://www.mountainline.com/files/MUTD_GTFS.zip",
  "table": "stops"
}
```

### Records list

- Capability: `transit-feeds/records_list`
- Description: Rows of one GTFS table (agency, routes, stops, trips, stop_times, shapes, calendar, calendar_dates, feed_info) for one feed, read from the agency's producer zip as published (all values text; times past 24:00 kept verbatim), paged by an opaque cursor pinned to the dataset id and the SHA-256 of the zip bytes. Every page re-fetches the zip and compares its hash with the cursor: a different file fails with `upstream_error` whose message starts with `publication_changed`. Zips over 32 MiB, feeds that need an API key, or feeds without a producer URL return an empty page with a `handoff` object (producer URL, size, posted hash) instead of rows.
- Instructions: Collect stops, routes, trips, stop_times, shapes or calendars for a feed found with feeds_search; follow next_cursor until null.
- Cost: 5 credits per call
- Capability file: [Records list](https://firecrawl.dev/alexandria/agents/providers/mobilitydatabase-org/transit-feeds/records_list)

Accepted options:
- `cursor` (string): `next_cursor` from the previous page. Carries feed, table, dataset id, zip SHA-256 and row offset; a cursor for another feed or table is invalid_input. Example: `next_cursor`
- `feed_id` (string, required): Catalog feed id such as mdb-292. Example: `<feed_id>`
- `limit` (number): Rows per page; default 100. Example: `10`
- `table` (string, required): table Example: `agency`

Response schema example:
```json
{
  "catalog_hash": "0fee0b84cb8ef94d3320ae679f592648625efd3d2a412b53bceb48ab696d6a93",
  "columns": [
    "stop_id",
    "stop_code",
    "stop_name",
    "stop_desc",
    "stop_lat",
    "stop_lon",
    "zone_id",
    "stop_url",
    "location_type",
    "parent_station",
    "stop_timezone",
    "wheelchair_boarding"
  ],
  "content_hash": "0fee0b84cb8ef94d3320ae679f592648625efd3d2a412b53bceb48ab696d6a93",
  "dataset_id": "mdb-292-202607090048",
  "feed_id": "mdb-292",
  "handoff": null,
  "next_cursor": "v1|mdb-292|stops|mdb-292-202607090048|0fee0b84cb8ef94d3320ae679f592648625efd3d2a412b53bceb48ab696d6a93|2",
  "observed_at_ms": 1792330688391,
  "offset": 0,
  "producer_url": "http://www.mountainline.com/files/MUTD_GTFS.zip",
  "publication_id": "mdb-292-202607090048",
  "record_count": 2,
  "records": [
    {
      "fields": {
        "location_type": "",
        "parent_station": "",
        "stop_code": "1001",
        "stop_desc": "",
        "stop_id": "1",
        "stop_lat": "46.868711",
        "stop_lon": "-114.018665",
        "stop_name": "Russell St & 2nd St",
        "stop_timezone": "",
        "stop_url": "",
        "wheelchair_boarding": "0",
        "zone_id": ""
      },
      "key": "1",
      "publication_id": "mdb-292-202607090048",
      "retrieved_at": "2026-10-18T13:38:08Z",
      "row_number": 1,
      "source_record_id": "mdb-292:mdb-292-202607090048:stops:1",
      "source_url": "http://www.mountainline.com/files/MUTD_GTFS.zip"
    },
    {
      "fields": {
        "location_type": "",
        "parent_station": "",
        "stop_code": "1006",
        "stop_desc": "",
        "stop_id": "3",
        "stop_lat": "46.849832",
        "stop_lon": "-114.013780",
        "stop_name": "W Sussex Ave & Stephens Ave",
        "stop_timezone": "",
        "stop_url": "",
        "wheelchair_boarding": "0",
        "zone_id": ""
      },
      "key": "3",
      "publication_id": "mdb-292-202607090048",
      "retrieved_at": "2026-10-18T13:38:08Z",
      "row_number": 2,
      "source_record_id": "mdb-292:mdb-292-202607090048:stops:3",
      "source_url": "http://www.mountainline.com/files/MUTD_GTFS.zip"
    }
  ],
  "retrieved_at": "2026-10-18T13:38:08Z",
  "source_url": "http://www.mountainline.com/files/MUTD_GTFS.zip",
  "table": "stops"
}
```

### Source status

- Capability: `transit-feeds/source_status`
- Description: Cheap version check for one GTFS feed (`GET /v1/gtfs_feeds/{id}` and `/datasets?latest=true`): the latest mirrored dataset id (publication id), when it was downloaded, the catalog's posted SHA-256 and MD5 of the zip, zipped and unzipped size, service window, bounding box and validation summary, plus the producer file URL and whether rows can be read from it (hand-off when the zip is over 32 MiB or needs an API key).
- Instructions: Decide whether a feed has a new dataset since the last collection, and whether records_list can read it or must hand the producer URL off.
- Cost: 5 credits per call
- Capability file: [Source status](https://firecrawl.dev/alexandria/agents/providers/mobilitydatabase-org/transit-feeds/source_status)

Accepted options:
- `feed_id` (string, required): Catalog feed id such as mdb-292 or tld-5893, or a pasted mobilitydatabase.org/feeds/gtfs/{id} URL. Example: `<feed_id>`

Response schema example:
```json
{
  "agency_timezone": "America/Denver",
  "authentication_type": 0,
  "bounding_box": {
    "maximum_latitude": 46.924218,
    "maximum_longitude": -113.865247,
    "minimum_latitude": 46.819761,
    "minimum_longitude": -114.08799
  },
  "content_hash": "0fee0b84cb8ef94d3320ae679f592648625efd3d2a412b53bceb48ab696d6a93",
  "feed_id": "mdb-292",
  "feed_name": "",
  "file_url": "http://www.mountainline.com/files/MUTD_GTFS.zip",
  "handoff_reason": null,
  "has_dataset": true,
  "hash_md5": "1603c929f1b79420cffe3df634dcdaa3",
  "hosted_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202607090048/mdb-292-202607090048.zip",
  "is_official": true,
  "license_url": "",
  "observed_at_ms": 1792330667089,
  "provider": "Mountain Line",
  "publication_id": "mdb-292-202607090048",
  "published_at": "2026-07-09T00:48:39.851260Z",
  "readable": true,
  "record_count": null,
  "retrieved_at": "2026-10-18T13:37:46Z",
  "service_date_range_end": "2027-02-16T06:59:00Z",
  "service_date_range_start": "2026-07-03T06:00:00Z",
  "source_record_id": "mdb-292",
  "source_url": "https://mobilitydatabase.org/feeds/gtfs/mdb-292",
  "status": "active",
  "unzipped_folder_size_mb": 2.64,
  "validation_report": {
    "features": [
      "Route Colors",
      "Shapes",
      "Headsigns",
      "Feed Information",
      "Stops Wheelchair Accessibility",
      "Trips Wheelchair Accessibility",
      "Bike Allowed"
    ],
    "report_html_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202607090048/report_8.0.1.html",
    "report_json_url": "https://files.mobilitydatabase.org/mdb-292/mdb-292-202607090048/report_8.0.1.json",
    "total_error": 0,
    "total_info": 0,
    "total_warning": 1,
    "validated_at": "2026-07-09T00:48:43Z",
    "validator_version": "8.0.1"
  },
  "zipped_folder_size_mb": 0.45
}
```
