# Zumper Housing MCP Server — Rental Search for AI (`longanimous_bracken/zumper-housing-scraper`) Actor

MCP Server for Zumper rental search. Find apartments and houses for rent. AI-agent ready — returns price, bedrooms, location, and amenities.

- **URL**: https://apify.com/longanimous\_bracken/zumper-housing-scraper.md
- **Developed by:** [petteri mähönen](https://apify.com/longanimous_bracken) (community)
- **Categories:** Real estate, MCP servers
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 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.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🏢 Zumper Housing Scraper

Scrape rental listings from [Zumper](https://www.zumper.com), one of the largest US rental marketplaces. Extracts apartments, rooms, and houses with full details including amenities and pricing.

### ⚡ Features

- **Multi-city search** — scrape multiple cities in a single run
- **Full listing extraction** — title, address, price, beds, baths, amenities, listing URL
- **SPA handling** — PlaywrightCrawler handles Zumper's JavaScript-rendered interface
- **Structured data** — consistent output schema across all listing types
- **Configurable** — set max results per location

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `locations` | string\[] | `["San Francisco, CA"]` | Cities to scrape |
| `maxResults` | number | `0` | Max listings per location (0 = no limit) |

#### Example

```json
{
  "locations": ["San Francisco, CA", "New York, NY"],
  "maxResults": 50
}
```

### Output

Each listing includes:

| Field | Example |
|---|---|
| `title` | "Modern 1BR in SoMa" |
| `address` | "123 Main St, San Francisco, CA 94105" |
| `price` | "$3,500/mo" |
| `beds` | "1" |
| `baths` | "1" |
| `amenities` | \["In-unit laundry", "Dishwasher", "Parking"] |
| `link` | "https://www.zumper.com/apartments/..." |
| `scraped_at` | ISO timestamp |

### Use Cases

- **Rental market analysis** — compare prices across Zumper listings
- **Lead generation** — find available units matching specific criteria
- **Price tracking** — monitor rental market trends over time
- **Data aggregation** — combine with other sources for comprehensive market views

### Performance

- \~30 seconds per run (51 listings)
- 4 GB RAM allocation (PlaywrightCrawler)
- Handles Zumper's SPA architecture reliably

### Limitations

- Zumper's SPA structure may require full page loads
- Some listing details may vary by property type
- Results depend on Zumper's live availability

### Pricing

**Pay per event** — charged per listing extracted.

### 💬 Quick Start for AI Assistants

Copy and paste this into ChatGPT, Claude, or another AI assistant to get help using this actor:

***

You are helping me use the "Zumper Housing Scraper" on Apify (actor ID: 260hZfwVeuEB6M3x6). It extracts rental listings (apartments, rooms, houses) from zumper.com across US cities.

Input fields:

- locations: string array, e.g. \["San Francisco, CA", "New York, NY"]
- maxResults: number, max listings per location (default: 0, 0 = no limit)

Output fields per listing: title, address, price, beds, baths, amenities\[], link, scraped\_at.

## Help me with the right input, output processing, or troubleshooting.

### 📋 Changelog

| Version | Date | Changes |
|---------|------|---------|
| 0.1.2 | 2026-07-15 | Added AI assistant prompt block, enriched README with use cases and comparison table, updated actor title with keywords |
| 0.1.1 | 2026-07-14 | Cloud-verified extraction — 51 listings in 30s, Zumper SPA crawling stable |
| 0.1.0 | 2026-07-13 | Initial release — Zumper rental listing extraction, PlaywrightCrawler |

# Actor input Schema

## `locations` (type: `array`):

US cities to search. Examples: San Francisco CA, Seattle WA, New York NY.

## `maxResults` (type: `integer`):

Stop after this many listings. 0 = no limit.

## Actor input object example

```json
{
  "locations": [
    "San Francisco, CA"
  ],
  "maxResults": 0
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("longanimous_bracken/zumper-housing-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 = {}

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

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

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

```

## CLI example

```bash
echo '{}' |
apify call longanimous_bracken/zumper-housing-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=longanimous_bracken/zumper-housing-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/260hZfwVeuEB6M3x6/builds/bPeJTcspgCiWicIvM/openapi.json
