Search Rentals
Search active NYC rental listings with comprehensive filters. Returns
summary-level fields per listing. Use /property/{id} for full detail.
Tier: Free+
Authorizations
Polar.sh license key. Format: BOROUGH-<uuid>
Query Parameters
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).
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.
Minimum full bathrooms. Compares fullBathroomCount only; half baths are not counted.
Maximum full bathrooms. Compares fullBathroomCount only; half baths are not counted.
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.
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.
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.
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.
x >= 0Maximum days on market. Same listedAt estimate caveat as minDaysOnMarket; see meta.warnings in the response.
x >= 0Only 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.
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.
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.
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.
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.
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.
x >= 1Maximum square footage. Same detail-only coverage caveat as minSqft; see meta.warnings in the response.
x >= 1Filter by listing-level pet flag or building-level pet policy
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.
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.
x >= 0Minimum 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.
0 <= x <= 100Require an FCC public-data provider match with fiber technology. Coverage may be exact-building or Census-block level depending on imported area.
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.
x >= 0Sort 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.
RECOMMENDED, PRICE, LISTED_AT Sort direction
ASC, DESC Page number (1-indexed). Values above 1000000 return 400.
1 <= x <= 1000000Results per page. Maximum depends on tier: Free=10, Starter=50, Pro/Business=500.
1 <= x <= 500