Skip to content

API Reference

All API requests use the following base URL:

https://borough.qwady.app/v1

Include your API key in the Authorization header:

Authorization: Bearer BOROUGH-...

Free-tier endpoints (search, areas) work without authentication but are subject to stricter rate limits. See Authentication for details.

Every endpoint returns a consistent JSON envelope:

{
"data": { ... },
"meta": {
"dataAge": "2026-02-15T14:28:00Z",
"source": "cached"
}
}

Some freshness-sensitive endpoints also include freshnessThreshold and refreshTriggered in meta when a tier-based refresh decision is part of the response.

Paginated endpoints include additional fields in meta:

{
"data": [ ... ],
"meta": {
"total": 342,
"page": 1,
"perPage": 25,
"dataAge": "2026-02-15T14:25:00Z",
"source": "cached",
"links": {
"self": "/v1/search/rentals?page=1&perPage=25",
"first": "/v1/search/rentals?page=1&perPage=25",
"last": "/v1/search/rentals?page=14&perPage=25",
"next": "/v1/search/rentals?page=2&perPage=25"
}
}
}

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

Market

Market snapshots, trends, and area comparisons

Areas

List all 349 NYC neighborhoods, boroughs, and sub-boroughs

Streaming

Live SSE streams for cached + live listing data (Pro+)

Watchers

Persistent real-time monitoring of listings, buildings, and searches (Business+)

Webhooks

Webhook subscriptions for listing change notifications (Business+)

All errors follow a consistent format. See Errors for the full reference.

{
"error": {
"code": "NOT_FOUND",
"message": "Listing not found",
"status": 404
}
}