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 torealieParcelId. See the warning below. - Past-sale fields — if you read any of the fixed “past/prior sale” scalar
fields, switch to the
transfersarray, 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.
Use realieParcelId, not _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 —
totalLienCountandtotalLienBalanceare 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,
lenderNamecomes 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.
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):
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 booleanairConditioning. 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 asYYYY-MM-DD(v2 returnedYYYYMMDD).
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 nestedbuilding.condition/building.qualityintegers instead.
- 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 ontransfers[] - Valuation:
compModelValue,compModelValueMin,compModelValueMax,compPpsf,compCount,compMaxDistMi,compWindowMo,compModelVersion,modelVersion,estimateAgreementPct, andmodelConfidenceBucket
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:
useCodeis 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 codes4001and8017are retired and those parcels are re-coded to specific successor codes.buyerIDCodeandbuyerVestingCodecarry Realie codes —BE####buyer-entity codes andBV####title-vesting codes respectively, replacing the numeric source vocabularies.transferDocTypecarriesTT####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[].saleCodeuses 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 relatedpriceDerivationcodes (PD####, how the price figure was obtained) are included in bulk exports and in the nested v3 response assalesHistory[].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:qualifiedis 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 overqualifiedfor recent events.transferPriceis 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.