# Parceled API documentation

> Quickstart, authentication, MCP tools, REST endpoints, GraphQL, vector tiles, bulk property search, pricing and errors for the Parceled US property data API.

Source: https://www.parceled.ai/docs  
Publisher: Parceled (https://www.parceled.ai)  
Updated: 2026-10-06

Parceled serves US property data (parcels, tax assessor records, owners, permits, zoning, building data and hail history) through an MCP server at `https://www.parceled.ai/api/mcp`, a REST API at `https://www.parceled.ai/api/v1`, a GraphQL API at `https://www.parceled.ai/api`, and hosted vector tiles. Create a free key with one POST request or connect an MCP client with OAuth, check coverage for free, then pay $0.01 per credit only for fields that return data.

- **MCP:** Streamable HTTP, OAuth 2.1 + DCR
- **Free tier:** 100 calls + 5,000 tiles / month
- **Credits:** $0.01 each, billed per field with data

## Quickstart

### 1. Get a key

```bash
curl -X POST https://www.parceled.ai/api/v1/accounts \
  -H 'Content-Type: application/json' \
  -d '{"email":"you@example.com"}'
# -> { "apiKey": "prc_live_...", "tier": "free", ... }  (shown once: store it)
```

Email is optional; `{}` creates an anonymous account whose key is its only credential. MCP clients skip this step: they run OAuth automatically against `https://www.parceled.ai/api/mcp`. Per-client setup is on the [install page](https://www.parceled.ai/install).

### 2. Check coverage (free, no key needed)

```bash
curl 'https://www.parceled.ai/api/v1/check-availability?lat=39.7392&lng=-104.9903'
```

### 3. Fetch a property

```bash
curl 'https://www.parceled.ai/api/v1/parcels?lat=39.7392&lng=-104.9903&include=parcel,taxAssessor,zoning' \
  -H 'Authorization: Bearer prc_live_...'
```

## Authentication

- **Bearer key:** `Authorization: Bearer prc_live_...` on MCP, REST and GraphQL.
- **OAuth 2.1 + PKCE + Dynamic Client Registration (RFC 7591):** a request without a key returns 401 with `WWW-Authenticate` pointing at `/.well-known/oauth-protected-resource` (RFC 9728). Compliant MCP clients (Claude, ChatGPT, Cursor, Claude Code, Zed, Cline) complete sign-in with an emailed magic link.
- Account creation is rate-limited to 10 per IP per hour.

## MCP tools

| Tool | What it does | Cost |
| --- | --- | --- |
| `check_availability` | Which datasets exist at a lat/lng or parcel | Free |
| `search_parcels` | One property by lat/lng or parcelId; choose fields with `include` | Per field with data |
| `search_properties` | Bulk filtered search by location, assessor, permits, zoning, screens, hail, historic | Per row, per field |
| `count_properties` | Count matches for the same filters (capped at 10,000) | 1 credit |
| `render_map` | Inline map in the chat; highlights a search's exact result set | 1 credit with filters |
| `get_tile_endpoints` | Vector tile URL templates for your own map | Free (tiles metered) |
| `get_layer_sources` | Layers and their filterable fields | Free |
| `get_market_research_hints` | For up to 25 search results: building names, owner entity, last sale, recent permits and ready-made web search queries to check market status | Free |
| `get_pricing`, `get_balance`, `get_usage_history` | Pricing, balance, recent calls | Free |
| `purchase_credits`, `enable_payg`, `update_budget_cap` | Stripe checkout links for credits and pay-as-you-go, and the monthly cap. Not in ChatGPT or Codex: buy on your [account page](https://www.parceled.ai/account) | Free |

## Fields and prices

search_parcels (one property). You pay only for fields that return data.

| include key | Contents | Credits |
| --- | --- | --- |
| `parcel` | Address, APN, county, lat/lng, owner + mailing address, land size, last sale | 1 |
| `taxAssessor` | Values, year built, building area, beds/baths, stories, use | 2 |
| `roofPermits` | Roofing permits with date, status, type, source link | 2 |
| `zoning` | Zone code, normalized category, jurisdiction, overlap | 1 |
| `parcelScreens` | Vacant, developable, ADU, split potential, coverage | 1 |
| `buildings` | Building footprints with heights | 1 |
| `buildingCode` | Adopted building code and roofing requirements | 2 |
| `hailAreas` / `currentHailAreas` | Hail history / last 14 days (MESH) | 1 each |
| `historic` | National Register and local landmark designations | 1 |

`search_properties` rows bill per row with data: `parcel` 1, `taxAssessor` 2, `zoning` 1, `permits` (all types) 2, `screens` 1, `historic` 1. Up to 500 rows per page with keyset pagination (`after` = last row's `hailProId`).

## Bulk property search

Every search needs a location: `state`, `county` (3-digit FIPS with `state`), `zip5`, `bounds` or `nearPoint`. Assessor, permit, zoning and screen filters need county, ZIP or map scope (not statewide). Filters combine with AND.

```json
{
  "name": "search_properties",
  "arguments": {
    "state": "TX", "county": "113",
    "taxAssessor": { "yearBuiltMax": 2000, "likelyRenterOccupied": false },
    "hail": { "dateAfter": "2026-03-01", "minSizeInches": 1.5 },
    "permits": { "permitType": "roofing", "issuedAfter": "2026-03-01", "absent": true },
    "include": ["parcel", "taxAssessor"],
    "limit": 200
  }
}
```

## REST endpoints

| Method and path | Auth | Purpose |
| --- | --- | --- |
| `GET /api/v1/ping` | None | Liveness, version and endpoint map |
| `GET /api/v1/pricing` | None | Current credit costs |
| `GET /api/v1/check-availability?lat=&lng=` | None (60/min/IP) | Dataset booleans for a point |
| `POST /api/v1/accounts` | None (10/hr/IP) | Create an account and key |
| `GET /api/v1/parcels?lat=&lng=&include=` | Bearer | Property record |
| `GET /api/v1/balance` | Bearer | Credits and tier |

OpenAPI spec: [/.well-known/openapi.yaml](https://www.parceled.ai/.well-known/openapi.yaml).

## GraphQL

POST queries to `https://www.parceled.ai/api` with the same Bearer key. The schema is introspectable and mirrors the MCP tools (`getParcel`, `searchProperties`, `countProperties`, `checkAvailability`, `getTileEndpoints`...). Opening the endpoint in a browser shows an explorer.

## Vector tiles

`get_tile_endpoints` returns `{z}/{x}/{y}` URL templates (Mapbox Vector Tiles, pbf) for parcels, hail and other layers, plus the `source-layer` name. Keep your key server-side. 5,000 tile requests a month are free, then 1 credit per 1,000. Walkthrough: [add parcel boundaries to Mapbox or MapLibre](https://www.parceled.ai/guides/add-parcel-boundaries-to-mapbox).

## Pricing and billing

| Tier | How it works |
| --- | --- |
| Free | 100 API calls and 5,000 tile requests per month, every field available, no card |
| Credits | Prepaid packs: 1,000 for $10, 5,000 for $50, 25,000 for $250. Credits do not expire |
| Pay as you go | Same per-credit prices billed monthly via Stripe, with an optional monthly cap |

Every billable call runs a pre-flight check; a call that would exceed your balance or cap returns a billing error (HTTP 402 on REST) instead of charging.

Buy credits or set up pay-as-you-go on your [account page](https://www.parceled.ai/account), or with `purchase_credits` / `enable_payg`, which return a Stripe checkout link. Plans: [pricing](https://www.parceled.ai/pricing).

## Full reference

- [llms.txt](https://www.parceled.ai/llms.txt): short machine-readable overview.
- [llms-full.txt](https://www.parceled.ai/llms-full.txt): every tool, response shape and error mode.
- [MCP manifest](https://www.parceled.ai/.well-known/mcp.json) and [OpenAPI spec](https://www.parceled.ai/.well-known/openapi.yaml).
- [Coverage by state and county](https://www.parceled.ai/coverage).

## Frequently asked questions

### Is there a free property data API?

Parceled's free tier includes 100 API calls and 5,000 map tile requests a month with every field available and no credit card. Coverage checks are always free.

### Which AI assistants can use Parceled?

Any client that supports remote MCP servers: Claude (web, desktop, Claude Code), ChatGPT developer mode, Cursor, Zed, Cline and others. Agents without MCP can call the REST API or the OpenAPI spec.

### Do I pay for empty results?

No. Billing is per field that returns data; a property with no permits costs nothing for the permits field.
