# StreetEasy 🔥 $0.80/1K NYC Rentals & Sales (`azzouzana/streeteasy-scraper`) Actor

From $0.80/1K 🔥 Paste a StreetEasy NYC rental or sales search URL and export price, beds, baths, address, neighborhood, photos, and listing links. Optional full details for the description, lease terms & more. JSON, CSV, Excel, or API. Start now! 🚀

- **URL**: https://apify.com/azzouzana/streeteasy-scraper.md
- **Developed by:** [Azzouzana](https://apify.com/azzouzana) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**StreetEasy NYC rental and sales scraper** Paste a **for-rent** or **for-sale search URL** — borough, neighborhood, price, beds, and baths — and get **JSON or CSV** in minutes. Each row is the listing as StreetEasy publishes it: price, address, neighborhood, photos, and the listing link. Turn on **fetchFullDetails** when you also want the description and, for rentals, lease terms. StreetEasy stops paging a search early — this actor **bypasses that result limit** and can collect **thousands** of listings (duplicates skipped).

👉 [Start free on Apify](https://apify.com/sign-up?fpr=cbgdsf) — **no credit card required.**

***

### 🤩 What you get

One **search URL** in → one row per listing out. Pagination is handled for you. Each row is the listing record as the site publishes it: price, address, photos, and the other fields on that record.

**Optional full details** (`fetchFullDetails: true`) add the written description to the same row, plus rental lease terms and upcoming open houses when StreetEasy shows them. That add-on is charged only when the extra fields come back.

**Built for real workflows:**

- ✅ **Filter-preserving** — borough, neighborhood, price, beds, and baths from your URL stay intact
- ✅ **Past the site result limit** — raise **maxItems** and the actor keeps going, up to **5,000** unique rows (duplicates skipped automatically)
- ✅ **Rentals and sales** — use a for-rent URL or a for-sale URL
- ✅ **CRM-friendly** — one listing per row for Airtable, HubSpot, or a spreadsheet
- ✅ **Pay for what you save** — each listing row is billed when saved; full details are a separate charge only when that option is on

***

### 📚 How to use, 5-second setup

1. 👉 [Create a free Apify account](https://apify.com/sign-up?fpr=cbgdsf) — **no credit card required**
2. Open this actor → paste your StreetEasy search URL into **startUrl**
3. Set **maxItems** (default **100**). Free plan runs save **5 items** per run, **5 runs a day**, with **1 minute** between runs
4. Optional: turn on **fetchFullDetails** for the description and rental lease terms
5. Hit **Start** → download JSON, CSV, Excel, or pull via API

**Where to get startUrl:** On StreetEasy, open For Rent or For Sale, set your borough, neighborhood, and filters, then copy the address bar.

***

### 🛠️ Input

| Field | Type | Description | Default |
|-------|------|-------------|---------|
| `startUrl` | string | StreetEasy **for-rent** or **for-sale** search URL | Manhattan rentals |
| `maxItems` | integer | Max unique listings to save (10–5,000) | `100` |
| `fetchFullDetails` | boolean | Add the description, and rental lease terms when shown (separate charge) | `false` |

A single building or listing page is not a search. Paste the results page after you set filters.

***

### 💰 Pricing

**From $0.80 per 1,000 listings** saved on the Gold plan.

Optional **full details** are **+$2 per 1,000** listings you enrich. You are only charged for details that come back successfully.

Open the **Pricing** tab on the actor for the exact events. A run also has a small start fee.

***

### 💡 Why scrape StreetEasy?

- Pull a Manhattan, Brooklyn, Queens, Bronx, or Staten Island rental set without clicking every page
- Track asking rent or sale price, beds, baths, and neighborhood for a comp sheet
- Feed addresses and listing links into a CRM or underwriting file
- Compare a filtered slice (price, beds, baths) across neighborhoods
- Add the listing description only when you need the extra copy

***

### 🧐 Output sample

```json
{
  "id": "5168930",
  "price": 3400,
  "street": "269 East 10th Street",
  "unit": "11",
  "areaName": "East Village",
  "bedroomCount": 1,
  "fullBathroomCount": 1,
  "halfBathroomCount": 0,
  "livingAreaSize": 0,
  "noFee": false,
  "slug": null,
  "urlPath": "/building/269-east-10-street-new_york/11",
  "status": "ACTIVE",
  "sourceGroupLabel": "Compass",
  "geoPoint": {
    "latitude": 40.728424,
    "longitude": -73.98303
  },
  "photos": [
    {
      "key": "47c7f79a232960dbaedaa30ed8265f54"
    },
    {
      "key": "6ff3794c4e8fa89fb79bc172773313c2"
    },
    {
      "key": "102597243ab04e149ad600c4c42dcde4"
    }
  ],
  "leadMedia": {
    "photo": {
      "key": "47c7f79a232960dbaedaa30ed8265f54"
    }
  },
  "listingType": "rental",
  "url": "https://streeteasy.com/building/269-east-10-street-new_york/11",
  "streetLine": "269 East 10th Street #11",
  "neighborhood": "East Village",
  "photoUrls": [
    "https://photos.zillowstatic.com/fp/47c7f79a232960dbaedaa30ed8265f54-p_e.jpg",
    "https://photos.zillowstatic.com/fp/6ff3794c4e8fa89fb79bc172773313c2-p_e.jpg",
    "https://photos.zillowstatic.com/fp/102597243ab04e149ad600c4c42dcde4-p_e.jpg"
  ],
  "description": "1 bed with home office on a beautiful tree lined street in the heart of East Village! Reach out for video :)\n\nBedroom has en-suite bathroom and unit has an additional room/home office space!\n\nLocated in one of the most vibrant neighborhoods in NYC, this apartment puts you right in the center of it all. Enjoy the eclectic mix of trendy restaurants, boutique shops, and lively entertainment options just steps from your front door.\n\n*$20 credit check and guarantor/Rhino required to apply.\n*First month and security deposit due at lease signing.\n*Rent includes water, heat, and cooking gas.",
  "availableAt": "2026-11-03",
  "pricing": {
    "price": 3400,
    "noFee": false,
    "monthsFree": null,
    "leaseTermMonths": null
  }
}
```

***

### ❓ FAQ

**What URLs work?**
A StreetEasy **search results** URL after you pick For Rent or For Sale and set filters in the browser. Borough and neighborhood pages work, including price, beds, and baths in the URL. A single listing page does not.

**How many listings can I pull?**
Set **maxItems** to your goal (up to **5,000**). The actor saves each listing once. It **bypasses the website result limit** and can collect **thousands** of listings. Duplicates are skipped.

**Why am I only getting 5 results?**
Free Apify plan: **5 items per run**. Upgrade to a paid plan to use your full **maxItems**. Free accounts also have **5 runs per day** and a **1 minute** gap between runs.

**What is fetchFullDetails?**
Optional enrichment with the listing description and, for rentals, lease terms and upcoming open houses when StreetEasy shows them. The run is slower. Details are billed **separately** (about **$2 per 1,000** successful detail fetches — see the **Pricing** tab).

**Why did my run stop before maxItems?**
Usually there are no more listings for that search, the free-tier cap applied, or the daily run limit was hit (5 runs/day, 1 minute between runs for free users).

**Wrong URL or page not found?**
Use a **search results** URL copied from StreetEasy after your filters. If the URL is invalid, the run still **finishes successfully** and the dataset may include one row explaining the problem — fix **startUrl** and run again.

**Is it legal to scrape StreetEasy?**
Public listing information for research and analysis. You must comply with StreetEasy's terms and local laws. This actor is not affiliated with StreetEasy or Zillow. See [Apify's legality guide](https://blog.apify.com/is-web-scraping-legal?fpr=cbgdsf).

***

### 🔎 SEO keywords

StreetEasy scraper, NYC rentals scraper, New York apartments for rent, Manhattan rentals, Brooklyn rentals, Queens homes for sale, StreetEasy search URL, no fee apartments NYC, East Village rentals, Williamsburg rentals, Upper West Side sales, real estate leads, JSON CSV export, Apify StreetEasy actor

***

### 🔍 Looking for something else?

Browse more scrapers on [Apify Store](https://apify.com/store?fpr=cbgdsf).

#### Contact 📬

**Custom filters, scheduling, or integrations?**

- 💬 **Discord**: `@azzouzana`
- 📧 **Email**: <labs@azzouzana.com>

### ⚠️ Disclaimer

This actor is an **independent tool** and is **not affiliated with, endorsed by, or sponsored by** StreetEasy, Zillow Group, or their subsidiaries. **StreetEasy** and related marks are trademarks of their respective owners.

The actor collects **publicly visible** listing data (and optional enriched listing fields when enabled). You are responsible for using exported data in line with **StreetEasy's terms of use**, applicable **privacy laws**, and your local regulations. For general guidance on scraping, see [Apify's legality article](https://blog.apify.com/is-web-scraping-legal?fpr=cbgdsf).

# Actor input Schema

## `startUrl` (type: `string`):

Paste a StreetEasy for-rent or for-sale search URL from your browser, including borough, neighborhood, and filters. Not a single listing page.

## `maxItems` (type: `integer`):

Maximum listings to scrape. Effective limit also respects run budget and free-tier cap (5 for free users).

## `fetchFullDetails` (type: `boolean`):

Open each listing to add the description, and for rentals the lease terms and upcoming open houses when StreetEasy shows them. Slower, and billed in addition to the listing row.

## Actor input object example

```json
{
  "startUrl": "https://streeteasy.com/for-rent/manhattan",
  "maxItems": 100,
  "fetchFullDetails": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrl": "https://streeteasy.com/for-rent/manhattan",
    "maxItems": 100,
    "fetchFullDetails": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("azzouzana/streeteasy-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrl": "https://streeteasy.com/for-rent/manhattan",
    "maxItems": 100,
    "fetchFullDetails": False,
}

# Run the Actor and wait for it to finish
run = client.actor("azzouzana/streeteasy-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrl": "https://streeteasy.com/for-rent/manhattan",
  "maxItems": 100,
  "fetchFullDetails": false
}' |
apify call azzouzana/streeteasy-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,azzouzana/streeteasy-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/rsFTnkXsDN8db3n1a/builds/V8MlxJFHyLbWn1I98/openapi.json
