> ## Documentation index
> Fetch the complete documentation index at: https://docs.leadity.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List areas

> List one region's areas and their ZIP or postal codes.

Lists every area of one region, each with its ZIP or postal codes. Name single codes in selection.zips when you call estimate_scrape and create_scrape, or the whole region in selection.states. To find a place by name across a whole country, call search_areas instead.

`GET https://api.leadity.io/v1/areas`

- Scope: `read`
- Spends credits: no
- MCP tool: `list_areas`

## Headers

- `Authorization`, string, required. Bearer, a space, then an API key: Bearer lk_api_... An MCP key is refused here with wrong_key_kind.

## Query parameters

- `country`, string, required. The two-letter country code, e.g. US. list_territories names the countries on sale. Matches ^[A-Z]{2}$.
- `state`, string, required. The region code as list_territories names it, e.g. TX. 1 to 8 characters.

## Example request

```bash cURL
curl "https://api.leadity.io/v1/areas?country=US&state=TX" \
  -H "Authorization: Bearer $LEADITY_API_KEY"
```

```javascript Node.js
const response = await fetch("https://api.leadity.io/v1/areas?country=US&state=TX", {
  headers: {
    Authorization: `Bearer ${process.env.LEADITY_API_KEY}`,
  },
});

const data = await response.json();
console.log(data);
```

```python Python
import os

import requests

response = requests.get(
    "https://api.leadity.io/v1/areas",
    params={"country": "US", "state": "TX"},
    headers={
        "Authorization": f"Bearer {os.environ['LEADITY_API_KEY']}",
    },
)

print(response.json())
```

## Response

- `country`, string, required.
- `state`, string, required.
- `areas`, object[], required.
  - `area`, string, required. The area's name, a city or town.
  - `zips`, string[], required. The ZIP or postal codes the area holds.

## Example response

```json 200
{
  "country": "US",
  "state": "TX",
  "areas": [
    {
      "area": "Austin",
      "zips": [
        "78701",
        "78702",
        "78703"
      ]
    }
  ]
}
```

## Errors

Every refusal answers `{ error, message }` with the status below. The full list is on the [Errors](https://docs.leadity.io/errors) page.

| Code | Status | Meaning | Extra fields |
| --- | --- | --- | --- |
| `unauthorized` | 401 | The API key is missing, malformed, revoked or expired. | - |
| `wrong_key_kind` | 401 | This key opens the other surface: an API key works on the HTTP API, an MCP key on the MCP server. | - |
| `account_suspended` | 403 | The account is suspended. | - |
| `email_not_verified` | 403 | The account's email address is not verified yet. | - |
| `invalid_body` | 400 | The request does not match the operation's schema. | `issues`: The problems found, each with path (the field as a dotted path, led by the part of the request it travels in: path, query or body, such as body.items.1) and message (what is wrong there). |
| `rate_limited` | 429 | Too many requests. Wait for the Retry-After seconds and try again. | `retryAfterSeconds`: The seconds to wait, the same number as the Retry-After header. |
| `try_again` | 503 | Leadity could not answer just now. Retry in a moment, with the same Idempotency-Key on a spending call. | `retryAfterSeconds`: When a request with this Idempotency-Key is still being processed: the seconds to wait before retrying with the same key, as the Retry-After header says. |
| `internal_error` | 500 | Something failed on our side. Nothing was charged twice. | `body`: On the MCP server, when Leadity answered in a shape the tool does not publish: that answer as it came. |
