Skip to main content
GET
Search rental listings

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

areas
string

Comma-separated area IDs (e.g., 120,115). See /areas for the full list.

excludeAreas
string

Comma-separated area IDs to exclude from results. Unlike areas, borough-level IDs are matched exactly (no expansion to their child neighborhoods), and unknown IDs are ignored rather than returning a 422.

minPrice
integer
maxPrice
integer
minBeds
integer
maxBeds
integer
minBaths
integer
maxBaths
integer
buildingType
string

Comma-separated building types. Valid values: RENTAL, CONDO, CO_OP, CONDOP, HOUSE, SINGLEFAMILY, TOWNHOUSE, TWOFAMILY, THREEFAMILY, FOURFAMILY, MULTI_FAMILY, MIXED_USE, HYBRID, COMMERCIAL, UNKNOWN. MULTIFAMILY (no underscore) is accepted as an input alias for MULTI_FAMILY; responses always return the canonical spelling.

excludeBuildingType
string

Comma-separated building types to exclude. Same valid values as buildingType: RENTAL, CONDO, CO_OP, CONDOP, HOUSE, SINGLEFAMILY, TOWNHOUSE, TWOFAMILY, THREEFAMILY, FOURFAMILY, MULTI_FAMILY, MIXED_USE, HYBRID, COMMERCIAL, UNKNOWN.

noFee
boolean

Filter for no-fee listings only. noFee=true matches only listings Borough has confirmed via a detail scrape are no-fee, and may undercount while listing-detail backfills complete; see meta.warnings in the response. noFee=false returns 400 INVALID_PARAMS: Borough cannot yet distinguish "confirmed charges a fee" from "not yet detail-scraped," so a false-match would silently include every undetailed listing. Omit the parameter to return listings regardless of fee status.

minDaysOnMarket
integer

Minimum days on market. Computed from listedAt, which is a feed-first-seen estimate until a listing is detail-scraped; see meta.warnings in the response and listedAtIsApproximate on individual listings.

Required range: x >= 0
maxDaysOnMarket
integer

Maximum days on market. Same listedAt estimate caveat as minDaysOnMarket; see meta.warnings in the response.

Required range: x >= 0
listedAfter
string<date>

Only listings listed on or after this date (YYYY-MM-DD). Datetimes are accepted but normalized to the UTC calendar day; any time component is ignored. listedAt is a feed-first-seen estimate until a listing is detail-scraped; see meta.warnings in the response.

listedBefore
string<date>

Only listings listed on or before this date (YYYY-MM-DD). Datetimes are accepted but normalized to the UTC calendar day; any time component is ignored. Same listedAt estimate caveat as listedAfter; see meta.warnings in the response.

updatedSince
string<date>

Delta sync: only listings last confirmed in the active feed at or after this date (ISO 8601). Returns rows whose last_seen_at is on or after the value, useful for incrementally pulling what changed since your last crawl. Includes newly listed rows. Matching is by calendar day; any time component is ignored.

hasOpenHouse
boolean

Filter to listings with a scheduled open house. This is a detail-only signal and may undercount while listing-detail backfills complete; see meta.warnings in the response. hasOpenHouse=false returns 400 INVALID_PARAMS for the same reason as noFee=false: Borough cannot yet distinguish "confirmed no open house" from "not yet detail-scraped." Omit the parameter to return listings regardless of open-house status.

has3dTour
boolean

Filter to listings with a 3D virtual tour. has3dTour=true matches only confirmed 3D-tour listings and may undercount while listing-detail backfills complete; see meta.warnings in the response. has3dTour=false returns 400 INVALID_PARAMS for the same reason as noFee=false. Omit the parameter to return listings regardless of 3D-tour status.

minSqft
integer

Minimum square footage. sqft is a detail-only field: this drops every listing whose square footage hasn't been measured yet (not yet detail-scraped), not just listings outside the range; see meta.warnings in the response.

Required range: x >= 1
maxSqft
integer

Maximum square footage. Same detail-only coverage caveat as minSqft; see meta.warnings in the response.

Required range: x >= 1
petsAllowed
boolean

Filter by listing-level pet flag or building-level pet policy

amenities
string

Comma-separated amenity codes. Listings must match all requested amenities across listing- and building-level data. Listing-level amenities are detail-only and regex-derived from the listing description, so an amenity the description never mentions reads as absent, not merely unconfirmed; matches may undercount while listing-detail backfills complete. See meta.warnings in the response.

maxMonthlyCost
integer

Maximum total monthly cost where maintenance, common charges, and property tax fields are populated. Falls back to price when those fields are unknown.

Required range: x >= 0
minTransitScore
integer

Minimum transit score (0-100) based on proximity and stop density within 400 meters. Scores are strict; 80+ means exceptional transit clusters, not ordinary good subway access.

Required range: 0 <= x <= 100
fiberOnly
boolean

Require an FCC public-data provider match with fiber technology. Coverage may be exact-building or Census-block level depending on imported area.

minDownloadMbps
integer

Require an FCC public-data provider match with at least this advertised download speed in Mbps. Coverage may be exact-building or Census-block level depending on imported area.

Required range: x >= 0
sort
enum<string>
default:RECOMMENDED

Sort attribute. sort=LISTED_AT orders by listedAt, which is a feed-first-seen estimate until a listing is detail-scraped; this can interleave estimated and authoritative dates, ranking an undetailed listing as newer than it really is. See meta.warnings in the response.

Available options:
RECOMMENDED,
PRICE,
LISTED_AT
sortDir
enum<string>
default:DESC

Sort direction

Available options:
ASC,
DESC
page
integer
default:1

Page number (1-indexed)

Required range: x >= 1
perPage
integer
default:10

Results per page. Maximum depends on tier: Free=10, Starter=50, Pro/Business=500.

Required range: 1 <= x <= 500

Response

Paginated list of rental listings

data
object[]
meta
object