{
"id": "<string>",
"market": "<string>",
"distance_miles": 123,
"address": {
"street": "<string>",
"unit": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"county_fips": "<string>",
"apn": "<string>",
"latitude": 0,
"longitude": 0,
"census_tract": "<string>",
"school_district": "<string>"
},
"general": {
"property_type_category": "<string>",
"property_type_detail": "<string>",
"land_use_code": "<string>",
"vacant": true,
"mailing_address_vacant": true,
"parcel_count": 0
},
"building": {
"bedrooms": 0,
"bathrooms": 123,
"sqft": 0,
"total_building_sqft": 0,
"year_built": 0,
"effective_year_built": 0,
"stories": 123,
"pool": true,
"garage_spaces": 0,
"building_condition": "<string>",
"construction_type": "<string>",
"building_count": 0,
"unit_count": 0,
"fireplace_count": 0,
"roof_type": "<string>",
"heat_source": "<string>",
"ac_source": "<string>"
},
"lot": {
"lot_sqft": 0,
"lot_acres": 123,
"zoning_code": "<string>",
"subdivision": "<string>",
"section_township_range": "<string>"
},
"owner": {
"owner_occupied": true,
"absentee": true,
"is_trust": true,
"is_public": true,
"held_since": "<string>",
"mailing_state": "<string>",
"profile": {
"as_of": "<string>",
"properties_count": 0,
"total_equity": 0,
"total_estimated_value": 0,
"mortgages_count": 0,
"mortgages_total_balance": 0,
"average_purchase_price": 0,
"average_year_built": 0
}
},
"sale": {
"last_sale_date": "<string>",
"last_sale_recording_date": "<string>",
"last_sale_price": 0,
"last_sale_document_type": "<string>",
"last_sale_transaction_type": "<string>",
"last_sale_price_per_sqft": 123,
"last_sale_mortgage_amount": 0,
"last_sale_lender": "<string>",
"cash_sale_proxy": true,
"prior_sale_date": "<string>",
"prior_sale_price": 0,
"last_purchase_date": "<string>",
"last_purchase_price": 0
},
"tax": {
"assessed_total": 0,
"assessed_land": 0,
"assessed_improvement": 0,
"assessment_year": 0,
"market_value_total": 0,
"tax_amount": 0,
"tax_year": 0,
"tax_delinquent_year": 0,
"tax_exemptions": [
"<string>"
]
},
"listing": {
"status": "<string>",
"status_category": "<string>",
"price": 0,
"listed_on": "<string>",
"status_updated_on": "<string>",
"sold_on": "<string>",
"sold_price": 0,
"is_rental": true,
"mls_number": "<string>",
"brokerage": "<string>"
},
"valuation": {
"as_of": "<string>",
"estimated_value": 0,
"range_low": 0,
"range_high": 0,
"confidence": 123,
"avm_date": "<string>",
"equity_balance": 0,
"equity_percent": 123,
"ltv": 123
},
"financing": {
"as_of": "<string>",
"open_lien_count": 0,
"open_lien_balance": 0,
"first_lien_lender": "<string>",
"first_lien_rate": 123,
"first_lien_balance": 0,
"has_heloc": true,
"cash_purchase": true,
"free_and_clear": true,
"involuntary_lien_count": 0,
"last_mortgage_recording_date": "<string>",
"last_mortgage_lender": "<string>",
"last_mortgage_amount": 0,
"last_mortgage_rate": 123
},
"permits": {
"as_of": "<string>",
"n_permits": 0,
"n_permits_24m": 0,
"last_permit_issue_date": "<string>",
"n_open_permits_12m": 0,
"major_work_36m": true,
"tags_24m": [
"<string>"
],
"job_value_24m": 0
},
"history": {
"first_week": "<string>",
"last_week": "<string>",
"n_events": 0,
"owner_changes_3y": 0,
"last_owner_change": "<string>",
"listing_cycles_1y": 0,
"price_cuts_current_listing": 0,
"last_delist": "<string>",
"vacant_since": "<string>",
"delinquent_since": "<string>",
"last_new_mortgage": "<string>"
},
"quicklists": [
"<string>"
]
}The parcel search row
One parcel in a search result: the address and assessor blocks always, the other blocks as the datasets ask.
POST /v1/properties/search. id is the same prop_
id that every other property route takes. So from a row you can open
the parcel, its
financing,
its permits or its
history directly.
Which blocks are on a row
address, general, building and lot are always there. Everything else is a dataset you ask for, and a
block you did not ask for is null:
| Block | Dataset | What it is |
|---|---|---|
owner | owner | The current owner: the facts. This host never names the holder. |
owner.profile | owner_profile | The owner’s portfolio across every property they hold, from the latest weekly delivery. |
sale | sale | The last and prior sale as the deed feed summarises them, plus the registry’s own last purchase. |
tax | tax | Assessment and tax from the county roll. |
listing | listing | The latest MLS record the feed knows. |
valuation | valuation | The automated valuation, equity and loan-to-value. Dated. |
financing | financing | The financing summary: open liens, the senior lien, the last mortgage. Dated. |
permits | permits | The permit aggregates, not the permits themselves. |
history | history | The history summary, inside the covered ZIPs only. |
quicklists | quicklists | Every quicklist name this parcel matches. |
summary.datasets echoes what the rows carry, so read that first.
The fields a reader misreads
- Null against 0.
open_lien_count: 0means the slice has a row for the parcel, and that row records zero open liens. A nullfinancingblock means the slice has no row for the parcel.last_sale_priceis null when the deed carries no price, never 0. Money is whole dollars throughout. cash_sale_proxyis a proxy and says so. It is true when the last sale carries a price and no purchase mortgage is on record with it. That is the best available evidence of a cash sale, not a fact from the deed. Thecash-buyerquicklist and thesale.cash_salefilter read it. It is null on every parcel of a market whose delivery records a purchase mortgage on fewer than one priced last sale in five.meta.coverage[].parcel.sale_mortgage_measuredis false there, and the quicklist and the filter answer 422cash_sale_unavailable, not a page of every priced sale.free_and_clearis the same shape: zero open liens at the slice date. That is a statement about the recorder’s file onmeta.coverage[].parcel.financing.as_of.owner_occupiedandabsenteecome from the mailing address on the county roll, not from a visit to the house. Both are null where the roll does not say.held_sinceis the ownership clock. Every “held ten years” rule reads it: thelong-holdandtired-landlordquicklists, and the one-year floor offree-and-clear. The two quicklists measure it against the market’sdata_end.free-and-clearmeasures it against the slice datefinancing_as_of. No rule measures it against today.distance_milesis null unless the search had a point or aproperty_id.
Dated blocks
valuation and financing are a snapshot valued at meta.coverage[].parcel.financing.as_of, and any response that
carries them lists them in meta.dated[]. This stamp exists to prevent one mistake: a comparison of a dated equity
figure with a current list price. Dated data explains the rule.
Contact data
This host does not serveowner.names or owner.mailing: the owner block carries no such keys.
It serves owner.mailing_state, because a state is not an identity. The out-of-state-owner and in-state-absentee
quicklists read it.One parcel of a search result: the address and assessor blocks always, the other blocks when datasets names them.
Parcel id, the key to every other property route.
^prop_[0-9a-f]{32}$The market the parcel belongs to.
Miles from the point or the property_id centre. Null without one.
The situs address and location keys of a parcel.
Show child attributes
Show child attributes
Classification and occupancy flags.
Show child attributes
Show child attributes
The structure as the assessor records it.
Show child attributes
Show child attributes
The lot and its legal description keys.
Show child attributes
Show child attributes
Null when you did not request the owner dataset.
Show child attributes
Show child attributes
Null when you did not request the sale dataset.
Show child attributes
Show child attributes
Null when you did not request the tax dataset.
Show child attributes
Show child attributes
Null when you did not request the listing dataset, or the parcel carries no MLS record.
Show child attributes
Show child attributes
Dated. Null when you did not request it, or the slice carries no AVM for the parcel.
Show child attributes
Show child attributes
Dated. Null when you did not request it, or the slice carries no row for the parcel.
Show child attributes
Show child attributes
Null when you did not request it, or the parcel carries no permit.
Show child attributes
Show child attributes
Null when you did not request it, or the parcel is outside the history lake's ZIP set.
Show child attributes
Show child attributes
Every quicklist the parcel matches, when you requested the quicklists dataset. Null otherwise.
Was this page helpful?