Data dictionary
Every field a listing can carry, its type, where it comes from and how often it is populated across active listings. Empty means the broker did not publish it; we do not backfill from defaults.
| Field | Type | Description | Filled |
|---|---|---|---|
hash_id | string | Stable public id (20 hex chars). | 100% |
brokerage | object | Brokerage {public_id, name, website}. | 100% |
name | string | Listing title. | — |
description (fields=all) | string | Listing description (only with fields=all or fields=description). | — |
highlights (fields=all) | array | Bullet highlights from the listing page. | — |
address | string | Street address. | — |
city | string | City. | — |
state | string | Two-letter state. | 100% |
zip | string | ZIP code. | — |
county | string | County (subset of listings). | — |
county_fips | string | County FIPS (subset of listings). | — |
country | string | ISO country (US). | — |
lat | number | Latitude. | — |
lng | number | Longitude. | — |
listing_type | string | sale | lease | sale_lease | unknown (the broker did not state it). | 100% |
transaction_sale | boolean | True when for sale. | 100% |
transaction_lease | boolean | True when for lease. | 100% |
status | string | active | under_contract | sold | leased | withdrawn | closed. | — |
property_type | string | land | industrial | office | retail | multifamily | hospitality | special | other. | 100% |
property_subtype | string | Source subtype text. | — |
sale_ask_total | number | Asking sale price (USD). Null when undisclosed. | — |
sale_ask_psf | number | Asking price per building SF, derived. | — |
price_text | string | Price as written by the broker. | — |
price_upon_request | boolean | True when the price is on request / negotiable. | — |
cap_rate | number | Cap rate, percent. | — |
lease_rate_min | number | Lease rate minimum as published (unit not normalized). | — |
lease_rate_max | number | Lease rate maximum as published. | — |
lease_type | string | NNN, gross, … as published. | — |
building_sf | integer | Building square feet. | — |
land_acres | number | Land size in acres. | — |
year_built | integer | Year built. | — |
stories | integer | Stories. | — |
units | integer | Units. | — |
brokers | array | [{name, email, phone}] — email/phone on paid plans only. | — |
link | string | Listing page URL. | — |
brochure_link | string | Brochure / flyer PDF URL. | — |
photos (fields=all) | array | Photo URLs (fields=all). | — |
attributes (fields=all) | object | Source key/value attributes (fields=all). | — |
date_created | string | Created date on the source, when known. | — |
date_updated | string | Updated date on the source, when known. | — |
first_seen | string | First observed by ListingsFeed. | 100% |
last_seen | string | Last observed by ListingsFeed. | 100% |
updated_at | string | Last time the record changed here. | 100% |
is_active | boolean | False once the broker removed it. | 100% |
superseded_by | string | hash_id of the canonical record when this one was merged. | — |
Vocabularies
| property_type | land · industrial · office · retail · multifamily · hospitality · special · other. Mapped from each platform's own labels; the original wording is kept in property_subtype. |
|---|---|
| listing_type | sale · lease · sale_lease (broker offers both) · unknown (not stated on the source page; both transaction flags false, so transaction= filters exclude it). The boolean flags transaction_sale/transaction_lease are derived from it. |
| status | active · under_contract · sold · leased · withdrawn · closed, read from the listing title/badges where the broker states it. |
Normalization rules
- Price.
sale_ask_totalis numeric USD. Feeds often use 0, 1 or a small number as an "undisclosed" placeholder; anything under $1,000 is returned asnulland the broker's wording stays inprice_text.price_upon_requestis true when the text says on request / negotiable / call. - Size.
building_sfis the building;land_acresis the lot. Some platforms label lot square feet as "acres"; values over 5,000 "acres" are converted (÷43,560). The raw value and unit are kept inland_size_raw/land_size_unit_raw(fields=all). - Lease rates. Returned as published; units ($/SF/yr, $/SF/mo, $/mo) are not normalized in v1. Use
lease_typeandprice_textfor context. - Geography.
lat/lngcome from the broker's page or the platform's geocode.countyandcounty_fipsare being derived from coordinates and are populated for a subset; check the fill rate above. - Brokers. Up to 10 per listing, as published. Emails lower-cased; phones as written. Suppressed contacts are removed.
- Dates.
date_created/date_updatedare the source's own dates when it exposes them.first_seen/last_seenare ours.updated_atchanges only when content changes. - Identity.
hash_idis stable for the life of a listing. Duplicate detection (same address + type + size; sale and lease records for one property) keeps one canonical row and retires the rest withsuperseded_by.
Coverage today
Live counts appear here once the first publish run has landed; see GET /v1/stats.