StreetEasy Scraper - NYC Rentals & Sales
Pricing
from $1.00 / 1,000 listings
StreetEasy Scraper - NYC Rentals & Sales
[💰 $1.0 / 1K] Extract NYC rental and sale listings from StreetEasy across all five boroughs and any neighborhood. Get prices, beds, baths, square footage, GPS coordinates, amenities, building records, full price history and agent contacts. Export to JSON, CSV or Excel.
Pricing
from $1.00 / 1,000 listings
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Pull New York City rental and sale listings from StreetEasy at scale — 75 fields per listing, GPS coordinates, full price history, building records, and named agent contacts, across all five boroughs and down to individual neighborhoods. Built for brokerages, proptech teams, and housing-market analysts who need current New York inventory in a spreadsheet or a database without building and maintaining a scraper of their own.
Why This Scraper?
- Rentals and sales in one run — one
listingTypesetting collects both from the same location, and every row is stampedrentalorsale. Sale rows add maintenance, monthly taxes, estimated monthly payment, max financing and land-lease status; rental rows add no-fee status, availability date, free months, lease term and itemised rental fees. - 75 fields per listing in six groups — 25 core, 14 price and value, 13 location, 10 dates and identifiers, 7 contact, 6 media. No second record type to join: everything lands on one flat row.
- All five boroughs, plus neighborhood-level searches — Manhattan, Brooklyn, Queens, the Bronx and Staten Island, or a named neighborhood like Astoria, Williamsburg, Park Slope or the Upper East Side, each resolved against StreetEasy's own area list rather than guessed from a keyword.
- GPS coordinates on 554 of the 555 rows checked across five boroughs, at full published precision (
40.62323583,-74.00115634) — ready for mapping, distance joins and territory analysis without geocoding a single address. - Named agent contacts — agent name, email, direct phone, alternate phone, brokerage and profile link. Across a 600-listing sample spanning three boroughs and both categories, name and email came back on 100% of listings and a phone number on at least 92%.
- Complete price history, not just today's ask — every listing, delisting, re-pricing and recorded sale with its date and amount, on 100% of enriched rows. The sale example below carries 12 of them, reaching back to a $125,000 purchase in 1996 (four shown).
- Building records attached to every unit — year built, pre-war flag, floor count, unit count, new-development flag, building name and building page link, plus every named amenity and outdoor space. The Battery Park condo below resolves to a 27-floor, 238-unit 1985 building without a second lookup.
- Nearby subway stations and zoned schools with walking distance in miles, line names and route letters — subways on 83–86% and schools on 92–94% of enriched rows, measured on live runs in Queens and the Bronx.
- A withheld number never arrives as
0— StreetEasy publishes a literal zero for undisclosed square footage (47% of a 600-listing sample), maintenance, monthly taxes, max financing and price change. Those becomenullhere, so a 0 sq ft apartment never drags down your averages.
Use Cases
Market Research & Analytics
- Track asking rents and sale prices by neighborhood, bedroom count and property type over time
- Measure days on market and price-cut frequency from
daysOnMarketandpriceHistory - Compare pre-war and new-development inventory using the building flags on every row
- Build no-fee rental indices from
isNoFee,freeMonthsandrentalFees
Brokerage & Agent Operations
- Monitor competing listings in your farm area and catch every re-pricing
- Pull comps for a CMA — each enriched row already carries five StreetEasy comparables
- Audit your own firm's live inventory for missing photos, floor plans or descriptions
- Collect open-house schedules across a whole neighborhood in one export
Lead Generation
- Build agent and brokerage lists with email addresses and direct phone numbers
- Segment agents by borough, price band or property type before outreach
- Reach management companies and new-development sponsors through the building record
Investment & Underwriting
- Screen sales by
pricePerSqft,maintenance,taxesandestimatedMonthlyPayment - Flag land-lease buildings with
isLandLeasebefore they reach diligence - Filter on
maxFinancingto find co-ops that permit the leverage your model assumes
Product & Data Integration
- Power a rental search product with fresh NYC inventory, photos and floor plans
- Feed a valuation or rent-estimate model with coordinates, size, amenities and history
- Sync new listings into Google Sheets, a warehouse or an internal API on a schedule
Getting Started
Simplest run — one borough
{"searchUrls": ["Brooklyn"],"maxItems": 100}
Several neighborhoods, with full details
Type the neighborhood the way StreetEasy names it, or paste the address of a public StreetEasy search page — the location is read out of it either way.
{"searchUrls": ["Williamsburg", "Astoria", "https://streeteasy.com/for-rent/park-slope-brooklyn"],"listingType": "both","enrichDetails": true,"maxItems": 1000}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
searchUrls | array | [] | Neighborhoods or boroughs to search. Type a borough name, a neighborhood name, or paste a public streeteasy.com search address. Empty means Brooklyn. Add as many as you like — results are de-duplicated across them. |
listingType | string | both | both, rentals or sales. Each location is searched once per category you pick. |
Result Limits & Detail
| Parameter | Type | Default | Description |
|---|---|---|---|
maxItems | integer | 100 | Maximum listings per location searched (0 = everything the search returns). StreetEasy pages through at most 4,270 listings for any one location and category. |
enrichDetails | boolean | false | Adds 37 fields to every listing: building record, price history, amenities, nearby subways and schools, every photo and floor plan, video and 3D tour links, open houses, comparable listings, and every listing contact. Billed at the higher rate. |
Advanced
| Parameter | Type | Default | Description |
|---|---|---|---|
concurrency | integer | 8 | How many requests to run at once. Lower it if results start failing. |
proxyConfiguration | object | Apify Proxy | Proxy settings for the run. |
Output
Every listing is one dataset row. Rows carry 38 fields by default; enrichDetails widens
the same row to all 75. Rentals and sales share one schema — listingType tells them apart.
Both examples are real listings: the agent's name and contact details are replaced with
placeholders, and long text and arrays are shortened here for readability.
Rental row
{"id": "5112748","listingType": "rental","url": "https://streeteasy.com/building/the-frederick/615","title": "564 Saint John's Place #615","propertyType": "Rental Unit","status": "Active","bedrooms": 1,"bathrooms": 1,"sizeSqft": 652,"daysOnMarket": 5,"address": "564 Saint John's Place","unit": "#615","zipCode": "11238","latitude": 40.6725,"longitude": -73.9591,"neighborhood": "Crown Heights","borough": "Brooklyn","price": 4696,"isNoFee": false,"freeMonths": 1,"leaseTerm": 12,"petPolicy": "Cats and dogs allowed","amenities": ["Balcony", "Central Air", "Dishwasher", "Doorman", "Elevator", "Gym", "Hardwood Floors", "Roof Deck", "Washer / Dryer in Unit"],"buildingName": "The Frederick","buildingYearBuilt": 2022,"buildingFloorCount": 8,"buildingUnitCount": 193,"buildingUrl": "https://streeteasy.com/building/the-frederick","nearbySubways": [{"station_name": "Botanic Garden", "line": "Franklin Shuttle", "routes": ["S", "2", "3", "4", "5"], "distance": 0.13}],"nearbySchools": [{"name": "P.S. 316 Elijah Stroud", "district": "17", "grades": ["PK", "0K", "01", "02", "03", "04", "05", "SE"]}],"brokerageName": "Premier One Realty LLC","agentName": "Agent Name","agentEmail": "agent@example.com","agentPhone": "(555) 010-0000","heroPhotoUrl": "https://photos.zillowstatic.com/fp/e907da35de71638f355719606b2aac62-se_large_800_400.webp","photos": ["https://photos.zillowstatic.com/fp/e907da35de71638f355719606b2aac62-full.jpg", "https://photos.zillowstatic.com/fp/3158dcca5c8455f00d160e9e10a016f2-full.jpg"],"floorplans": ["https://photos.zillowstatic.com/fp/bce62791bff76be7b8b91d682c81e83d-full.jpg"],"priceHistory": [{"date": "2026-07-23", "price": 4696, "description": "Listed by Premier One Realty LLC"},{"date": "2020-03-20", "price": 3675, "description": "Delisted by Mishkan Group. Last priced at $3,675."}],"comparableListings": [{"id": "5028364", "listed_price": 4450}, {"id": "5059843", "listed_price": 4550}],"listedAt": "2026-07-23T18:29:35-04:00","updatedAt": "2026-07-23T18:29:35-04:00"}
Sale row
A sale row carries every field above — id, address, coordinates, building record, agent, photos, comps — and swaps the tenancy fields for ownership economics. This is a real Battery Park City condo, showing only what a rental row does not have:
{"id": "1835854","listingType": "sale","title": "377 Rector Place #1D","propertyType": "Condo","saleType": "Resale","price": 670000,"sizeSqft": 654,"pricePerSqft": 1024,"lastPriceChangeAmount": -20000,"lastPriceChangeDate": "2026-07-16T00:00:00-04:00","maintenance": 1048,"taxes": 842,"estimatedMonthlyPayment": 5288,"maxFinancing": 80,"isLandLease": true,"buildingName": "Liberty House","buildingYearBuilt": 1985,"buildingFloorCount": 27,"buildingUnitCount": 238,"priceHistory": [{"date": "2026-07-16", "price": 670000, "description": "Price decreased by 3%"},{"date": "2026-06-27", "price": 690000, "description": "Listed by Compass"},{"date": "2012-01-12", "price": 475000, "description": "Nest Seekers International Listing sold"},{"date": "1996-08-23", "price": 125000, "description": "Previous Sale recorded"}],"openHouses": [{"starts_at": "2026-07-29T12:00:00-04:00", "ends_at": "2026-07-29T13:00:00-04:00", "is_by_appointment_only": true}],"comparableListings": [{"id": "1788958", "listed_price": 575000}, {"id": "1792304", "listed_price": 680000}]}
Core Fields
| Field | Type | Description |
|---|---|---|
id | string | Listing ID |
listingType | string | rental or sale |
url | string | Listing URL |
title | string | Listing title |
propertyType | string | Condo, Co-op, House, Rental Unit, Townhouse, Multi-family |
status | string | Active, In contract, Sold, Closed, Delisted, and 7 more |
bedrooms | number | Bedrooms (0 = studio) |
bedroomsDescription | string | Bedrooms (text) |
bathrooms | number | Bathrooms |
halfBathrooms | number | Half bathrooms |
bathroomsDescription | string | Bathrooms (text) |
sizeSqft | number | Interior size (sq ft) |
daysOnMarket | number | Days on market |
description | string | Full listing description |
isFurnished | boolean | Furnished |
petPolicy | string | Pet policy |
amenities | array | Unit and building amenities |
buildingAmenities | array | Building amenities |
outdoorSpace | array | Balcony, patio, terrace, roof deck |
buildingType | string | Building type |
buildingYearBuilt | number | Year built |
buildingIsPreWar | boolean | Pre-war |
buildingFloorCount | number | Floors in building |
buildingUnitCount | number | Units in building |
buildingIsNewDevelopment | boolean | New development |
Price & Value
| Field | Type | Description |
|---|---|---|
price | number | Asking price or monthly rent |
pricePerSqft | number | Price per sq ft (sales) |
isNoFee | boolean | No broker fee (rentals) |
saleType | string | Resale, new development, sponsor unit |
lastPriceChangeAmount | number | Last price change ($) |
lastPriceChangeDate | string | Last price change date |
priceHistory | array | Every price event with date and description |
maintenance | number | Monthly maintenance / common charges |
taxes | number | Monthly taxes |
estimatedMonthlyPayment | number | Estimated monthly payment |
maxFinancing | number | Max financing (%) |
rentalFees | array | Itemised rental fees |
freeMonths | number | Free months |
leaseTerm | number | Lease term (months) |
Location
| Field | Type | Description |
|---|---|---|
address | string | Street address |
unit | string | Unit number |
city | string | City |
state | string | State |
zipCode | string | ZIP code |
latitude | number | Latitude |
longitude | number | Longitude |
neighborhood | string | Neighborhood |
neighborhoodSlug | string | Neighborhood slug |
borough | string | Borough |
buildingName | string | Building name |
nearbySubways | array | Stations with line, routes and distance |
nearbySchools | array | Zoned schools with district and grades |
Contacts & Media
| Field | Type | Description |
|---|---|---|
brokerageName | string | Brokerage |
contacts | array | Every listing contact |
agentName | string | Agent |
agentEmail | string | Agent email |
agentPhone | string | Agent phone |
agentPhoneAlt | string | Agent phone (alt) |
agentProfileUrl | string | Agent profile URL |
heroPhotoUrl | string | Main photo |
thumbnailUrl | string | Thumbnail |
photos | array | Up to 30 photo URLs |
floorplans | array | Floor plan URLs |
videoUrls | array | Video URLs |
tour3dUrl | string | 3D tour URL |
Dates & Identifiers
| Field | Type | Description |
|---|---|---|
listedAt | string | Listed at |
availableAt | string | Available from |
updatedAt | string | Last updated |
areaId | string | StreetEasy area ID |
openHouses | array | Open house times |
comparableListings | array | Five StreetEasy comps |
buildingUrl | string | Building page URL |
buildingId | string | Building ID |
managementCompanyProfileUrl | string | Management company profile URL |
isLandLease | boolean | Land lease |
Tips for Best Results
- Plan around the 4,270-per-search ceiling — StreetEasy pages through at most 43 pages of 100 listings for any single location and category, however many match. Brooklyn rentals sit right on that line and Manhattan is well past it. Split a big borough into neighborhoods (
Williamsburg,Park Slope,Bed-Stuy, …), list each one separately, and let the run de-duplicate across them. - Give it a place, not a filtered search — the location is what carries across; price, bedroom and amenity filters set on the website are not read back out of a pasted address. Collect the neighborhood in full and filter the dataset afterwards — every value you would have filtered on is its own field.
- Turn on
enrichDetailsfor anything contact-, photo- or history-related — agent email and direct phone, all 30 photos, floor plans, full price history, amenities, nearby subways and schools, open houses and comparable listings only arrive with it on. It adds 37 fields to the same row rather than creating a second record you have to join. bothdoubles the searches, not the ceiling — each location runs one rental search and one sale search, andmaxItemsapplies to each. Two neighborhoods withlistingType: "both"is four searches and up to2 × 2 × maxItemsrows.- Read a missing
sizeSqftas a market fact, not a gap — NYC rental listings mostly do not publish square footage while sale listings usually do, so how often the field is filled tracks the rental/sale mix you asked for. The same is true ofunit(a house or townhouse has no unit number) andfloorplans(a brokerage habit that varies sharply between boroughs and between rentals and sales). - A published
0means "not disclosed", and you getnullinstead — square footage, maintenance, monthly taxes, max financing and last price change all arrive as a literal zero when the figure was withheld. Nearly half of a 600-listing sample had a zero square footage; averaging the raw numbers would put a 0 sq ft apartment on half your rows. - Diff on
updatedAtto watch a market — schedule a run, compare against yesterday's dataset, and you surface new and re-priced inventory instead of reprocessing a whole borough every time.
Pricing
From $1.00 per 1,000 results (search only) or from $2.50 per 1,000 results (with full details).
| Results | Search Only | With Full Details |
|---|---|---|
| 100 | $0.10 | $0.25 |
| 1,000 | $1.00 | $2.50 |
| 10,000 | $10.00 | $25.00 |
| 100,000 | $100.00 | $250.00 |
Those are the rates on Gold and above. Higher-volume plans pay less per result:
| Your Apify plan | Search Only | With Full Details |
|---|---|---|
| No discount | $1.20 | $3.00 |
| Bronze | $1.15 | $2.85 |
| Silver | $1.05 | $2.65 |
| Gold and above | $1.00 | $2.50 |
Per 1,000 results.
A "result" is any listing row in the output dataset. The full-details rate applies to every row on a run with enrichDetails turned on. When you search several locations at once, a listing matching more than one of them is de-duplicated before it reaches the dataset, so you are never charged twice for the same listing. Platform fees (compute, storage) are additional and depend on your Apify plan.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n — Workflow automation
- Google Sheets — Direct spreadsheet export
- Slack / Email — Notifications when new listings match
- Webhooks — Trigger custom APIs on run completion
- Apify API — Full programmatic access
Legal & Ethical Use
This is an unofficial scraper. It is not affiliated with, endorsed by, or connected to StreetEasy, Zillow Group, or their operators in any way. All trademarks belong to their respective owners.
This actor is intended for legitimate market research, real-estate analytics, and brokerage intelligence. You are responsible for complying with applicable laws and with StreetEasy's Terms of Service.
Listings include agent and brokerage contact details. Treat them as personal data: do not use names, email addresses or phone numbers for spam, harassment, or any unlawful purpose, and follow applicable privacy rules when storing or processing them. Housing listings are also subject to fair-housing rules — do not use this data to discriminate in the sale, rental, or financing of housing.