Skip to main content
POST
Query Properties Post

Request format

Pass a filters array where each item specifies a field, an op (operator), and a value. All filters are AND’d together.
Use an array value for in, nin, and between:

Queryable fields

The fields below are the ones you can filter on. Everything else on a property comes back on every response but cannot be filtered. See Data fields.

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

ilike is a case-insensitive whole-word match, not a substring match. Searching SMIT will not find SMITH; it finds records containing the word SMIT. Multiple words are AND’d, so SMITH JOHN matches records containing both.

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

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

Looking up an APN

Counties print the same parcel number many ways. 0385, 385, 0-385 and 004-201-034-000 are all spellings you might find on a tax bill or a county portal. Send whichever one you have.
PropertyLayer reduces both your input and the stored value to one canonical form before comparing: separators and whitespace are dropped, letters are uppercased, and leading zeros are removed. So 0385, 385 and 0-385 all resolve to the same parcel. The comparison is exact, never fuzzy. A partial number does not return the parcels that happen to contain it, so a lookup gives you the parcel you asked for or nothing at all. eq, ne, in and nin all behave this way.
Interior zeros are part of the number and are preserved. Only leading padding is removed, so 100 and 1 remain different parcels.

Operators

Sorting

Pass an optional order object with a field and direction:

Pagination

Use limit (max 100, default 20) and offset to page through results. offset + limit must not exceed 10,000; beyond that, narrow the filters rather than paging deeper.

Tax assessor data

The county tax assessor record comes back as top-level sections on every property: ownership, situs_address, classification, land, building_summary, buildings, valuation_current, valuations, taxes, exemptions, transfers and derived. No flag required. These sections are not filterable, and a filter name is not always the path it reads back as: you filter on owner and read the result back as ownership.owner_name. See Data fields for the full field reference.

Building footprints

Set include_buildings: true to attach ORNL footprint geometry as a building_footprints array.
Each entry includes footprint geometry (geom), height, height_variance, and estimated_floors. The key is omitted entirely when include_buildings is false (the default).
include_buildings returns footprint geometry under building_footprints. Construction detail such as bedrooms, baths, roof, HVAC and year built lives in the assessor’s buildings array and building_summary, which are always present where an assessor record exists.

Response

Every endpoint returns the same object. The Property model has the full field reference: tax assessor sections, parcel geometry, and enrichments.

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
Maximum array length: 10
order
OrderItem · object | null
limit
integer
default:20
Required range: 1 <= x <= 100
offset
integer
default:0
Required range: 0 <= x <= 10000
include_buildings
boolean
default:false

Response

Successful Response

A Property object. See the Property model for the full response shape — tax assessor sections, parcel geometry, and enrichment fields.