Commercial property listings from Crexi with address, county, asking price, coordinates and the listing broker — and paywall placeholders dropped instead of passed through.
Crexi's paywalled details entries arrive as strings of asterisks ("Year Built": "****"),
not nulls. Measured over 12 retail listings on 2026-09-07: Year Built masked on 9 of 9 present,
APN on 6 of 6, Parking / Tenancy / Units / Cap Rate / Price per SqFt on every occurrence. They
are dropped rather than passed through, because **** survives an is-not-null filter.
The API refuses offset + count >= 1500, so no query can reach past 1,499 rows of a catalogue
of 242,488. A run that hits the ceiling says so next to Crexi's own totalCount.
isLease and askingPriceFrom/To are accepted and ignored (total unchanged at 242,488), so
price is filtered client-side and no lease/sale split is advertised.
assert_ok + assert_not_bounced on every response, and a source_changed notice when the
envelope loses its data key — the incumbent in this lane has been returning zero properties
on SUCCEEDED runs since a site change.
Property-type input validated against Crexi's own enum, which 400s on an unknown value.