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_id | building_id | |
|---|---|---|
| Identifies | One parcel: a lot, a building on its own parcel, or one unit that is its own parcel | A building whose units are separate parcels |
| Prefix | adr_ | bld_ |
| Example | adr_01JA2Z3Y4X5W6V7T8S9R0QPNMA | bld_01JA2Z3Y4X5W6V7T8S9R0QPNMC |
| Returned by | Lookup (top level and candidates), Lookup by ID | Lookup (top level and candidates), Lookup by ID |
| Fetch directly | GET /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_idandbuilding_id: null. - In a condo building, each unit is its own parcel with its own
fieldgeist_id, and all of them share onebuilding_id. - When the building also has a parcel of its own, a lookup without a unit returns that parcel's
fieldgeist_idand the units' sharedbuilding_id, withunit_required: true. - When the building has only unit parcels, a lookup without a unit returns
fieldgeist_id: null, thebuilding_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.