StreetEasy NYC Scraper โ Sale + Rent ยท Price/SqFt ยท Market KPIs
Pricing
Pay per usage
StreetEasy NYC Scraper โ Sale + Rent ยท Price/SqFt ยท Market KPIs
๐๏ธ Scrape StreetEasy NYC listings โ sale + rent, all 5 boroughs, with built-in market KPIs (median price, price/sqft distribution, area breakdowns) and HTML report. School enrichment + bulk input. Independent tool โ not affiliated with StreetEasy or Zillow Group.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
SIรN Oร
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
StreetEasy NYC Scraper โ Sale + Rent ยท Price/SqFt ยท Market KPIs ๐๏ธ
๐ฏ Extract NYC Sale + Rent Listings With Market KPIs in Seconds
Real estate investors, brokers, market analysts, and NYC researchers โ get full listing data plus price/sqft analytics across all five boroughs
๐ Overview
Pull StreetEasy NYC listings โ both for-sale AND rentals โ into clean structured data. Search Manhattan, Brooklyn, Queens, Bronx, or Staten Island by borough or by specific neighborhood ID, and get back complete listings with calculated price-per-sqft, beds/baths, square footage, building type, geo coordinates, source agent, and photo metadata.
Why investors and brokers choose us over the alternatives:
- ๐ Analytics included, not just raw data: Auto-generated HTML market report with median price, price/sqft distribution (min/median/avg/p90/max), top areas by inventory, and building-type breakdown โ computed for you on every run
- ๐งฎ Calculated price/sqft on every listing: Skip the spreadsheet step โ comp sheets and CMAs are ready straight from the dataset
- โ
Sale + Rent in one actor: One
listingTypetoggle gets you sales, rentals, or both sides โ purpose-built for buy-vs-rent and price-to-rent ratio analysis - ๐ฝ All 5 NYC boroughs + 340+ named neighborhoods: Whole-borough sweeps or surgical neighborhood targeting
- ๐ Optional school enrichment: Nearby public schools per listing for family-buyer workflows (PAID)
- ๐ FREE tier with full feature parity: 25 listings per run, no credit card, same KPIs and HTML report โ just a smaller cap
โจ Features
- ๐ Both sides of the market โ sales (condos, co-ops, houses) and rentals (apartments, units) via a single
listingTypetoggle - ๐งญ Two location modes โ by borough (Manhattan / Brooklyn / Queens / Bronx / Staten Island) or by neighborhood ID (e.g. 302 = Williamsburg, 319 = Park Slope)
- ๐ Auto-calculated price/sqft โ for every listing with usable square footage
- ๐ Market KPIs in HTML report โ median price, price/sqft distribution (min/median/avg/p90/max), top areas by inventory, building type tally
- ๐ข Rental-specific fields โ
availableAt,monthsFree,noFee,netEffectivePrice,furnished,leaseTermMonths - ๐ School data enrichment โ nearby public schools per listing (PAID toggle)
- ๐ฆ Bulk neighborhood search โ pass an array of area IDs in one run (PAID)
- ๐ฑ Standard Apify exports โ JSON, CSV, XLSX, RSS, HTML
๐ฌ Quick Start
Three inputs, no coding:
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~streeteasy-property-scraper/runs?token=[YOUR_TOKEN]' \-H 'Content-Type: application/json' \-d '{"searchMode":"borough","borough":"Manhattan","listingType":"sale","maxResults":50}'
๐ Getting Started (3 Simple Steps)
Step 1: Pick Sale, Rent, or Both
Set listingType to sale, rent, or both. Both runs each query twice (PAID โ doubles the query count).
Step 2: Pick Your Location
Either set searchMode: "borough" and pick one of the five NYC boroughs, or set searchMode: "area" and pass a StreetEasy neighborhood ID (e.g. 302 for Williamsburg).
Step 3: Run & Export
Hit Run. Listings stream into the dataset; an HTML market report lands in the key-value store. Export as JSON, CSV, or Excel.
That's it! In under 2 minutes you'll have:
- Complete listings with address, specs, pricing, photos, geo
- Auto-calculated price/sqft per listing
- Market-level KPIs (median price, distribution, area + type breakdowns)
- A polished HTML market summary
๐ฅ Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
listingType | string | No | sale, rent, or both (default: sale). both is PAID-only. |
searchMode | string | No | borough or area (default: borough). |
borough | string | If searchMode=borough | Manhattan, Brooklyn, Queens, Bronx, Staten Island. |
areaId | integer | If searchMode=area | StreetEasy neighborhood ID (e.g. 302 = Williamsburg). |
areaIds | array | No | Multiple neighborhood IDs in one run (PAID only). |
maxResults | integer | No | Listings per query, 1โ500 (default: 50). FREE tier capped at 25 per run. |
includeSchools | boolean | No | Fetch nearby schools per listing โ PAID only (default: false). |
Example โ Borough sale search:
{"listingType": "sale","searchMode": "borough","borough": "Brooklyn","maxResults": 100}
Example โ Williamsburg rentals:
{"listingType": "rent","searchMode": "area","areaId": 302,"maxResults": 50}
Example โ Bulk neighborhoods, both sides of market, with schools:
{"listingType": "both","searchMode": "area","areaIds": [302, 319, 301],"maxResults": 200,"includeSchools": true}
๐ค Output
Results land in the Apify dataset. Common fields across both sale and rent:
| Field | Type | Description |
|---|---|---|
propertyId | string | Unique StreetEasy property ID |
listingType | string | sale or rent |
url | string | Full listing URL on streeteasy.com |
title | string | Address with unit |
areaName | string | Neighborhood name |
address | object | street, unit, neighborhood, full |
pricing | object | price, pricePerSqft (+ rent fields when applicable) |
specs | object | beds, bathsFull, bathsHalf, bathsTotal, sqft, buildingType, furnished |
location | object | latitude, longitude |
source | object | Listing agent / brokerage info |
media | object | Photo count, 3D tours, video flag |
status | string | ACTIVE, DELISTED, etc. |
rental | object | (Rent only) availableAt, leaseTermMonths, isNewDevelopment |
schools | array | (Optional) Nearby public schools |
schoolCount | number | (Optional) Count of nearby schools |
scrapedAt | string | ISO timestamp |
Sale example:
{"propertyId": "1814683","listingType": "sale","url": "https://streeteasy.com/building/bergen-brooklyn/ph-706e","title": "323 Bergen Street, PH 706E","areaName": "Boerum Hill","pricing": { "price": 4625000, "pricePerSqft": 1808 },"specs": { "beds": 3, "bathsFull": 2, "bathsHalf": 1, "bathsTotal": 3, "sqft": 2558, "buildingType": "CONDO" },"location": { "latitude": 40.68333, "longitude": -73.98045 },"source": { "label": "Compass", "type": "PARTNER" },"status": "ACTIVE"}
Rent example:
{"propertyId": "5007580","listingType": "rent","url": "https://streeteasy.com/building/the-kent-house/203","title": "187 Kent Avenue, 203","areaName": "Williamsburg","pricing": { "price": 4800, "pricePerSqft": null, "monthsFree": 0, "noFee": false },"specs": { "beds": 1, "bathsTotal": 1, "buildingType": "RENTAL", "furnished": false },"rental": { "availableAt": "2026-05-01", "leaseTermMonths": null, "isNewDevelopment": false }}
๐ผ Use Cases & Examples
1. Investment Underwriting (Sale)
Investors comparing condos by price/sqft across Brooklyn neighborhoods
Input: areaIds: [302, 319, 301], listingType: "sale"
Output: Listings with calculated price/sqft + median per area
Use: Spot the cheapest $/sqft pockets; build comp sheets in minutes.
2. Rental Market Analysis
Brokers tracking rent trends in Williamsburg vs. Bushwick
Input: listingType: "rent", two neighborhood IDs, weekly schedule
Output: Median rent, no-fee inventory, available-at distribution
Use: Generate weekly rental market briefs for clients.
3. Sale + Rent Side-by-Side
Investors checking buy-vs-rent ratios in one neighborhood
Input: listingType: "both", areaId: 319 (Park Slope)
Output: Sales and rentals from the same area in one dataset
Use: Compute price-to-rent ratios for cash-flow analysis.
4. CMA / Comparables for Agents
Agents preparing CMAs for upcoming listings
Input: Borough or neighborhood, maxResults: 200
Output: Recent listings with full specs and prices
Use: Plug straight into comp sheets and CMA reports.
5. School District Property Search
Families filtering by nearby schools
Input: borough: "Queens", includeSchools: true
Output: Listings with adjoined school data
Use: Rank properties by school proximity.
6. AVM / ML Training Data
Data scientists building NYC valuation models
Input: Bulk borough sweep, listingType: "both"
Output: Comprehensive sale + rent dataset with specs + geo
Use: Train and validate AVM and rent-prediction models.
๐ Integration Examples
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/streeteasy-property-scraper').call({listingType: 'both',searchMode: 'borough',borough: 'Manhattan',maxResults: 100,includeSchools: true});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/streeteasy-property-scraper').call(run_input={'listingType': 'rent','searchMode': 'area','areaId': 302,'maxResults': 100})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~streeteasy-property-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"listingType":"sale","searchMode":"borough","borough":"Queens","maxResults":150}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: Schedule (daily / weekly market refresh) or webhook
- HTTP Request: Call StreetEasy scraper API with target neighborhood
- Process: Filter by price band, compute KPIs, dedupe against last run
- Action: Push to DB, send Slack/email digest, update dashboard
๐ Performance & Pricing
FREE Tier (Try It Now)
- 25 listings per run โ full feature parity, same data quality
- 5 queries per run
- No credit card required
- Perfect for testing and one-off analyses
PAID Tier (Production Ready)
- Unlimited listings and queries per run
listingType: "both"(sale + rent in one run)- Bulk neighborhood arrays
- School data enrichment
- Pay-per-result: only charged for listings actually returned
๐ฐ Transparent per-result pricing โ $0.005 per listing extracted, $0.003 per school enrichment, $0.005 per actor start. What you get for the price: every listing comes with calculated price/sqft and the run produces a full HTML market report with median, distribution, and area breakdowns โ no post-processing required, no separate analytics tier.
โ Frequently Asked Questions
Q: Does this cover rentals?
A: Yes โ set listingType: "rent" for rentals only, or listingType: "both" (PAID) to scrape sale + rent in a single run.
Q: How many listings can I extract? A: FREE tier: 25 per run. PAID tier: unlimited. Each query auto-paginates up to 5 pages (~250 listings).
Q: Why does pricePerSqft come back null on some rentals?
A: StreetEasy rental records often omit square footage. We only compute price/sqft when the listing reports usable sqft.
Q: Do you cover boroughs outside Manhattan?
A: Yes โ all 5 boroughs plus 340+ named neighborhoods. Use searchMode: "borough" for whole-borough sweeps or searchMode: "area" with a neighborhood ID for granular targeting.
Q: What output formats are available? A: JSON, CSV, Excel โ exported directly from the Apify dataset.
Q: How long does a run take? A: Roughly 1โ2 seconds per 50 listings, plus ~200ms per listing if school enrichment is enabled.
Q: Is this legal? A: We only extract publicly available listings from StreetEasy. See the legal section below.
๐ Troubleshooting
"Area ID not found" error
- Confirm the ID exists. Common IDs: 100=Manhattan, 200=Bronx, 300=Brooklyn, 302=Williamsburg, 319=Park Slope, 400=Queens, 500=Staten Island.
- Use
searchMode: "borough"if you only want a whole-borough sweep.
listingType: "both" rejected
bothruns each query twice and requires PAID. Usesaleorrenton FREE tier.
No school data on a listing
- Not all properties have nearby school records. Schools require
includeSchools: trueon PAID tier.
FREE tier hit at 25 listings
- That's the FREE cap. Upgrade for unlimited.
โ ๏ธ Trademark Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by StreetEasy, Zillow Group, Inc., or any of their subsidiaries. The name "StreetEasy" is used solely in a descriptive sense to identify the public data source the Actor reads from. All trademarks, service marks, and trade names referenced in this Actor or its documentation are the property of their respective owners.
โ๏ธ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
๐ค Support
Join our active support community
- For issues or questions, open an issue in the actor's repository
- Check SIรN Agency Store for more automation tools
- ๐ง hello@sian-agency.online
Built by SIรN Agency | More Tools