Docs

Fieldgeist IDs

fieldgeist_id identifies a parcel; building_id groups the unit parcels of one building.

Every parcel Verify can match has a Fieldgeist ID. Store it with your own record of the property: it's the key for fetching the parcel again and for joining your data to later answers.

fieldgeist_idbuilding_id
IdentifiesOne parcel: a lot, a building on its own parcel, or one unit that is its own parcelA building whose units are separate parcels
Prefixadr_bld_
Exampleadr_01JA2Z3Y4X5W6V7T8S9R0QPNMAbld_01JA2Z3Y4X5W6V7T8S9R0QPNMC
Returned byLookup (top level and candidates), Lookup by IDLookup (top level and candidates), Lookup by ID
Fetch directlyGET /v1/verify/lookup/{fieldgeist_id}Not yet (422 unsupported_id_type)

Format

A prefix followed by a 26-character ULID in Crockford base32 (digits and uppercase letters without I, L, O and U). Treat IDs as opaque strings: compare them whole and don't parse the characters after the prefix.

fieldgeist_id vs building_id

  • A single-family home or any parcel without units has a fieldgeist_id and building_id: null.
  • In a condo building, each unit is its own parcel with its own fieldgeist_id, and all of them share one building_id.
  • When the building also has a parcel of its own, a lookup without a unit returns that parcel's fieldgeist_id and the units' shared building_id, with unit_required: true.
  • When the building has only unit parcels, a lookup without a unit returns fieldgeist_id: null, the building_id, and the units as candidates.

building_id lets you group units of one building without matching each unit. See Condos and units.

Fieldgeist IDs vs APNs

The apn is the county assessor's parcel number. It's useful for reading county records, but it's only unique within a county and its format varies by county. A Fieldgeist ID is unique across the whole index, has one format, and is the identifier the API takes back.

When parcels change

When a parcel is split or merged, its old ID is kept and marked superseded: Lookup by ID returns "status": "superseded" and the replacing IDs in superseded_by.

On this page