Skip to main content

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. The flat shape is documented in the legacy tab; a field-by-field mapping between the two shapes is at the bottom of this guide. 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.
  • 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.
  • Coded fields — 15 coded fields use new code vocabularies. Do not decode v3 values against v2 tables; use the Property Feature Field Key. See Code vocabularies.
  • Bathrooms — bathroom counts are now decimals (2.5), not truncated integers. See Type changes.
The complete v3 field list is documented in the Property Data Schema (v3).

Use realieParcelId, not _id

_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.

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. 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):
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:

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
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.

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: 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 codesBE#### 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.
  • 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; 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.

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.
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); styleDesc carries the architectural-style code rather than description text (decode building.architecturalStyle with the Feature Field Key); and foundationType is not populated in the current data generation. The nested paths are the reliable source for all four.