---
type: "firecrawl-provider"
description: "OpenAddresses batch index (batch.openaddresses.io) and per-source job outputs on v2.openaddresses.io: source listing with licence class, per-source status (job, ETag, size, licence), paged address rows pinned to one job (whole file or PMTiles z14 tiles inside a bbox), single-row lookup and job history. Anonymous JSON API; no record deltas upstream."
use_when: "OpenAddresses batch index (batch.openaddresses.io) and per-source job outputs on v2.openaddresses.io: source listing with licence class, per-source status (job, ETag, size, licence), paged address rows pinned to one job (whole file or PMTiles z14 tiles inside a bbox), single-row lookup and job history. Anonymous JSON API; no record deltas upstream."
categories: "Real estate"
capabilities: 5
credits_per_call: 5
---
# OpenAddresses per-source runs on Firecrawl Alexandria

OpenAddresses batch index (batch.openaddresses.io) and per-source job outputs on v2.openaddresses.io: source listing with licence class, per-source status (job, ETag, size, licence), paged address rows pinned to one job (whole file or PMTiles z14 tiles inside a bbox), single-row lookup and job history. Anonymous JSON API; no record deltas upstream.

- Categories: Real estate
- Category index: [Real estate category](https://firecrawl.dev/alexandria/agents/categories/real-estate)
- Provider key: `batch-openaddresses-io`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

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

## Capabilities

- [Records get](https://firecrawl.dev/alexandria/agents/providers/batch-openaddresses-io/addresses/records_get): One address row of a whole-file source by its OpenAddresses row hash (and occurrence index when the hash repeats), read from the latest successful job's `source.geojson.gz`. Sources whose output exceeds 8 MiB are rejected with `invalid_input`: use `records_list` with a `bbox` instead.
- [Records list](https://firecrawl.dev/alexandria/agents/providers/batch-openaddresses-io/addresses/records_list): Address rows of one source, segment = source, pinned to one job. Whole-file mode (output at most 8 MiB): downloads `source.geojson.gz` from v2.openaddresses.io (302 to the presigned object URL), gunzips the line-delimited GeoJSON and pages by line offset; every page re-reads the file and compares its ETag with the one pinned in the cursor. Tile mode (larger outputs with PMTiles): requires `bbox`; reads the job's `source.pmtiles` with Range requests (header, directories, one z14 tile per page) and decodes the `data` layer, which tippecanoe wrote without drops at z14. Handoff mode (larger outputs without PMTiles): returns no rows and the file URL, size and ETag in `handoff`. The cursor pins job id and ETag, so a weekly run does not break a walk; a `latest_job` that differs from the pinned job is reported in `newer_job`.
- [Source history](https://firecrawl.dev/alexandria/agents/providers/batch-openaddresses-io/addresses/source_history): Every job OpenAddresses ran for one data entry (`GET /api/data/<id>/history`): id, created, status, row count, stats and output flags, newest first. Old successful jobs keep their outputs on v2.openaddresses.io, so a job id from here can be pinned in `records_get`. These are whole runs, not record deltas: OpenAddresses publishes no change feed.
- [Source status](https://firecrawl.dev/alexandria/agents/providers/batch-openaddresses-io/addresses/source_status): Cheap version check for one source: resolves the data entry (`GET /api/data?source=&layer=`), reads the latest successful job (`GET /api/job/<id>`: count, stats, bounds, licence, pinned source commit) and takes the output's ETag, size and Last-Modified with a 1-byte Range read of `https://v2.openaddresses.io/batch-prod/job/<job>/source.geojson.gz` (302 to a presigned object URL, resolved per call and never returned).
- [Sources list](https://firecrawl.dev/alexandria/agents/providers/batch-openaddresses-io/addresses/sources_list): List OpenAddresses data entries (one per source x layer x coverage name) under a source path prefix, from `GET /api/data?source=<prefix>`, with size, latest job, PMTiles availability and the licence class joined from `GET /api/licenses` by source path.

## 1. Choose this provider when

OpenAddresses batch index (batch.openaddresses.io) and per-source job outputs on v2.openaddresses.io: source listing with licence class, per-source status (job, ETag, size, licence), paged address rows pinned to one job (whole file or PMTiles z14 tiles inside a bbox), single-row lookup and job history. Anonymous JSON API; no record deltas upstream.

## 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": "batch-openaddresses-io",
  "capability": "addresses/records_get",
  "options": {
    "hash": "96dff2f15d2c8079",
    "source": "us/ak/bristol_bay_borough"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `hash` (string, required): 16-hex row hash. Pattern: ^[0-9a-f]{16}$. Example: `<hash>`
- `job_id` (number): Read this job's output instead of the latest successful one (old jobs stay readable). Example: `10`
- `layer` (string): OpenAddresses layer of the source. This program shapes `addresses` rows; other layers are listed and status-checked but their records are not decoded. Example: `addresses`
- `name` (string): Coverage name when a source has more than one data entry per layer (e.g. `us/mn/statewide` addresses has `default` and `state`); the function says so when it is needed. Example: `us/mn/statewide`
- `occurrence` (number): 0-based index among rows sharing the hash. Example: `0`
- `source` (string, required): OpenAddresses source path, e.g. `us/ak/bristol_bay_borough` or `us/me/statewide` (lowercase `<country>/<region>/<name>`, no `.json`). Pattern: ^[a-z]{2}(/[a-z0-9_.-]+){1,3}$. Example: `us/ak/bristol_bay_borough`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "batch-openaddresses-io",
    capability: "addresses/records_get",
    options: {
      hash: "96dff2f15d2c8079",
      source: "us/ak/bristol_bay_borough",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "batch-openaddresses-io",
  "capability": "addresses/records_get",
  "options": {
    "hash": "96dff2f15d2c8079",
    "source": "us/ak/bristol_bay_borough"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "batch-openaddresses-io",
    "capability": "addresses/records_get",
    "options": {
      "hash": "96dff2f15d2c8079",
      "source": "us/ak/bristol_bay_borough"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'batch-openaddresses-io/addresses/records_get' \
  --options '{"hash":"96dff2f15d2c8079","source":"us/ak/bristol_bay_borough"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "batch-openaddresses-io",
  "capability": "addresses/records_get",
  "options": {
    "hash": "96dff2f15d2c8079",
    "source": "us/ak/bristol_bay_borough"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "batch-openaddresses-io",
  "capability": "addresses/records_get",
  "options": {
    "hash": "96dff2f15d2c8079",
    "source": "us/ak/bristol_bay_borough"
  }
}
```

## 6. Response data

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

```json
{
  "content_hash": "56ef87a63d0865b4e4bfe86fd75c9e66",
  "data_id": 3771,
  "job_id": 936682,
  "layer": "addresses",
  "licence": null,
  "line_offset": 3,
  "observed_at_ms": 1792352229615,
  "publication_id": "936682",
  "record": {
    "accuracy": "",
    "attribution": null,
    "city": "NAKNEK",
    "district": "",
    "hash": "96dff2f15d2c8079",
    "id": "",
    "lat": 58.7332097,
    "layer": "addresses",
    "licence_class": "none_stated",
    "lon": -157.0361641,
    "number": "1040",
    "occurrence": 0,
    "postcode": "99633",
    "publication_id": "936682",
    "region": "ALASKA",
    "retrieved_at": "2026-10-18T19:37:09Z",
    "source": "us/ak/bristol_bay_borough",
    "source_record_id": "us/ak/bristol_bay_borough:96dff2f15d2c8079:0",
    "source_url": "https://v2.openaddresses.io/batch-prod/job/936682/source.geojson.gz",
    "street": "POOH RD",
    "unit": ""
  },
  "retrieved_at": "2026-10-18T19:37:09Z",
  "source": "us/ak/bristol_bay_borough",
  "source_url": "https://v2.openaddresses.io/batch-prod/job/936682/source.geojson.gz"
}
```

## API reference-derived contract

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

### Records get

- Capability: `addresses/records_get`
- Description: One address row of a whole-file source by its OpenAddresses row hash (and occurrence index when the hash repeats), read from the latest successful job's `source.geojson.gz`. Sources whose output exceeds 8 MiB are rejected with `invalid_input`: use `records_list` with a `bbox` instead.
- Instructions: Re-read a single row from a `source_record_id` (`<source>:<hash>:<occurrence>`) obtained from `records_list` on a whole-file source.
- Cost: 5 credits per call
- Capability file: [Records get](https://firecrawl.dev/alexandria/agents/providers/batch-openaddresses-io/addresses/records_get)

Accepted options:
- `hash` (string, required): 16-hex row hash. Pattern: ^[0-9a-f]{16}$. Example: `<hash>`
- `job_id` (number): Read this job's output instead of the latest successful one (old jobs stay readable). Example: `10`
- `layer` (string): OpenAddresses layer of the source. This program shapes `addresses` rows; other layers are listed and status-checked but their records are not decoded. Example: `addresses`
- `name` (string): Coverage name when a source has more than one data entry per layer (e.g. `us/mn/statewide` addresses has `default` and `state`); the function says so when it is needed. Example: `us/mn/statewide`
- `occurrence` (number): 0-based index among rows sharing the hash. Example: `0`
- `source` (string, required): OpenAddresses source path, e.g. `us/ak/bristol_bay_borough` or `us/me/statewide` (lowercase `<country>/<region>/<name>`, no `.json`). Pattern: ^[a-z]{2}(/[a-z0-9_.-]+){1,3}$. Example: `us/ak/bristol_bay_borough`

Response schema example:
```json
{
  "content_hash": "56ef87a63d0865b4e4bfe86fd75c9e66",
  "data_id": 3771,
  "job_id": 936682,
  "layer": "addresses",
  "licence": null,
  "line_offset": 3,
  "observed_at_ms": 1792352229615,
  "publication_id": "936682",
  "record": {
    "accuracy": "",
    "attribution": null,
    "city": "NAKNEK",
    "district": "",
    "hash": "96dff2f15d2c8079",
    "id": "",
    "lat": 58.7332097,
    "layer": "addresses",
    "licence_class": "none_stated",
    "lon": -157.0361641,
    "number": "1040",
    "occurrence": 0,
    "postcode": "99633",
    "publication_id": "936682",
    "region": "ALASKA",
    "retrieved_at": "2026-10-18T19:37:09Z",
    "source": "us/ak/bristol_bay_borough",
    "source_record_id": "us/ak/bristol_bay_borough:96dff2f15d2c8079:0",
    "source_url": "https://v2.openaddresses.io/batch-prod/job/936682/source.geojson.gz",
    "street": "POOH RD",
    "unit": ""
  },
  "retrieved_at": "2026-10-18T19:37:09Z",
  "source": "us/ak/bristol_bay_borough",
  "source_url": "https://v2.openaddresses.io/batch-prod/job/936682/source.geojson.gz"
}
```

### Records list

- Capability: `addresses/records_list`
- Description: Address rows of one source, segment = source, pinned to one job. Whole-file mode (output at most 8 MiB): downloads `source.geojson.gz` from v2.openaddresses.io (302 to the presigned object URL), gunzips the line-delimited GeoJSON and pages by line offset; every page re-reads the file and compares its ETag with the one pinned in the cursor. Tile mode (larger outputs with PMTiles): requires `bbox`; reads the job's `source.pmtiles` with Range requests (header, directories, one z14 tile per page) and decodes the `data` layer, which tippecanoe wrote without drops at z14. Handoff mode (larger outputs without PMTiles): returns no rows and the file URL, size and ETag in `handoff`. The cursor pins job id and ETag, so a weekly run does not break a walk; a `latest_job` that differs from the pinned job is reported in `newer_job`.
- Instructions: Pull every address point of a county or state source (`us/ak/bristol_bay_borough`), or the points of a large statewide source inside a bounding box (`us/me/statewide` with `bbox`). Follow `next_cursor` until null.
- Cost: 5 credits per call
- Capability file: [Records list](https://firecrawl.dev/alexandria/agents/providers/batch-openaddresses-io/addresses/records_list)

Accepted options:
- `bbox` (number[]): Bounding box `[west, south, east, north]` in WGS84 degrees. Example: `[]`
- `cursor` (string): Opaque `next_cursor` from the previous page. Carries the pinned job id, ETag, mode and position; other inputs must match the first call. Example: `next_cursor`
- `layer` (string): OpenAddresses layer of the source. This program shapes `addresses` rows; other layers are listed and status-checked but their records are not decoded. Example: `addresses`
- `name` (string): Coverage name when a source has more than one data entry per layer (e.g. `us/mn/statewide` addresses has `default` and `state`); the function says so when it is needed. Example: `us/mn/statewide`
- `page_size` (number): Rows per page in whole-file mode (tile mode returns one z14 tile per page). Example: `500`
- `source` (string, required): OpenAddresses source path, e.g. `us/ak/bristol_bay_borough` or `us/me/statewide` (lowercase `<country>/<region>/<name>`, no `.json`). Pattern: ^[a-z]{2}(/[a-z0-9_.-]+){1,3}$. Example: `us/ak/bristol_bay_borough`

Response schema example:
```json
{
  "content_hash": "56ef87a63d0865b4e4bfe86fd75c9e66",
  "count": 3,
  "data_id": 3771,
  "handoff": null,
  "job_id": 936682,
  "layer": "addresses",
  "licence": null,
  "mode": "whole_file",
  "newer_job": null,
  "next_cursor": "eyJ2IjoxLCJtIjoiZmlsZSIsImoiOjkzNjY4MiwiZSI6IjU2ZWY4N2E2M2QwODY1YjRlNGJmZTg2ZmQ3NWM5ZTY2IiwibyI6M30",
  "observed_at_ms": 1792352222129,
  "page": {
    "bbox": null,
    "offset": 0,
    "tile": null
  },
  "publication_id": "936682",
  "records": [
    {
      "accuracy": "",
      "attribution": null,
      "city": "NAKNEK",
      "district": "",
      "hash": "ad81db01fcb9da7e",
      "id": "",
      "lat": 58.7335835,
      "layer": "addresses",
      "licence_class": "none_stated",
      "lon": -157.0245064,
      "number": "642",
      "occurrence": 0,
      "postcode": "99633",
      "publication_id": "936682",
      "region": "ALASKA",
      "retrieved_at": "2026-10-18T19:37:01Z",
      "source": "us/ak/bristol_bay_borough",
      "source_record_id": "us/ak/bristol_bay_borough:ad81db01fcb9da7e:0",
      "source_url": "https://v2.openaddresses.io/batch-prod/job/936682/source.geojson.gz",
      "street": "NORNAK LAKE RD",
      "unit": ""
    },
    {
      "accuracy": "",
      "attribution": null,
      "city": "NAKNEK",
      "district": "",
      "hash": "c37e1a230e868a50",
      "id": "",
      "lat": 58.7336493,
      "layer": "addresses",
      "licence_class": "none_stated",
      "lon": -157.0279727,
      "number": "796",
      "occurrence": 0,
      "postcode": "99633",
      "publication_id": "936682",
      "region": "ALASKA",
      "retrieved_at": "2026-10-18T19:37:01Z",
      "source": "us/ak/bristol_bay_borough",
      "source_record_id": "us/ak/bristol_bay_borough:c37e1a230e868a50:0",
      "source_url": "https://v2.openaddresses.io/batch-prod/job/936682/source.geojson.gz",
      "street": "NORNAK LAKE RD",
      "unit": ""
    },
    {
      "accuracy": "",
      "attribution": null,
      "city": "NAKNEK",
      "district": "",
      "hash": "a7f3fff37edd6ad2",
      "id": "",
      "lat": 58.7334656,
      "layer": "addresses",
      "licence_class": "none_stated",
      "lon": -157.0288537,
      "number": "822",
      "occurrence": 0,
      "postcode": "99633",
      "publication_id": "936682",
      "region": "ALASKA",
      "retrieved_at": "2026-10-18T19:37:01Z",
      "source": "us/ak/bristol_bay_borough",
      "source_record_id": "us/ak/bristol_bay_borough:a7f3fff37edd6ad2:0",
      "source_url": "https://v2.openaddresses.io/batch-prod/job/936682/source.geojson.gz",
      "street": "NORNAK LAKE RD",
      "unit": ""
    }
  ],
  "retrieved_at": "2026-10-18T19:37:01Z",
  "source": "us/ak/bristol_bay_borough",
  "source_url": "https://v2.openaddresses.io/batch-prod/job/936682/source.geojson.gz",
  "total_count": 979
}
```

### Source history

- Capability: `addresses/source_history`
- Description: Every job OpenAddresses ran for one data entry (`GET /api/data/<id>/history`): id, created, status, row count, stats and output flags, newest first. Old successful jobs keep their outputs on v2.openaddresses.io, so a job id from here can be pinned in `records_get`. These are whole runs, not record deltas: OpenAddresses publishes no change feed.
- Instructions: See when a source was last rebuilt, how its row count moved week to week, or pick an older job to compare against.
- Cost: 5 credits per call
- Capability file: [Source history](https://firecrawl.dev/alexandria/agents/providers/batch-openaddresses-io/addresses/source_history)

Accepted options:
- `data_id` (number): Data entry id; when given, `source` is ignored for the lookup. Example: `10`
- `layer` (string): OpenAddresses layer of the source. This program shapes `addresses` rows; other layers are listed and status-checked but their records are not decoded. Example: `addresses`
- `limit` (number): Keep the newest N jobs. Example: `100`
- `name` (string): Coverage name when a source has more than one data entry per layer (e.g. `us/mn/statewide` addresses has `default` and `state`); the function says so when it is needed. Example: `us/mn/statewide`
- `source` (string): OpenAddresses source path, e.g. `us/ak/bristol_bay_borough` or `us/me/statewide` (lowercase `<country>/<region>/<name>`, no `.json`). Pattern: ^[a-z]{2}(/[a-z0-9_.-]+){1,3}$. Example: `us/ak/bristol_bay_borough`
- `status` (string): `Success` keeps only successful jobs. Example: `all`

Response schema example:
```json
{
  "count": 3,
  "data_id": 3771,
  "jobs": [
    {
      "count": 979,
      "created": "2026-10-16T12:15:43.799Z",
      "has_output": true,
      "has_pmtiles": true,
      "job_id": 936682,
      "map_id": 16542,
      "output_url": "https://v2.openaddresses.io/batch-prod/job/936682/source.geojson.gz",
      "run_id": 17008,
      "stats": {
        "counts": {
          "city": 979,
          "district": 0,
          "number": 979,
          "postcode": 979,
          "region": 979,
          "street": 979,
          "unit": 0
        },
        "valid": 979
      },
      "status": "Success",
      "validated": true
    },
    {
      "count": 979,
      "created": "2026-10-09T12:15:54.245Z",
      "has_output": true,
      "has_pmtiles": true,
      "job_id": 931716,
      "map_id": 16542,
      "output_url": "https://v2.openaddresses.io/batch-prod/job/931716/source.geojson.gz",
      "run_id": 16893,
      "stats": {
        "counts": {
          "city": 979,
          "district": 0,
          "number": 979,
          "postcode": 979,
          "region": 979,
          "street": 979,
          "unit": 0
        },
        "valid": 979
      },
      "status": "Success",
      "validated": true
    },
    {
      "count": 979,
      "created": "2026-10-02T12:15:28.567Z",
      "has_output": true,
      "has_pmtiles": true,
      "job_id": 926764,
      "map_id": 16542,
      "output_url": "https://v2.openaddresses.io/batch-prod/job/926764/source.geojson.gz",
      "run_id": 16778,
      "stats": {
        "counts": {
          "city": 979,
          "district": 0,
          "number": 979,
          "postcode": 979,
          "region": 979,
          "street": 979,
          "unit": 0
        },
        "valid": 979
      },
      "status": "Success",
      "validated": true
    }
  ],
  "layer": "addresses",
  "observed_at_ms": 1792352237182,
  "retrieved_at": "2026-10-18T19:37:16Z",
  "source": "us/ak/bristol_bay_borough",
  "source_url": "https://batch.openaddresses.io/api/data/3771/history",
  "total": 33
}
```

### Source status

- Capability: `addresses/source_status`
- Description: Cheap version check for one source: resolves the data entry (`GET /api/data?source=&layer=`), reads the latest successful job (`GET /api/job/<id>`: count, stats, bounds, licence, pinned source commit) and takes the output's ETag, size and Last-Modified with a 1-byte Range read of `https://v2.openaddresses.io/batch-prod/job/<job>/source.geojson.gz` (302 to a presigned object URL, resolved per call and never returned).
- Instructions: Before a walk or on a schedule: compare `publication_id` (job id) and `content_hash` (ETag) with the last seen values; read `access_mode` to know whether `records_list` can page the whole file, needs a bbox, or hands off the file URL.
- Cost: 5 credits per call
- Capability file: [Source status](https://firecrawl.dev/alexandria/agents/providers/batch-openaddresses-io/addresses/source_status)

Accepted options:
- `layer` (string): OpenAddresses layer of the source. This program shapes `addresses` rows; other layers are listed and status-checked but their records are not decoded. Example: `addresses`
- `name` (string): Coverage name when a source has more than one data entry per layer (rare). Example: `<name>`
- `source` (string, required): OpenAddresses source path, e.g. `us/ak/bristol_bay_borough` or `us/me/statewide` (lowercase `<country>/<region>/<name>`, no `.json`). Pattern: ^[a-z]{2}(/[a-z0-9_.-]+){1,3}$. Example: `us/ak/bristol_bay_borough`

Response schema example:
```json
{
  "access_mode": "whole_file",
  "bounds": [
    -157.0825058,
    58.6214979,
    -156.4573269,
    58.7612884
  ],
  "changes": "not_available",
  "content_hash": "56ef87a63d0865b4e4bfe86fd75c9e66",
  "content_hash_kind": "etag",
  "count": 979,
  "data_id": 3771,
  "history_url": "https://batch.openaddresses.io/api/data/3771/history",
  "job_id": 936682,
  "last_modified": "Fri, 16 Oct 2026 15:25:17 GMT",
  "layer": "addresses",
  "licence": null,
  "licence_class": "none_stated",
  "map_id": 16542,
  "name": "county",
  "observed_at_ms": 1792352210028,
  "output_url": "https://v2.openaddresses.io/batch-prod/job/936682/source.geojson.gz",
  "pmtiles_url": "https://v2.openaddresses.io/batch-prod/job/936682/source.pmtiles",
  "publication_id": "936682",
  "published_at": "2026-10-16T12:15:43.799Z",
  "retrieved_at": "2026-10-18T19:36:49Z",
  "run_id": 17008,
  "size_bytes": 27520,
  "source": "us/ak/bristol_bay_borough",
  "source_commit_url": "https://raw.githubusercontent.com/openaddresses/openaddresses/62b67d7755644633c45d90ebd06839e02291e04b/sources/us/ak/bristol_bay_borough.json",
  "source_url": "https://batch.openaddresses.io/api/data?source=us/ak/bristol_bay_borough&layer=addresses",
  "stats": {
    "counts": {
      "city": 979,
      "district": 0,
      "number": 979,
      "postcode": 979,
      "region": 979,
      "street": 979,
      "unit": 0
    },
    "valid": 979
  },
  "status": "Success",
  "updated": "2026-10-16T15:25:18.907Z"
}
```

### Sources list

- Capability: `addresses/sources_list`
- Description: List OpenAddresses data entries (one per source x layer x coverage name) under a source path prefix, from `GET /api/data?source=<prefix>`, with size, latest job, PMTiles availability and the licence class joined from `GET /api/licenses` by source path.
- Instructions: Enumerate the sources of a country, state or county prefix (`us/ak`, `us/me`, `us/tx/statewide`) and see each one's licence class and size before calling `source_status` or `records_list`.
- Cost: 5 credits per call
- Capability file: [Sources list](https://firecrawl.dev/alexandria/agents/providers/batch-openaddresses-io/addresses/sources_list)

Accepted options:
- `include_licence` (boolean): Join `/api/licenses` (one extra 220 KB read) to classify each source's licence; set false for a cheaper listing (licence fields are then null). Example: `false`
- `layer` (string): Keep only this layer. Example: `addresses`
- `prefix` (string, required): Source path prefix: `us`, `us/ak`, `us/ak/bristol_bay_borough`. Matched as a prefix by the API; the whole index (5,000+ entries, 1.4 MB) is returned for a one-segment prefix. Pattern: ^[a-z]{2}(/[a-z0-9_.-]+){0,3}$. Example: `<prefix>`

Response schema example:
```json
{
  "count": 19,
  "layer": "addresses",
  "observed_at_ms": 1792352244252,
  "prefix": "us/ak",
  "retrieved_at": "2026-10-18T19:37:24Z",
  "source_url": "https://batch.openaddresses.io/api/data?source=us/ak&layer=addresses",
  "sources": [
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 502,
      "has_pmtiles": true,
      "job": 936684,
      "latest_job": 936684,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 13534,
      "name": "county",
      "size_bytes": 3091752,
      "source": "us/ak/anchorage",
      "updated": "2026-10-16T15:31:51.397Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 3771,
      "has_pmtiles": true,
      "job": 936682,
      "latest_job": 936682,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 16542,
      "name": "county",
      "size_bytes": 27520,
      "source": "us/ak/bristol_bay_borough",
      "updated": "2026-10-16T15:25:18.907Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 3770,
      "has_pmtiles": true,
      "job": 936677,
      "latest_job": 936677,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 0,
      "name": "city",
      "size_bytes": 29221,
      "source": "us/ak/city_of_dillingham",
      "updated": "2026-10-16T15:25:13.990Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 490,
      "has_pmtiles": true,
      "job": 936675,
      "latest_job": 936675,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 168,
      "name": "city",
      "size_bytes": 397415,
      "source": "us/ak/city_of_juneau",
      "updated": "2026-10-16T15:25:19.255Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 3765,
      "has_pmtiles": true,
      "job": 936673,
      "latest_job": 936673,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 0,
      "name": "city",
      "size_bytes": 50365,
      "source": "us/ak/city_of_nome",
      "updated": "2026-10-16T15:25:07.616Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 3766,
      "has_pmtiles": true,
      "job": 936671,
      "latest_job": 936671,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 0,
      "name": "city",
      "size_bytes": 27721,
      "source": "us/ak/city_of_unalaska",
      "updated": "2026-10-16T15:25:01.434Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 3764,
      "has_pmtiles": true,
      "job": 936669,
      "latest_job": 936669,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 0,
      "name": "city",
      "size_bytes": 88683,
      "source": "us/ak/city_of_valdez",
      "updated": "2026-10-16T15:24:57.954Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 495,
      "has_pmtiles": true,
      "job": 936667,
      "latest_job": 936667,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 14573,
      "name": "county",
      "size_bytes": 1164498,
      "source": "us/ak/fairbanks_north_star_borough",
      "updated": "2026-10-16T15:26:15.344Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 485,
      "has_pmtiles": true,
      "job": 936665,
      "latest_job": 936665,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 13835,
      "name": "county",
      "size_bytes": 57013,
      "source": "us/ak/haines",
      "updated": "2026-10-16T15:24:45.292Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": "Kenai Peninsula Borough",
      "data_id": 499,
      "has_pmtiles": true,
      "job": 936663,
      "latest_job": 936663,
      "layer": "addresses",
      "licence": null,
      "licence_class": "attribution",
      "licence_url": "https://geohub.kpb.us/datasets/kpb-redacted-parcels/explore?location=60.023628%2C-151.797461%2C7.53",
      "map_id": 14139,
      "name": "county",
      "size_bytes": 1157052,
      "source": "us/ak/kenai_peninsula_borough",
      "updated": "2026-10-16T15:25:22.295Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 488,
      "has_pmtiles": true,
      "job": 936661,
      "latest_job": 936661,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 13823,
      "name": "county",
      "size_bytes": 214541,
      "source": "us/ak/ketchikan",
      "updated": "2026-10-16T15:25:03.928Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 486,
      "has_pmtiles": true,
      "job": 936658,
      "latest_job": 936658,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 15632,
      "name": "county",
      "size_bytes": 123502,
      "source": "us/ak/kodiak_island_borough",
      "updated": "2026-10-16T15:24:45.373Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 503,
      "has_pmtiles": true,
      "job": 936655,
      "latest_job": 936655,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 14138,
      "name": "county",
      "size_bytes": 2031652,
      "source": "us/ak/matanuska_susitna_borough",
      "updated": "2026-10-16T15:27:56.334Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 3761,
      "has_pmtiles": true,
      "job": 931686,
      "latest_job": 936652,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 13824,
      "name": "county",
      "size_bytes": 70682,
      "source": "us/ak/north_slope_borough",
      "updated": "2026-10-09T14:59:20.831Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 3759,
      "has_pmtiles": true,
      "job": 936650,
      "latest_job": 936650,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 0,
      "name": "county",
      "size_bytes": 109432,
      "source": "us/ak/sitka",
      "updated": "2026-10-16T15:24:18.262Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 3756,
      "has_pmtiles": true,
      "job": 936648,
      "latest_job": 936648,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 0,
      "name": "county",
      "size_bytes": 21728,
      "source": "us/ak/skagway",
      "updated": "2026-10-16T15:24:14.521Z"
    },
    {
      "access_mode": "handoff",
      "attribution": null,
      "data_id": 3786,
      "has_pmtiles": false,
      "job": 590794,
      "latest_job": 936647,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 10460,
      "name": "state",
      "size_bytes": 8828146,
      "source": "us/ak/statewide",
      "updated": "2025-05-02T15:28:43.403Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 2437,
      "has_pmtiles": true,
      "job": 936644,
      "latest_job": 936644,
      "layer": "addresses",
      "licence": null,
      "licence_class": "none_stated",
      "licence_url": null,
      "map_id": 0,
      "name": "county",
      "size_bytes": 55489,
      "source": "us/ak/wrangell",
      "updated": "2026-10-16T15:24:00.620Z"
    },
    {
      "access_mode": "whole_file",
      "attribution": null,
      "data_id": 487,
      "has_pmtiles": true,
      "job": 936642,
      "latest_job": 936642,
      "layer": "addresses",
      "licence": "Public Domain",
      "licence_class": "public_domain",
      "licence_url": "https://www.arcgis.com/home/item.html?id=00e38183c1c24830a170cc80916f66f6",
      "map_id": 14442,
      "name": "county",
      "size_bytes": 21640,
      "source": "us/ak/yakutat_borough",
      "updated": "2026-10-16T15:23:33.950Z"
    }
  ]
}
```
