Base URL
All API requests use the following base URL:Authentication
Free-tier endpoints need no key. For paid endpoints and higher limits, include your API key in theAuthorization header:
Response format
JSON data endpoints return a consistent envelope:GET /health returns a bare {status, timestamp, checks} object, /photos/{key} returns image bytes, the streaming endpoints (/listing/{id} and /watchers/{id}/stream) return Server-Sent Events, POST /webhooks returns { data } with no meta, and batch lookup and comparables carry their own meta fields (requested/found/notFound and reference).
Some freshness-sensitive endpoints also include freshnessThreshold and refreshTriggered in meta when a tier-based refresh decision is part of the response. refreshTriggered: true means a refresh was requested, not that it will run: it is skipped while the shared live-fetch budget is held for Borough’s scheduled updates, so the next call is not guaranteed to be fresher.
Paginated endpoints include additional fields in meta. Search and building listings also include links; /areas does not:
Endpoint groups
Search
Search rental and sale listings with 20+ filters
Property
Get listing details, price history, fees, and open houses
Building
Building data, listings, quality scores, and HPD violations
Photos
Deliver supported listing and building images through
/v1/photos/{key}Market
Market snapshots, trends, and area comparisons
Areas
List all 349 areas: NYC neighborhoods, boroughs, sub-boroughs, and Northern New Jersey
Streaming
SSE streams: cached listing data, then live data when available (Pro+)
Watchers
Persistent scheduled monitoring of listings, buildings, and searches (Business+)
Webhooks
Webhook subscriptions for listing change notifications (Business+)