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

# Migrating from v2 to v3

> Field-by-field guide to moving an integration from the v2 to the v3 data generation.

## TL;DR

**Most integrations run unchanged.** v3 serves the same endpoints and the same
authentication — there is no new URL, header, or version parameter. Existing
accounts receive the **v2-compatible flat shape** by default (the same field layout
as before, served from v3 data), so the large majority of fields return under
the same names with the same meanings.

**Two response shapes exist.** The response shape is an **account-level setting**
that every API key on the account inherits. The v3 standard — the default for new
accounts, and a one-way opt-in from the dashboard's **Usage** page for existing
accounts — is the **full nested parcel record**, matching bulk exports apart from delivery-specific fields (bulk records carry a per-load `_id`; API responses omit it)
and documented in the [v3 Property Data Schema](/api-reference/v3/property-data-schema).
The flat shape is documented in the
[legacy tab](/api-reference/property-data-schema); a field-by-field mapping
between the two shapes is at [the bottom of this guide](#flat-shape-to-nested-shape-mapping).
Everything below about field deltas applies to the flat shape; codes and values
are identical in both shapes.

What to check in your integration:

* **Identifiers** — if you persist `_id`, switch to `realieParcelId`. See
  [the warning below](#use-realieparcelid-not-_id).
* **Past-sale fields** — if you read any of the fixed "past/prior sale" scalar
  fields, switch to the `transfers` array, which now carries the full event
  history. See [Removed fields](#removed-fields-57).
* **Coded fields** — 15 coded fields use new code vocabularies. Do not decode
  v3 values against v2 tables; use the
  [Property Feature Field Key](/api-reference/v3/feature-key). See
  [Code vocabularies](#code-vocabularies).
* **Bathrooms** — bathroom counts are now decimals (`2.5`), not truncated
  integers. See [Type changes](#type-changes).

The complete v3 field list is documented in the
[Property Data Schema (v3)](/api-reference/v3/property-data-schema).

## Use realieParcelId, not \_id

<Warning>
  **`_id` is not stable across data releases.** `_id` values are regenerated on
  each data load. If you store `_id` and use it to re-fetch or join properties
  later, those references will break at the next release.

  **`realieParcelId` is the persistent parcel identifier.** It is new in v3,
  returned on every property, and stable across releases. Persist it instead of
  `_id`.
</Warning>

## Restored fields (16)

The v2 debt and ownership analytics — lien rollups, LTV/equity estimates, and
owner tenure counts — were modeled estimates, not recorded facts. They are carried forward under their **exact v2
field names** as **frozen estimates, captured May 2026** (the final v2 data
refresh). They do not update with new data releases, and they never mix into
the recorded mortgage and lien data.

| Field                     | What it is                                                                                                                                   |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `totalLienCount` \*       | Count of open liens                                                                                                                          |
| `totalLienBalance` \*     | Combined open lien balance                                                                                                                   |
| `lenderName` \*           | Lender on the most recent mortgage                                                                                                           |
| `totalFinancingHistCount` | Count of financing events on record                                                                                                          |
| `LTVCurrentEstCombined`   | Estimated current combined loan-to-value                                                                                                     |
| `LTVCurrentEstRange`      | Range band for the LTV estimate                                                                                                              |
| `equityCurrentEstBal`     | Estimated current equity balance                                                                                                             |
| `equityCurrentEstRange`   | Range band for the equity estimate                                                                                                           |
| `LTVPurchase`             | Loan-to-value at purchase                                                                                                                    |
| `ownershipStartDate`      | Date the current owner took possession (now returned as `YYYY-MM-DD`)                                                                        |
| `lengthOfResidenceMonths` | Months the current owner has held the property                                                                                               |
| `lengthOfResidenceCode`   | Coded length-of-residence band                                                                                                               |
| `ownerParcelCount`        | Parcels held by the same owner                                                                                                               |
| `ownerResCount`           | Residential parcels held by the same owner                                                                                                   |
| `ownerComCount`           | Commercial parcels held by the same owner                                                                                                    |
| `forecloseFileDate`       | Court filing date of the latest foreclosure record — not a frozen estimate; serves from `foreclosures[].fileDate` on legacy-restored records |

For parcels with no archived analytics, these keys are simply absent, matching
v2's absent-vs-null conventions. (`forecloseFileDate` is the exception in this
list: it is restored record data, not an archived estimate — pre-v3-era
foreclosure records are restored into the `foreclosures[]` array, and the flat
field serves from the latest record's `fileDate`.)

### Recorded facts win: the three starred fields

`totalLienCount`, `totalLienBalance`, and `lenderName` can also be derived
from recorded lien and mortgage records in the new data generation, and
**recorded facts win when known**:

* When lien records are known for a parcel — including a known-empty set,
  which counts as zero — `totalLienCount` and `totalLienBalance` are computed
  from the recorded liens (count, and sum of amounts). The frozen estimate
  fills in only when lien data is entirely unknown for the parcel.
* When mortgage records are known, `lenderName` comes from the most recent
  recorded mortgage. If that record carries no lender name, the field is
  omitted — a known record without a lender never falls back to the frozen
  estimate. The frozen value is used only when no mortgage data is known.

The other 12 frozen-estimate fields have no recorded-fact counterpart, so no
precedence applies: archived value present → returned; absent → key absent.

## Removed fields (56)

These v2 fields have no equivalent key in v3. They fall into a few families,
and every family has a replacement path except the last.

### Past-sale scalar slots → the `transfers` array

v2 copied individual past sale/transfer events into fixed per-event columns.
v3 returns the full event history instead: the same data (and more) is in the
`transfers` array. Page the array rather than reading fixed "past/prior"
slots.

Removed (31 fields): `assessorSaleBookNumber`, `assessorSaleDocumentNumber`,
`assessorSaleDocumentType`, `assessorSalePageNumber`, `assessorSalePrice`,
`assessorSalePriceCode`, `assessorSaleRecordingDate`, `pastBookSale`,
`pastBookTransfer`, `pastDistressedSale`, `pastDistressedTransfer`,
`pastDocumentNumberSale`, `pastDocumentNumberTransfer`,
`pastDocumentTypeSale`, `pastDocumentTypeTransfer`, `pastPageSale`,
`pastPageTransfer`, `pastPriceCodeSale`, `pastPriceCodeTransfer`,
`pastPriceSale`, `pastPriceTransfer`, `pastRealEstateOwnedSale`,
`pastRealEstateOwnedTransfer`, `pastRecoDateSale`, `pastRecordingDateSale`,
`pastSaleDateTransfer`, `priorSalesDate`, `saleBookLastSale`,
`saleDocumentNumberLastSale`, `saleDocumentTypeLastSale`, `salePageLastSale`

Also removed (5 last-sale/transfer scalars of the same flattening class):
`salePriceCodeLastSale`, `salePriceCodeLastTransfer`, `salePriceLastTransfer`,
`purchaseSaleDate`, `purchaseRecordingDate`. The latest event is covered by
the flat `transferDate`/`transferPrice` fields, and per-event codes by
`transfers[].saleCode`.

`transfers` is sorted **newest-first**, and each entry carries exactly these
11 keys (a key is absent when the source record has no value):

```json theme={null}
{
  "transferDate": "2024-01-05",
  "transferDateObject": "2024-01-05T00:00:00.000Z",
  "transferPrice": 2700000,
  "recordingDate": "2024-01-10",
  "transferDocNum": "2024R0119502",
  "transferDocType": "TT0001",
  "bookNum": "1234",
  "pageNum": "56",
  "grantee": "SMITH, JOHN",
  "qualified": true,
  "saleCode": "TQ0002"
}
```

The flat latest-sale fields (`transferDate`, `transferPrice`, and the other
latest-sale scalars) are always derived from the newest dated entry of
`transfers`, so the scalars and the array cannot disagree.

### Per-transfer deed flags

Removed (2): `distressedDeedTransfer`, `realEstateOwnedDeedTransfer` — flags
of the retired fixed transfer slots. The latest sale keeps its flat flags
(`distressedSale`, `realEstateOwnedPurchaseSale`); entries of the `transfers`
array do not carry per-event distressed/REO flags.

### Owner name splits

Removed (6): `owner1FirstName`, `owner1MiddleName`, `owner1LastName`,
`owner2FirstName`, `owner2MiddleName`, `owner2LastName`.

The new source delivers owner names as raw `LAST FIRST` strings (`ownerName`,
and now also `ownerName2`); there is no authoritative split today, so these
keys are absent (not empty-string). An owner-name parsing initiative may
restore them in a future release.

### Assessment component scalars

Removed (2): `assessedBuildingValue`, `assessedLandValue` — superseded by
`totalBuildingValue`/`totalLandValue` plus the full `assessments` history
array.

### Administrative fields

Removed (10): `citySection`, `countyUSPS`, `districtNum`, `jurisdiction`,
`legalUnit`, `ownerOriginCode`, `phaseNum`, `secTwnRng`, `siteId`, `tractNum`.

These convenience fields have no source in the new data generation, or have
structured equivalents:

| Removed           | Use instead                                                               |
| ----------------- | ------------------------------------------------------------------------- |
| `secTwnRng`       | `section`, `township`, `range`                                            |
| `tractNum`        | `siteCensusTract`                                                         |
| `countyUSPS`      | `county`                                                                  |
| `ownerOriginCode` | nothing — a constant-valued source artifact with zero information content |

### Moved to the nested shape: USPS carrier route

Not counted in the 57 — this one has a v3 home. Absent from the flat shape: `siteCarrierRoute`. The value lives in the
nested v3 record as `propertyLocation.siteCarrierRoute` (and in bulk
full-record exports); the flat compatibility layer does not carry it. To keep
reading it, use the nested shape or bulk data.

### Raw codes → descriptive fields

Alongside the removals above, v3 favors readable values over raw source codes
for a few characteristics: air conditioning arrives as the new boolean
`airConditioning`. Building condition and quality are integers on a 1–20 scale
in the nested record (`building.condition` / `building.quality`); the flat
slots `conditionDesc` and `gradeDesc` are declared but **not currently
emitted** — the scale has no label vocabulary yet.

## Type changes

* **`totalBathrooms` — integer → decimal.** After a bathroom-count
  data-quality improvement, fractional values (e.g. `2.5`) are now real JSON
  numbers. The same applies to the room-level bath fields (`fullBathrooms`,
  `halfBathrooms`).
* **`ownershipStartDate` — format.** Now returned as `YYYY-MM-DD` (v2
  returned `YYYYMMDD`).

## New fields worth adopting (32)

The headline additions:

* **`realieParcelId`** — the stable parcel identifier. Persist this, not
  `_id`.
* **`transfers`** — not new, but newly central: it now carries the full sale
  history that v2 spread across fixed past-sale slots, with the 11-key event
  shape shown above.
* **`airConditioning`** — boolean air-conditioning presence.
* **`conditionDesc` / `gradeDesc`** — declared but **not currently emitted**;
  read the nested `building.condition` / `building.quality` integers instead.

The full list of 32 fields absent from the v2 response:

* **Stable key:** `realieParcelId`
* **Identity / location:** `ownerName2`, `geometry`, `location`,
  `zipCodePlusFour`, `fullAddress`, `formattedAddress`
* **Aliases of kept fields:** `legalDescription` (= `legalDesc`), `lotNumber`
  (= `lotNum`), `blockNumber` (= `blockNum`)
* **Building:** `roomCount`, `unitCount`, `effectiveYearBuilt`,
  `fullBathrooms`, `halfBathrooms`, `airConditioning`, `styleDesc`,
  `conditionDesc`, `gradeDesc`
* **Land:** `depth`
* **Sale:** `qualified` — boolean qualification of the latest sale; also
  per-event on `transfers[]`
* **Valuation:** `compModelValue`, `compModelValueMin`, `compModelValueMax`,
  `compPpsf`, `compCount`, `compMaxDistMi`, `compWindowMo`,
  `compModelVersion`, `modelVersion`, `estimateAgreementPct`, and
  `modelConfidenceBucket`

<Note>
  **Internal model fields.** `modelConfidenceBucket` is internal-only and not
  returned by the public API. The v2-era model diagnostics
  (`modelValueStdDev`, `modelConfidence`, `modelDate`, `modelValueRange`) and
  `realieSquareFootage` likewise remain excluded from public responses —
  unchanged from v2, which excluded the same set.
</Note>

## Code vocabularies

**15 fields change vocabulary.** The keys are unchanged, but the values are
not the v2 letter codes — do not decode them against v2 tables. Decode every
value with the [Property Feature Field Key](/api-reference/v3/feature-key):

| Field                  | Decode table                                       |
| ---------------------- | -------------------------------------------------- |
| `wallType`             | [Feature Field Key](/api-reference/v3/feature-key) |
| `garageType`           | [Feature Field Key](/api-reference/v3/feature-key) |
| `basementType`         | [Feature Field Key](/api-reference/v3/feature-key) |
| `constructionType`     | [Feature Field Key](/api-reference/v3/feature-key) |
| `floorType`            | [Feature Field Key](/api-reference/v3/feature-key) |
| `poolCode`             | [Feature Field Key](/api-reference/v3/feature-key) |
| `roofType`             | [Feature Field Key](/api-reference/v3/feature-key) |
| `roofStyle`            | [Feature Field Key](/api-reference/v3/feature-key) |
| `lotCode`              | [Feature Field Key](/api-reference/v3/feature-key) |
| `buyerIDCode`          | [Feature Field Key](/api-reference/v3/feature-key) |
| `buyerVestingCode`     | [Feature Field Key](/api-reference/v3/feature-key) |
| `transfers[].saleCode` | [Feature Field Key](/api-reference/v3/feature-key) |
| `transferDocType`      | [Feature Field Key](/api-reference/v3/feature-key) |
| `styleDesc`            | [Feature Field Key](/api-reference/v3/feature-key) |
| `forecloseCode`        | [Feature Field Key](/api-reference/v3/feature-key) |

Notes:

* **`useCode` is unchanged** — the same 4-digit scheme as v2. A small number
  of v2 codes are retired by the new source: for example, in Florida the
  generic codes `4001` and `8017` are retired and those parcels are re-coded
  to specific successor codes.
* **`buyerIDCode` and `buyerVestingCode` carry Realie codes** — `BE####`
  buyer-entity codes and `BV####` title-vesting codes respectively, replacing
  the numeric source vocabularies.
* **`transferDocType` carries `TT####` deed-type codes** wherever the source's
  document type maps to the codebook. Source values that could not be confirmed
  against published documentation are omitted rather than shipped as a raw
  source token — see the disclosure in the
  [changelog](/api-reference/v3/changelog).
* **`transfers[].saleCode` uses the Realie code system** (`TQ####`
  sale-qualification codes, e.g. `TQ0002` = valid arm's-length sale,
  `TQ0001` = non-market or forced transfer) — one vocabulary across every
  sale event. The related `priceDerivation` codes (`PD####`, how the price
  figure was obtained) are included in bulk exports and in the nested v3
  response as `salesHistory[].priceDerivation`; the flat shape does not
  carry them.

## Data freshness

Sale histories now extend through **mid-May 2026 in most states**, via a
fast-path append of recent recordings. Appended recent events carry a reduced
record shape until they backfill in subsequent data releases:

* `qualified` is absent on nearly all events recorded after March 2026 (the
  qualification determination lags the recording), and seller (grantor) and
  title-company details are similarly not yet attached.
* `transfers[].saleCode` (`TQ####`) carries the qualification semantics —
  prefer it over `qualified` for recent events.
* `transferPrice` is sparse on recent events in non-disclosure states (for
  example Texas), where recorded documents do not carry a price.

## The code migration is complete

Every normalized coded field of both shapes now carries a value from **Realie's
own code system** — building and characteristic codes alongside the
sale-qualification and price-derivation codes (`TQ####`/`PD####`) that shipped
at launch. (Jurisdiction-issued fields — `taxRateCodeArea`/`taxDistrictCode`,
state and county land-use codes, and zoning codes — stay verbatim, with no
national decode table.) The complete
codebook is published in the
[Property Feature Field Key](/api-reference/v3/feature-key); re-decode any coded
values you persisted before this release.

From here the codebook is **append-only**: a published code id never changes
meaning and is never reused or renumbered. New codes join a family under the next
free number, and every addition is announced in the
[changelog](/api-reference/v3/changelog).

## Flat shape to nested shape mapping

If you are moving from the v2-compatible flat shape to the nested v3 shape, every
flat field maps to a nested path. "direct" means the value is identical; other
transforms describe how the flat value is derived from the nested record.

| v2-legacy field                   | v3 nested path                                                              | transform                                                                                                                                     |
| --------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| realieParcelId                    | realieParcelId                                                              | direct                                                                                                                                        |
| parcelId                          | parcelId                                                                    | direct                                                                                                                                        |
| state                             | state                                                                       | direct                                                                                                                                        |
| address                           | address                                                                     | direct                                                                                                                                        |
| zipCode                           | zipCode                                                                     | direct                                                                                                                                        |
| useCode                           | useCode                                                                     | direct                                                                                                                                        |
| county                            | propertyIdentification.county                                               | direct                                                                                                                                        |
| fipsState                         | countyFips                                                                  | slice: first 2 chars                                                                                                                          |
| fipsCounty                        | countyFips                                                                  | slice: chars 3+                                                                                                                               |
| state\_parcelId                   | state + parcelId                                                            | computed: `{state}-{parcelId}` concat                                                                                                         |
| state\_parcelIdSTD                | state + propertyIdentification.county + parcelId                            | computed: standardizeParcelId()                                                                                                               |
| addressFormal                     | propertyLocation.addressFormal                                              | direct                                                                                                                                        |
| formattedAddress                  | propertyLocation.addressFormal                                              | direct (alias)                                                                                                                                |
| addressFull                       | propertyLocation.addressFull                                                | direct                                                                                                                                        |
| addressFullUSPS                   | propertyLocation.addressFullUSPS                                            | direct                                                                                                                                        |
| fullAddress                       | propertyLocation.fullAddress ?? propertyLocation.addressFull                | fallback chain                                                                                                                                |
| addressLine1                      | propertyLocation.addressLine1                                               | direct                                                                                                                                        |
| addressLine2                      | propertyLocation.addressLine2                                               | direct                                                                                                                                        |
| addressRaw                        | propertyLocation.addressRaw ?? propertyLocation.rawAddress                  | fallback chain                                                                                                                                |
| addressUnit                       | propertyLocation.addressUnit                                                | direct                                                                                                                                        |
| unitNumber                        | propertyLocation.unitNumber                                                 | direct                                                                                                                                        |
| unitNumberStripped                | propertyLocation.unitNumberStripped                                         | direct                                                                                                                                        |
| street                            | propertyLocation.street                                                     | direct                                                                                                                                        |
| streetNumber                      | propertyLocation.streetNumber                                               | direct                                                                                                                                        |
| streetName                        | propertyLocation.streetName                                                 | direct                                                                                                                                        |
| streetType                        | propertyLocation.streetType                                                 | direct                                                                                                                                        |
| streetDirectionPrefix             | propertyLocation.streetDirectionPrefix                                      | direct                                                                                                                                        |
| streetDirectionSuffix             | propertyLocation.streetDirectionSuffix                                      | direct                                                                                                                                        |
| city                              | propertyLocation.city                                                       | direct                                                                                                                                        |
| cityUSPS                          | propertyLocation.cityUSPS                                                   | direct                                                                                                                                        |
| zipCodePlusFour                   | propertyLocation.zipCodePlusFour                                            | direct                                                                                                                                        |
| siteCensusTract                   | propertyLocation.censusTract                                                | direct (rename)                                                                                                                               |
| latitude                          | latitude                                                                    | direct, gated: finite non-zero lat/lon pair else omitted                                                                                      |
| longitude                         | longitude                                                                   | direct, same coordinate gate                                                                                                                  |
| location                          | location                                                                    | direct, same coordinate gate                                                                                                                  |
| geometry                          | geometry                                                                    | direct                                                                                                                                        |
| residential                       | propertyClassification.residential ?? useCode                               | fallback: useCode numeric in 1000–1099                                                                                                        |
| condo                             | propertyClassification.condo ?? useCode                                     | fallback: useCode === 1004                                                                                                                    |
| zoningCode                        | zoningInfo.zoningCode                                                       | direct                                                                                                                                        |
| neighborhood                      | propertyClassification.neighborhood                                         | direct                                                                                                                                        |
| ownerName                         | propertyIdentification.currentOwner.ownerName                               | direct (raw "LAST FIRST"; no splits)                                                                                                          |
| ownerName2                        | propertyIdentification.currentOwner.ownerName2                              | direct                                                                                                                                        |
| ownerAddressLine1                 | propertyIdentification.currentOwner.ownerStreet                             | direct                                                                                                                                        |
| mailerAddress                     | propertyIdentification.currentOwner.ownerStreet                             | direct (alias)                                                                                                                                |
| ownerAddressFull                  | propertyIdentification.currentOwner.ownerFullAddress                        | direct                                                                                                                                        |
| ownerCity                         | propertyIdentification.currentOwner.ownerCity                               | direct                                                                                                                                        |
| mailingCity                       | propertyIdentification.currentOwner.ownerCity                               | direct (alias)                                                                                                                                |
| ownerState                        | propertyIdentification.currentOwner.ownerState                              | direct                                                                                                                                        |
| mailingState                      | propertyIdentification.currentOwner.ownerState                              | direct (alias)                                                                                                                                |
| ownerZipCode                      | propertyIdentification.currentOwner.ownerZipCode                            | direct                                                                                                                                        |
| mailingZip5                       | propertyIdentification.currentOwner.ownerZipCode                            | direct (alias)                                                                                                                                |
| ownerZipCodePlusFour              | propertyIdentification.currentOwner.ownerZipCodePlusFour                    | direct                                                                                                                                        |
| mailingZip4                       | propertyIdentification.currentOwner.ownerZipCodePlusFour                    | direct (alias)                                                                                                                                |
| yearBuilt                         | buildingInformation.buildings\[].actualYearBuilt                            | primary building (buildingNumber===1, else index 0)                                                                                           |
| effectiveYearBuilt                | buildingInformation.buildings\[].effectiveYearBuilt                         | primary building                                                                                                                              |
| stories                           | buildingInformation.buildings\[].stories                                    | primary building                                                                                                                              |
| livingArea                        | buildingInformation.buildings\[].livingArea                                 | primary building                                                                                                                              |
| buildingArea                      | buildingInformation.buildings\[].buildingArea                               | primary building                                                                                                                              |
| realieSquareFootage               | buildings\[].livingArea ?? buildings\[].buildingArea                        | primary building, fallback chain                                                                                                              |
| totalBedrooms                     | buildingInformation.buildings\[].totalBedrooms                              | sum across buildings                                                                                                                          |
| totalBathrooms                    | buildingInformation.buildings\[].totalBathrooms                             | sum across buildings                                                                                                                          |
| fullBathrooms                     | buildingInformation.buildings\[].fullBathrooms                              | sum across buildings                                                                                                                          |
| halfBathrooms                     | buildingInformation.buildings\[].halfBathrooms                              | sum across buildings                                                                                                                          |
| fireplaceCount                    | buildingInformation.buildings\[].fireplaceCount                             | sum across buildings                                                                                                                          |
| garageCount                       | buildingInformation.buildings\[].garageCount                                | sum across buildings                                                                                                                          |
| fireplace                         | buildingInformation.buildings\[].fireplace                                  | any building true (else false if any false, else omitted)                                                                                     |
| garage                            | buildingInformation.buildings\[].garage                                     | any building true                                                                                                                             |
| pool                              | buildingInformation.buildings\[].pool                                       | any building true                                                                                                                             |
| poolCode                          | building.pool.type                                                          | main building (`PT####`)                                                                                                                      |
| garageType                        | building.parking                                                            | main building (`PK####`)                                                                                                                      |
| airConditioning                   | cooling.equipment                                                           | main building; boolean from code (false iff the code means NONE)                                                                              |
| wallType                          | building.exteriorWall                                                       | main building (`EW####`)                                                                                                                      |
| roofType                          | building.roofMaterial                                                       | main building (`RM####`)                                                                                                                      |
| roofStyle                         | building.roofStyle                                                          | main building (`RS####`)                                                                                                                      |
| floorType                         | building.flooring                                                           | main building (`FL####`)                                                                                                                      |
| basementType                      | building.basement                                                           | main building (`BS####`)                                                                                                                      |
| foundationType                    | building.foundation                                                         | main building (`FN####`)                                                                                                                      |
| constructionType                  | building.construction                                                       | main building (`CT####`)                                                                                                                      |
| styleDesc                         | building.architecturalStyle                                                 | main building (`AS####`)                                                                                                                      |
| conditionDesc                     | building.condition                                                          | not emitted by the compatibility layer — the nested value is an integer 1–20 with no label vocabulary; read `building.condition`              |
| gradeDesc                         | building.quality                                                            | not emitted by the compatibility layer — the nested value is an integer 1–20 with no label vocabulary; read `building.quality`                |
| roomCount                         | roomInformation.roomCount                                                   | direct                                                                                                                                        |
| buildingCount                     | generalInformation.numberOfBuildings ?? buildings.length                    | fallback: array length                                                                                                                        |
| unitCount                         | generalInformation.numberOfUnits                                            | direct                                                                                                                                        |
| acres                             | landInformation.acres ?? .deedAcres ?? .calculatedAcres                     | fallback chain                                                                                                                                |
| landArea                          | landInformation.totalLandArea                                               | direct                                                                                                                                        |
| lotSizeArea                       | landInformation.totalLandArea                                               | direct (alias)                                                                                                                                |
| frontage                          | landInformation.lotFrontage                                                 | direct                                                                                                                                        |
| depth                             | landInformation.lotDepth                                                    | direct                                                                                                                                        |
| depthSize                         | landInformation.lotDepth                                                    | direct (alias)                                                                                                                                |
| legalDesc                         | legalInformation.legalDescription                                           | direct                                                                                                                                        |
| legalDescription                  | legalInformation.legalDescription                                           | direct (alias)                                                                                                                                |
| subdivision                       | legalInformation.subdivisionName                                            | direct                                                                                                                                        |
| blockNum                          | legalInformation.blockNumber                                                | direct                                                                                                                                        |
| blockNumber                       | legalInformation.blockNumber                                                | direct (alias)                                                                                                                                |
| lotNum                            | legalInformation.lotNumber                                                  | direct                                                                                                                                        |
| lotNumber                         | legalInformation.lotNumber                                                  | direct (alias)                                                                                                                                |
| lotCode                           | legalInformation.lotCode                                                    | direct                                                                                                                                        |
| landLot                           | legalInformation.landLot                                                    | direct                                                                                                                                        |
| section                           | legalInformation.section                                                    | direct                                                                                                                                        |
| township                          | legalInformation.township                                                   | direct                                                                                                                                        |
| range                             | legalInformation.range                                                      | direct                                                                                                                                        |
| totalMarketValue                  | valuationInformation.totalMarketValue                                       | direct                                                                                                                                        |
| totalAssessedValue                | valuationInformation.totalAssessedValue                                     | direct                                                                                                                                        |
| totalBuildingValue                | valuationInformation.totalBuildingValue                                     | direct                                                                                                                                        |
| totalLandValue                    | valuationInformation.totalLandValue                                         | direct                                                                                                                                        |
| assessedYear                      | valuationInformation.assessmentYear                                         | direct                                                                                                                                        |
| marketValueYear                   | assessmentHistory\[].marketValueYear ?? valuationInformation.assessmentYear | max-assessmentYear history item, then fallback                                                                                                |
| assessments                       | assessmentHistory\[]                                                        | mapped array (omitted if empty)                                                                                                               |
| assessments\[].assessedYear       | assessmentHistory\[].assessmentYear                                         | direct                                                                                                                                        |
| assessments\[].marketValueYear    | assessmentHistory\[].marketValueYear                                        | direct                                                                                                                                        |
| assessments\[].totalAssessedValue | assessmentHistory\[].assessedTotalValue                                     | direct                                                                                                                                        |
| assessments\[].totalBuildingValue | assessmentHistory\[].assessedBuildingValue                                  | direct                                                                                                                                        |
| assessments\[].totalLandValue     | assessmentHistory\[].assessedLandValue                                      | direct                                                                                                                                        |
| assessments\[].totalMarketValue   | assessmentHistory\[].assessedMarketValue                                    | direct                                                                                                                                        |
| taxValue                          | taxInformation.taxAmount                                                    | direct                                                                                                                                        |
| taxYear                           | taxInformation.taxYear                                                      | direct                                                                                                                                        |
| taxRateCodeArea                   | taxInformation.taxDistrictCode                                              | direct                                                                                                                                        |
| transferDate                      | salesHistory\[].saleDate                                                    | most recent sale (max saleDate, ties: higher salePrice, then lower index); date → YYYY-MM-DD string                                           |
| transferDateObject                | salesHistory\[].saleDate                                                    | most recent sale; Date object                                                                                                                 |
| transferPrice                     | salesHistory\[].salePrice                                                   | most recent sale                                                                                                                              |
| recordingDate                     | salesHistory\[].recordingDate                                               | most recent sale                                                                                                                              |
| transferDocNum                    | salesHistory\[].saleDocumentNumber                                          | most recent sale                                                                                                                              |
| transferDocType                   | salesHistory\[].saleDocumentType                                            | most recent sale                                                                                                                              |
| bookNum                           | salesHistory\[].bookNumber                                                  | most recent sale                                                                                                                              |
| pageNum                           | salesHistory\[].pageNumber                                                  | most recent sale                                                                                                                              |
| grantee                           | salesHistory\[].grantee                                                     | most recent sale                                                                                                                              |
| qualified                         | salesHistory\[].armsLength                                                  | most recent sale; the arm's-length boolean. Absent on nearly all events recorded after March 2026 — read `qualification` (`TQ####`) for those |
| buyerIDCode                       | salesHistory\[].buyerEntityType                                             | most recent sale (`BE####`)                                                                                                                   |
| buyerVestingCode                  | salesHistory\[].buyerVesting                                                | most recent sale (`BV####`)                                                                                                                   |
| distressedSale                    | salesHistory\[].distressedSale                                              | most recent sale; boolean → 1/0                                                                                                               |
| realEstateOwnedPurchaseSale       | salesHistory\[].realEstateOwned                                             | most recent sale; boolean → 1/0                                                                                                               |
| transfers                         | salesHistory\[]                                                             | mapped array, sorted newest-first (omitted if empty)                                                                                          |
| transfers\[].bookNum              | salesHistory\[].bookNumber                                                  | direct                                                                                                                                        |
| transfers\[].grantee              | salesHistory\[].grantee                                                     | direct                                                                                                                                        |
| transfers\[].pageNum              | salesHistory\[].pageNumber                                                  | direct                                                                                                                                        |
| transfers\[].qualified            | salesHistory\[].armsLength                                                  | the arm's-length boolean. Absent on nearly all events recorded after March 2026 — read `qualification` (`TQ####`) for those                   |
| transfers\[].recordingDate        | salesHistory\[].recordingDate                                               | direct                                                                                                                                        |
| transfers\[].saleCode             | salesHistory\[].qualification                                               | direct (`TQ####`); absent when the source recorded no qualification signal                                                                    |
| transfers\[].transferDate         | salesHistory\[].saleDate                                                    | date → YYYY-MM-DD string                                                                                                                      |
| transfers\[].transferDateObject   | salesHistory\[].saleDate                                                    | Date object                                                                                                                                   |
| transfers\[].transferDocNum       | salesHistory\[].saleDocumentNumber                                          | direct                                                                                                                                        |
| transfers\[].transferDocType      | salesHistory\[].saleDocumentType                                            | direct                                                                                                                                        |
| transfers\[].transferPrice        | salesHistory\[].salePrice                                                   | direct                                                                                                                                        |
| totalLienCount                    | liens\[] (length) → legacyDebtEstimate.lienCount                            | computed: array count; frozen-estimate fallback only when liens array absent (\[] = known-zero)                                               |
| totalLienBalance                  | liens\[].amount → legacyDebtEstimate.lienBalance                            | computed: sum of amounts; same fallback rule                                                                                                  |
| lenderName                        | mortgages\[].lender → legacyDebtEstimate.lenderName                         | most recent mortgage (by recordingDate); fallback only when mortgages array absent                                                            |
| forecloseCode                     | foreclosures\[].recordType                                                  | most recent foreclosure (by recordingDate)                                                                                                    |
| forecloseRecordDate               | foreclosures\[].recordingDate                                               | most recent foreclosure                                                                                                                       |
| forecloseFileDate                 | foreclosures\[].fileDate                                                    | most recent foreclosure; populated on legacy-restored records                                                                                 |
| forecloseCaseNum                  | foreclosures\[].caseNumber                                                  | most recent foreclosure                                                                                                                       |
| auctionDate                       | foreclosures\[].auctionDate                                                 | most recent foreclosure; date → YYYY-MM-DD string                                                                                             |
| totalFinancingHistCount           | legacyDebtEstimate.financingCount                                           | direct (frozen May-2026 estimate)                                                                                                             |
| LTVCurrentEstCombined             | legacyDebtEstimate.ltvCurrentEst                                            | direct (frozen estimate)                                                                                                                      |
| LTVCurrentEstRange                | legacyDebtEstimate.ltvCurrentEstRange                                       | direct (frozen estimate)                                                                                                                      |
| equityCurrentEstBal               | legacyDebtEstimate.equityCurrentEst                                         | direct (frozen estimate)                                                                                                                      |
| equityCurrentEstRange             | legacyDebtEstimate.equityCurrentEstRange                                    | direct (frozen estimate)                                                                                                                      |
| LTVPurchase                       | legacyDebtEstimate.ltvPurchase                                              | direct (frozen estimate)                                                                                                                      |
| ownershipStartDate                | legacyOwnershipSummary.ownershipStartDate                                   | date → YYYY-MM-DD string                                                                                                                      |
| lengthOfResidenceMonths           | legacyOwnershipSummary.lengthOfResidenceMonths                              | direct (frozen estimate)                                                                                                                      |
| lengthOfResidenceCode             | legacyOwnershipSummary.lengthOfResidenceCode                                | direct (frozen estimate)                                                                                                                      |
| ownerParcelCount                  | legacyOwnershipSummary.ownerParcelCount                                     | direct (frozen estimate)                                                                                                                      |
| ownerResCount                     | legacyOwnershipSummary.ownerResCount                                        | direct (frozen estimate)                                                                                                                      |
| ownerComCount                     | legacyOwnershipSummary.ownerComCount                                        | direct (frozen estimate)                                                                                                                      |
| ownerOriginCode                   | —                                                                           | no v3 source: the underlying member is removed (see the [changelog](/api-reference/v3/changelog))                                             |
| modelValue                        | realieValuation.ml.value                                                    | direct                                                                                                                                        |
| modelValueMin                     | realieValuation.ml.low                                                      | direct                                                                                                                                        |
| modelValueMax                     | realieValuation.ml.high                                                     | direct                                                                                                                                        |
| modelValueStdDev                  | realieValuation.ml.stdDev                                                   | direct                                                                                                                                        |
| modelConfidence                   | realieValuation.ml.confidence                                               | direct                                                                                                                                        |
| modelValueRange                   | realieValuation.ml.high − realieValuation.ml.low                            | computed: high minus low                                                                                                                      |
| modelConfidenceBucket             | realieValuation.ml.confidenceBucket                                         | direct                                                                                                                                        |
| modelVersion                      | realieValuation.ml.version                                                  | direct                                                                                                                                        |
| modelDate                         | realieValuation.date                                                        | direct                                                                                                                                        |
| compModelValue                    | realieValuation.comp.value                                                  | direct                                                                                                                                        |
| compModelValueMin                 | realieValuation.comp.low                                                    | direct                                                                                                                                        |
| compModelValueMax                 | realieValuation.comp.high                                                   | direct                                                                                                                                        |
| compPpsf                          | realieValuation.comp.ppsf                                                   | direct                                                                                                                                        |
| compCount                         | realieValuation.comp.count                                                  | direct                                                                                                                                        |
| compMaxDistMi                     | realieValuation.comp.maxDistMi                                              | direct                                                                                                                                        |
| compWindowMo                      | realieValuation.comp.windowMo                                               | direct                                                                                                                                        |
| compModelVersion                  | realieValuation.comp.version                                                | direct                                                                                                                                        |
| estimateAgreementPct              | realieValuation.ml.value + realieValuation.comp.value                       | computed: \|ml − comp\| / mean(ml, comp), only when both present and sum > 0                                                                  |

<Note>
  **Current flat-shape caveats.** Four flat-shape fields have known issues in the
  current release, tracked for an upcoming fix: `conditionDesc` and `gradeDesc` do
  not currently emit (the underlying values are the integer 1–20 scales at
  `building.condition` and `building.quality` — see
  [Ordinal scales](/api-reference/v3/feature-key#ordinal-scales-and-numeric-quantities));
  `styleDesc` carries the architectural-style **code** rather than description text
  (decode `building.architecturalStyle` with the
  [Feature Field Key](/api-reference/v3/feature-key)); and `foundationType` is not
  populated in the current data generation. The nested paths are the reliable
  source for all four.
</Note>
