Skip to main content
POST
/
parcels
/
query
Query Parcels Post
curl --request POST \
  --url https://api.buyparceldata.com/parcels/query \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "filters": [
    {
      "field": "<string>",
      "op": "<string>",
      "value": "<string>"
    }
  ],
  "order": {
    "field": "<string>",
    "direction": "asc"
  },
  "limit": 20,
  "offset": 0
}
'
{
  "results": [
    {
      "latitude": 123,
      "longitude": 123,
      "parcel_id": "<string>",
      "alt_parcel_id": "<string>",
      "account_number": "<string>",
      "owner": "<string>",
      "owner_first_name": "<string>",
      "owner_last_name": "<string>",
      "owner_2": "<string>",
      "owner_type": "<string>",
      "parcel_value": 123,
      "land_value": 123,
      "improvements_value": 123,
      "agricultural_value": 123,
      "building_value": 123,
      "sale_price": 123,
      "tax_amount": 123,
      "sq_feet": 123,
      "acres": 123,
      "acres_calc": 123,
      "sale_date": "<string>",
      "year_built": "<string>",
      "parcel_value_type": "<string>",
      "zoning": "<string>",
      "zoning_description": "<string>",
      "land_use": "<string>",
      "land_use_code": "<string>",
      "tax_year": "<string>",
      "legal": "<string>",
      "legal_2": "<string>",
      "legal_3": "<string>",
      "unit_number": "<string>",
      "plat": "<string>",
      "book": "<string>",
      "page": "<string>",
      "block": "<string>",
      "lot": "<string>",
      "num_stories": "<string>",
      "num_units": "<string>",
      "num_rooms": "<string>",
      "situs": "<string>",
      "mail_addr": "<string>",
      "additional": {},
      "county": "<string>",
      "county_fp": "<string>",
      "county_ns": "<string>",
      "state": "<string>",
      "state_fp": "<string>",
      "state_name": "<string>",
      "lsad": "<string>",
      "plss_section": "<string>",
      "plss_township": "<string>",
      "plss_range": "<string>",
      "city": "<string>",
      "postal": "<string>",
      "bpd_uuid": "<string>",
      "cdl_raw": "<string>",
      "cdl_majority_value": 123,
      "cdl_majority_category": "<string>",
      "cdl_majority_percent": 123,
      "adjacent_acreage_sameowner": 123,
      "elevation": 123
    }
  ],
  "count": 123,
  "limit": 123,
  "offset": 123
}

Request format

Pass a filters array where each item specifies a field, an op (operator), and a value. All filters are AND’d together.
{
  "filters": [
    { "field": "owner", "op": "ilike", "value": "SMITH" },
    { "field": "state", "op": "eq", "value": "CA" }
  ],
  "limit": 20,
  "offset": 0
}
Use an array value for in, nin, and between:
{
  "filters": [
    { "field": "state", "op": "in", "value": ["CA", "OR", "WA"] },
    { "field": "acres", "op": "between", "value": [500, 10000] }
  ]
}

Queryable fields

Text search fields: ilike, eq, ne, in, nin, isnull

ilike performs a case-insensitive substring match.
FieldDescription
ownerOwner name
parcel_idCounty assessor parcel ID (APN)
situsProperty address
mail_addrOwner mailing address
cityCity
land_useLand use classification
land_use_codeLand use code
legalLegal description
cdl_majority_categoryUSDA crop/land cover type (e.g. Corn, Soybeans)
Queries on owner, parcel_id, situs, or mail_addr require a geographic scope. Include a state_fp, state, or county_fp filter.

Numeric fields: eq, ne, gt, gte, lt, lte, between, in, nin, isnull

FieldDescription
acresParcel area (county-reported)
acres_calcParcel area (calculated from geometry)
parcel_valueTotal assessed value (USD)
land_valueLand assessed value (USD)
improvements_valueImprovements assessed value (USD)
agricultural_valueAgricultural assessed value (USD)
building_valueBuilding assessed value (USD)
sale_priceMost recent sale price (USD)
tax_amountAnnual property tax (USD)
elevationCentroid elevation (meters)
adjacent_acreage_sameownerContiguous acreage under same ownership
cdl_majority_valueNumeric CDL category code
cdl_majority_percent% of parcel covered by majority CDL category
sq_feetParcel area in square feet

ID and categorical fields: eq, ne, in, nin, isnull

FieldDescription
state_fpState FIPS code (e.g. "19" for Iowa)
stateTwo-letter state abbreviation (e.g. "IA")
county_fpCounty FIPS code
countyCounty name
postalZIP code
zoningZoning code
owner_typeOwner type
sale_dateSale date string
bpd_uuidBPD UUID; use in to batch-fetch records from an area search
bpd_stack_uuidStack UUID for grouped same-location parcels

Operators

OperatorDescriptionValue type
eqEqualsstring or number
neNot equalsstring or number
gt / gteGreater than (or equal)number
lt / lteLess than (or equal)number
betweenInclusive range2-element array: [min, max]
inIn setarray of strings or numbers
ninNot in setarray of strings or numbers
ilikeCase-insensitive substring matchstring
isnullIs null / is not nulltrue (null) or false (not null)

Sorting

Pass an optional order object with a field and direction:
{
  "filters": [{ "field": "state_fp", "op": "eq", "value": "19" }],
  "order": { "field": "acres", "direction": "desc" }
}

Pagination

Use limit (max 100, default 20) and offset to page through results.
{
  "filters": [
    { "field": "state_fp", "op": "eq", "value": "19" },
    { "field": "acres", "op": "gte", "value": 100 }
  ],
  "limit": 100,
  "offset": 200
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
filters
FilterItem · object[]
required
order
OrderItem · object
limit
integer
default:20
Required range: 1 <= x <= 100
offset
integer
default:0
Required range: x >= 0

Response

Successful Response

results
ParcelView · object[]
required
count
integer
required
limit
integer
required
offset
integer
required