Skip to main content
GET
Search rental listings

Authorizations

Authorization
string
header
required

Polar.sh license key. Format: BOROUGH-<uuid>

Query Parameters

areas
string

Comma-separated area IDs (e.g., 120,115). See /areas for the full list. Up to 100 distinct IDs per request; duplicates are ignored and a longer list returns 400. A borough ID (100, 200, 300, 400, 500) covers every neighborhood in that borough, so the cap is rarely a limit. Any other area with child areas (for example 140 Upper East Side or 102 All Downtown) covers its whole subtree; an area with no children matches only itself. Borough IDs match by ID range (100-199, 200-299, ...), so Marble Hill (226), listed under Manhattan in /areas, is returned for the Bronx (200) rather than for Manhattan (100).

excludeAreas
string

Comma-separated area IDs to exclude from results. Unlike areas, every ID is matched exactly (no expansion to its child areas, including for boroughs), and unknown IDs are ignored rather than returning a 422. See /areas for the full list. Up to 100 distinct IDs per request; duplicates are ignored and a longer list returns 400.

minPrice
integer
maxPrice
integer
minBeds
integer
maxBeds
integer
minBaths
integer

Minimum full bathrooms. Compares fullBathroomCount only; half baths are not counted.

maxBaths
integer

Maximum full bathrooms. Compares fullBathroomCount only; half baths are not counted.

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. Duplicate values are ignored.

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. Duplicate values are ignored.

noFee
boolean

Filter for no-fee listings only. Rentals only: a broker fee is something you pay to rent, so sale listings carry no broker-fee flag and /v1/search/sales returns 400 INVALID_PARAMS for this parameter. 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>

Presence filter: only active listings seen in the search feed on or after this date (YYYY-MM-DD). Every active listing is re-confirmed on each feed pass (rentals about every 6h, sales about every 8h), so a recent date returns nearly every active listing whether or not it changed, and listings that have left the market never appear. It does not isolate changed rows: use webhooks or watchers, or diff against your own copy, to detect changes. 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. Duplicate codes are ignored. See meta.warnings in the response.

maxMonthlyCost
integer

Maximum monthly cost. For rentals, the monthly rent. For sales, the monthly carrying costs (maintenance, common charges and taxes), not the purchase price; sales whose carrying costs are not recorded yet are left out, and meta.warnings says so.

Required range: x >= 0
minTransitScore
integer

Minimum multi-modal transit score (0-100), from the proximity and density of subway (800 m), bus (400 m), LIRR/Metro-North (1 km) and ferry (800 m) stops. 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. RECOMMENDED (the default) currently orders by listedAt, the same as LISTED_AT (newest first with the default sortDir). listedAt is a feed-first-seen estimate until a listing is detail-scraped, so both can interleave estimated and authoritative dates, ranking an undetailed listing as newer than it really is. meta.warnings flags this only for an explicit sort=LISTED_AT.

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). Values above 1000000 return 400.

Required range: 1 <= x <= 1000000
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