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

# Quickstart

> Make your first API call in about 5 minutes.

## Prerequisites

* An account. [Sign up](https://app.buyparceldata.com) if you don't have one.
* An API key. See [Authentication](/guides/authentication) for how to create one.

***

## Step 1: Get your API key

1. Log in to the [dashboard](https://app.buyparceldata.com).
2. Navigate to **API Keys** in the sidebar.
3. Click **Create key**, give it a name, and copy the key.

***

## Step 2: Find parcels in an area

Call `POST /parcels/area` with a GeoJSON FeatureCollection. BPD returns a `bpd_uuids` array of every parcel whose geometry intersects your polygon.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.buyparceldata.com/parcels/area \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "type": "FeatureCollection",
      "features": [{
        "type": "Feature",
        "geometry": {
          "type": "Polygon",
          "coordinates": [[
            [-93.6250, 41.5868],
            [-93.6200, 41.5868],
            [-93.6200, 41.5830],
            [-93.6250, 41.5830],
            [-93.6250, 41.5868]
          ]]
        },
        "properties": {}
      }]
    }'
  ```

  ```python Python theme={null}
  import httpx

  API_KEY = "YOUR_API_KEY"
  BASE = "https://api.buyparceldata.com"

  area_response = httpx.post(
      f"{BASE}/parcels/area",
      headers={"Authorization": f"Bearer {API_KEY}"},
      json={
          "type": "FeatureCollection",
          "features": [{
              "type": "Feature",
              "geometry": {
                  "type": "Polygon",
                  "coordinates": [[
                      [-93.6250, 41.5868],
                      [-93.6200, 41.5868],
                      [-93.6200, 41.5830],
                      [-93.6250, 41.5830],
                      [-93.6250, 41.5868],
                  ]]
              },
              "properties": {}
          }]
      },
  )
  uuids = area_response.json()["bpd_uuids"]
  print(uuids)
  ```

  ```javascript JavaScript theme={null}
  const BASE = "https://api.buyparceldata.com";
  const API_KEY = "YOUR_API_KEY";

  const areaRes = await fetch(`${BASE}/parcels/area`, {
    method: "POST",
    headers: { "Authorization": `Bearer ${API_KEY}`, "Content-Type": "application/json" },
    body: JSON.stringify({
      type: "FeatureCollection",
      features: [{
        type: "Feature",
        geometry: {
          type: "Polygon",
          coordinates: [[
            [-93.6250, 41.5868], [-93.6200, 41.5868],
            [-93.6200, 41.5830], [-93.6250, 41.5830],
            [-93.6250, 41.5868],
          ]],
        },
        properties: {},
      }],
    }),
  });
  const { bpd_uuids } = await areaRes.json();
  ```
</CodeGroup>

```json theme={null}
{ "bpd_uuids": ["a1b2c3d4-...", "b2c3d4e5-...", "c3d4e5f6-..."] }
```

***

## Step 3: Fetch parcel records

Pass the UUIDs from Step 2 to `POST /parcels/query` using the `in` operator. One call returns all records.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.buyparceldata.com/parcels/query \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "filters": [
        { "field": "bpd_uuid", "op": "in", "value": ["a1b2c3d4-...", "b2c3d4e5-..."] }
      ],
      "limit": 1000
    }'
  ```

  ```python Python theme={null}
  query_response = httpx.post(
      f"{BASE}/parcels/query",
      headers={"Authorization": f"Bearer {API_KEY}"},
      json={
          "filters": [
              {"field": "bpd_uuid", "op": "in", "value": uuids}
          ],
          "limit": 1000,
      },
  )
  parcels = query_response.json()["results"]

  for p in parcels:
      print(p["owner"], p["acres"], p["cdl_majority_category"])
  ```

  ```javascript JavaScript theme={null}
  const queryRes = await fetch(`${BASE}/parcels/query`, {
    method: "POST",
    headers: { "Authorization": `Bearer ${API_KEY}`, "Content-Type": "application/json" },
    body: JSON.stringify({
      filters: [{ field: "bpd_uuid", op: "in", value: bpd_uuids }],
      limit: 1000,
    }),
  });
  const { results } = await queryRes.json();
  results.forEach((p) => console.log(p.owner, p.acres, p.cdl_majority_category));
  ```
</CodeGroup>

```json theme={null}
{
  "results": [
    {
      "bpd_uuid": "a1b2c3d4-...",
      "owner": "SMITH JOHN A",
      "acres": 2.47,
      "parcel_value": 184500,
      "zoning": "A-1",
      "cdl_majority_category": "Corn",
      "cdl_majority_percent": 84,
      "state": "IA",
      "county": "Polk"
    }
  ],
  "count": 3,
  "limit": 1000,
  "offset": 0
}
```

***

## Next steps

<CardGroup cols={2}>
  <Card title="Query reference" icon="filter" href="/api-reference/query">
    All queryable fields and operators
  </Card>

  <Card title="Coverage" icon="map" href="/guides/coverage">
    Nationwide coverage stats and gaps
  </Card>

  <Card title="Data fields" icon="table" href="/guides/data-fields">
    Full data dictionary
  </Card>

  <Card title="Flat files" icon="file" href="/guides/flat-files">
    Bulk data delivery for high-volume use cases
  </Card>
</CardGroup>
