StreetEasy Scraper — NYC Rentals and Sales avatar

StreetEasy Scraper — NYC Rentals and Sales

Pricing

from $3.00 / 1,000 listings

Go to Apify Store
StreetEasy Scraper — NYC Rentals and Sales

StreetEasy Scraper — NYC Rentals and Sales

StreetEasy scraper for New York City apartments for rent and for sale. Each row has price, beds, baths, neighborhood, brokerage, and address.

Pricing

from $3.00 / 1,000 listings

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

16 days ago

Last modified

Share

Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by StreetEasy (Zillow, Inc.) or its affiliates. Data is read from publicly accessible search result pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

StreetEasy scraper for New York City apartments for rent and for sale across Manhattan, Brooklyn, Queens, the Bronx, and Staten Island, or one neighborhood such as Williamsburg. Each row has asking price, beds, baths, neighborhood, ZIP, brokerage name, and map coordinates. Use it as a StreetEasy API alternative from Python, Node.js, cURL, or Apify MCP. Results land in the default dataset as JSON.

Best for: rent and sale comps in one borough or neighborhood, and a scheduled check that saves only new listing ids.

ActorRole
StreetEasy Scraper ◄── you are hereNYC rent and sale search cards
Realtor.com ScraperUS sold comps, ZIP, and listing monitor
LoopNet ScraperUS commercial sale, lease, and auctions

When to use this Actor

  • Borough or neighborhood — Set an area such as Brooklyn or Upper East Side and choose rent or sale.
  • A filtered search you already built — Paste the search URL. Area fields are ignored when Start URLs is set.
  • New-listing monitor — Schedule the same search. Later runs save listing ids that were not stored last time. A quiet tick writes zero rows.
  • Price and brokerage from the card — Rent or sale price, beds, and the listing name are taken from the search result. This run does not open each property page.

When not to use this Actor

  • US homes outside New York — For sold comps and ZIP searches on a national portal, use Realtor.com Scraper.
  • Commercial property — For sale, lease, and auction cards, use LoopNet Scraper.
  • Agent emails, phones, or a license database — Those are not on the search card. This Actor does not log in and does not open detail pages.
  • A full NYC dump in one run — Cap maxItems. Split by borough or neighborhood.

Key features

  • Search cards — One page request returns about 14 listings. Default 256 MB.
  • Rent and sale — Borough or neighborhood, or a pasted search URL.
  • Price, beds, baths — Net effective rent and free months when the card states them.
  • Listed by — Brokerage or listing name shown on the public card.
  • Monitor — Named key-value store of listing ids already saved for that search.

Input

FieldRequiredDefaultWhat it does
AreaNoBrooklynBorough or neighborhood. Ignored when Start URLs is set.
Rent or saleNoFor rentSearch type for the area.
Start URLsNoemptySearch URLs. Overrides the fields above.
Max listingsNo25Cap across all searches. Maximum 200.
Monitor modeNooffSave only listing ids not seen on the previous run of this search.
ProxyNoUnblocker, USRequired. Datacenter and residential IPs are denied before the page loads.
{
"area": "Brooklyn",
"transaction": "for-rent",
"maxItems": 25,
"monitorMode": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["UNBLOCKER"],
"apifyProxyCountry": "US"
}
}

A search URL overrides Area and Rent or sale:

{
"startUrls": [{ "url": "https://streeteasy.com/for-sale/manhattan" }],
"maxItems": 25,
"monitorMode": false
}

Output

One dataset row per listing.

FieldMeaning
listingIdListing path
urlListing URL
address, street, unitAddress from the card
neighborhood, area, state, zipLocation
transactionfor-rent or for-sale
price, priceText, currencyAsking rent or sale price
netEffectiveRent, monthsFreeConcession, when the card states one
beds, baths, halfBaths, sqftSize. Studio beds are 0. Sqft only when the card shows a number
furnished, newDevelopment, buildingTypeFlags from the card
listedByPublic card name
openHouseStart, openHouseEndOpen house when the search page lists one
latitude, longitudeMap point
imagePrimary photo
sourceUrlSearch page
scrapedAtUTC timestamp
{
"listingId": "building/fulton-greene/10w",
"url": "https://streeteasy.com/building/fulton-greene/10w",
"address": "570 Fulton Street #10W",
"neighborhood": "Fort Greene",
"zip": "11217",
"transaction": "for-rent",
"price": 4410,
"currency": "USD",
"beds": 1,
"baths": 1,
"listedBy": "Goose Property Management LLC",
"newDevelopment": true
}

Use cases

  • Pull Brooklyn rentals and compare asking rent, beds, and neighborhood in a spreadsheet.
  • Build a brokerage list from the names printed on public search cards.
  • Schedule a morning run in monitor mode and export only listing ids that were not in yesterday’s file.
  • Feed address, price, and beds into an internal comps sheet. For sold comps outside this portal, continue with Realtor.com Scraper.

Integration examples

Replace APIFY_TOKEN. The slug below is the Store name.

Node.js

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("crawloop/streeteasy-scraper").call({
area: "Brooklyn",
transaction: "for-rent",
maxItems: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("crawloop/streeteasy-scraper").call(run_input={
"area": "Manhattan",
"transaction": "for-sale",
"maxItems": 25,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(len(items))

cURL

curl -X POST "https://api.apify.com/v2/acts/crawloop~streeteasy-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"area":"Brooklyn","transaction":"for-rent","maxItems":10}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store name crawloop/streeteasy-scraper.

Example prompts:

  • "Run StreetEasy Scraper for Brooklyn for-rent listings and return the top 20 rows as JSON"
  • "Scrape StreetEasy sale listings in Manhattan and summarize price, beds, and neighborhood"
  • "Run StreetEasy Scraper in monitor mode for Queens rentals, then use Realtor.com Scraper for sold comps"

Suite next step

This Actor covers NYC rent and sale search cards. For sold comps and ZIP searches on a national portal, run Realtor.com Scraper. For commercial sale and lease, run LoopNet Scraper.

FAQ

Does this open every property page? No. Rows are the search cards: price, beds, neighborhood, and the name on the card. Phone and email are not on that card.

Why is a proxy required? The search page is denied from datacenter and ordinary residential IPs. The default proxy is Apify Unblocker in the US.

What does monitor mode skip? Listing ids already stored for that same search URL. Change the area or the transaction and it is a new cursor. A run with no new ids writes zero rows.

Which New York areas work? A borough such as Brooklyn, Manhattan, Queens, Bronx, or Staten Island, or a neighborhood such as Upper East Side. A pasted for-rent or for-sale search URL keeps the filters already in that address.

Can I export rentals and sales? Yes. for-rent returns asking rent. for-sale returns asking sale price. Each saved row is one search card in the JSON dataset.