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

# The parcel search row

> One parcel in a search result: the address and assessor blocks always, the other blocks as the datasets ask.

One row of [`POST /v1/properties/search`](/api-reference/endpoints/properties-search). `id` is the same `prop_`
id that every other property route takes. So from a row you can open
[the parcel](/api-reference/endpoints/properties-get), its
[financing](/api-reference/endpoints/properties-financing),
its [permits](/api-reference/endpoints/properties-permits) or its
[history](/api-reference/endpoints/properties-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.                                                        |

**A null block is never "nothing found".** It means one of two things: you did not ask for the dataset, or this
parcel has no row in that sidecar. `summary.datasets` echoes what the rows carry, so read that first.

## The fields a reader misreads

* **Null against 0.** `open_lien_count: 0` means the slice has a row for the parcel, and that row records zero open
  liens. A null `financing` block means the slice has no row for the parcel. `last_sale_price` is null when the deed
  carries no price, never 0. Money is whole dollars throughout.
* **`cash_sale_proxy` is 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. The
  `cash-buyer` quicklist and the `sale.cash_sale` filter 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_measured` is false there, and the quicklist and the filter answer 422
  `cash_sale_unavailable`, not a page of every priced sale.
* **`free_and_clear` is the same shape**: zero open liens at the slice date. That is a statement about the recorder's
  file on `meta.coverage[].parcel.financing.as_of`.
* **`owner_occupied` and `absentee` come 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_since`** is the ownership clock. Every "held ten years" rule reads it: the `long-hold` and `tired-landlord`
  quicklists, and the one-year floor of `free-and-clear`. The two quicklists measure it against the market's
  `data_end`. `free-and-clear` measures it against the slice date `financing_as_of`. No rule measures it against
  today.
* **`distance_miles`** is null unless the search had a point or a `property_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](/guides/concepts/dated-data) explains the rule.

## Contact data

This host does not serve `owner.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.


## Related topics

- [Search parcels](/api-reference/endpoints/properties-search.md)
- [New construction near here](/guides/walkthroughs/new-construction.md)
- [The Financing object](/api-reference/objects/financing.md)
- [The Listing cycle object](/api-reference/objects/listing-cycle.md)
- [The Permit object](/api-reference/objects/permit.md)
