# Zillow Rental Listings Scraper: Rent Price Monitor (`themineworks/zillow-rental-listings`) Actor

Scrape Zillow for-rent listings by city or zip. Extract monthly rent, beds, baths, sqft, availability date & listing URL. Filter by rent range, beds, baths, and rental type. No login required.

- **URL**: https://apify.com/themineworks/zillow-rental-listings.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Real estate, Lead generation, MCP servers
- **Stats:** 9 total users, 6 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.60 / 1,000 zillow properties

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/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

## 🏡 Zillow Rental Listings Scraper: Rent & Availability Data

> **Part of the Real Estate MCP.** This actor's data is also available to AI agents through our [Real Estate MCP server](https://apify.com/themineworks/real-estate-mcp) — eight listing, sales and rental-market tools behind one endpoint. No result, no charge.

> ⚡ Part of a 69-scraper suite trusted by 450+ developers across 8,000+ runs · >99% run success · no login, no cookies, no ban risk.

> 💸 You're only charged for delivered results. Empty searches, failed pages and duplicate listings are never billed.

### Overview

Zillow Rental Listings Scraper extracts for-rent listings from Zillow.com by city, ZIP code, or neighborhood. Every record carries monthly rent, beds, baths, square footage, availability date, address, coordinates, and the listing URL. No login and no API key.

Built lean and HTTP-only (512 MB), it runs on Apify residential proxies and bills pay-per-result. Ideal for rental-market benchmarking, investor underwriting, or building a landlord-lead pipeline.

✅ No login required | ✅ No API key | ✅ Pay only for results | ✅ MCP-ready for AI agents

Reliability: blocked, empty, or failed regions are never charged. You only pay for rental records actually delivered to your dataset.

### Features

Location and filter coverage. Search by city, state, ZIP or neighborhood with rent, beds and type filters.
Availability dates. Each listing carries `availableFrom` when Zillow publishes a move-in date.
Rent Zestimate. Compare asking rent against Zillow's own rent estimate on every record.
Full property fields. Beds, baths, sqft, property type, coordinates, and photo URL.
HTTP-only and lean. Runs on 512 MB with residential proxies for reliable coverage.

### How it works

Zillow's official APIs are deprecated and partner-gated, and none give you the full public list of for-rent listings with monthly rent and availability. This actor queries Zillow's own search backend directly with a for-rent filter, resolving any location string to a region automatically.

You control the location, the filters, and the volume. The actor pages through results, extracts each listing into a flat JSON record, and pushes to the dataset. Field availability depends on what Zillow publishes for each rental.

### 🧾 Input configuration

```json
{
  "location": "New York, NY",
  "maxItems": 100,
  "minRent": 1500,
  "maxRent": 4000,
  "minBeds": 1,
  "rentalType": "APARTMENT"
}
```

### 📤 Output format

```json
{
  "zpid": "2078104858",
  "address": "350 W 42nd St APT 12B, New York, NY 10036",
  "addressLine1": "350 W 42nd St APT 12B",
  "city": "New York",
  "state": "NY",
  "zipCode": "10036",
  "price": 3400,
  "priceLabel": "$3,400/mo",
  "beds": 1,
  "baths": 1,
  "sqft": 720,
  "propertyType": "APARTMENT",
  "statusType": "FOR_RENT",
  "zestimate": null,
  "rentZestimate": 3350,
  "latitude": 40.75821,
  "longitude": -73.99188,
  "detailUrl": "https://www.zillow.com/homedetails/350-W-42nd-St-APT-12B-New-York-NY-10036/2078104858_zpid/",
  "imgSrc": "https://photos.zillowstatic.com/fp/xyz789-p_e.jpg",
  "monthlyRent": 3400,
  "availableFrom": "2026-08-01"
}
```

Every rental record carries these fields:

| Field | Description |
| --- | --- |
| 💵 `monthlyRent` | Monthly rent in USD |
| 🗓️ `availableFrom` | Move-in date (when Zillow publishes it) |
| 🏠 `address` / `city` / `state` / `zipCode` | Full location fields |
| 💰 `price` / `priceLabel` | Numeric and formatted price |
| 🛏️ `beds` / 🛁 `baths` | Bedroom and bathroom counts |
| 📏 `sqft` | Interior square footage |
| 🏡 `propertyType` | Property type (e.g. APARTMENT, HOUSE) |
| 🔖 `statusType` | Listing status (FOR\_RENT) |
| 📊 `zestimate` / 🏦 `rentZestimate` | Zillow's own estimates |
| 📍 `latitude` / `longitude` | Coordinates |
| 📷 `imgSrc` | Primary photo URL |
| 🔗 `detailUrl` | Listing detail URL |
| 🆔 `zpid` | Zillow property ID |

### 💼 Common use cases

**Rental market analysis**
Track asking rents by ZIP and bedroom count.
Chart trends over time by re-running on a schedule.

**Property management benchmarking**
Compare your rents to live comparable listings.
Spot when a unit is under- or over-priced within days.

**Investor rent underwriting**
Model gross rents for target properties across a metro.
Combine rent Zestimates with sold data for gross-yield modelling.

**Renter and landlord lead lists**
Surface fresh rental inventory for outreach.
Feed dashboards with new-supply counts by neighborhood.

### 🚀 Getting started

1. Create a free Apify account and open the actor.
2. Enter a location (e.g. `New York, NY` or `10001`).
3. Optionally set `maxItems`, `minRent`, `maxRent`, `minBeds`, `minBaths`, or `rentalType`.
4. Click Start and let the actor page through results.
5. Download your data as JSON, CSV, or Excel, or pull via API or MCP.

### FAQ

**Do I need a Zillow account or API key?**
No. The scraper requires no login, no cookies, and no API key. You only need an Apify account to run it.

**Can I filter by rent and bedrooms?**
Yes. Use `minRent`, `maxRent`, `minBeds`, and `minBaths` to narrow results, and `rentalType` (e.g. `APARTMENT`, `HOUSE`, `TOWNHOUSE`, `CONDO`) to filter by property type.

**What does the availability date mean?**
`availableFrom` is the move-in date Zillow publishes for the rental, when available.

**How much does the Zillow Rental Listings Scraper cost?**
Pay per result: $1 per 1,000 results ($0.001 per listing), with no free tier. You only pay for listings actually returned.

**Is scraping Zillow legal?**
Scraping publicly available data is generally permissible, but results may include personal data protected under laws like GDPR. Ensure you have a legitimate purpose and comply with applicable regulations.

**Can I use it inside an AI agent?**
Yes. It is exposed as an MCP tool. See below.

### Use in Claude, ChatGPT & any MCP agent

```
https://mcp.apify.com/?tools=themineworks/zillow-rental-listings
```

Or call it programmatically with the Apify client:

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('themineworks/zillow-rental-listings').call({
  location: 'New York, NY',
  maxItems: 100,
  minRent: 1500,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### 🛠️ Related real estate actors

Chain rentals with the rest of the wedge:

- **[Zillow Search Scraper](https://apify.com/themineworks/zillow-search-scraper)**: for-sale listings by location.
- **[Zillow Property Details](https://apify.com/themineworks/zillow-property-details)**: full detail pages by URL or ZPID.
- **[Zillow Recently Sold](https://apify.com/themineworks/zillow-recently-sold)**: sold comps for CMA.
- **[Redfin Scraper](https://apify.com/themineworks/redfin-scraper)**: Redfin for-sale and sold listings.
- **[Realtor.com Scraper](https://apify.com/themineworks/realtor-scraper)**: Realtor.com listings with agent data.
- **[99acres Scraper](https://apify.com/themineworks/99acres-scraper)**: India rent, buy, PG, and commercial listings.

Typical flow: zillow-rental-listings drives rent benchmarks, zillow-recently-sold sets purchase comps, zillow-property-details fills in full history for candidates.

Found a bug or have a feature request? Open an issue on the actor's Apify Console page or reach out through the Apify profile.

# Actor input Schema

## `location` (type: `string`):

City, zip code, or neighborhood (e.g. 'New York, NY', '10001', 'Santa Monica, CA').

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

Maximum number of rental listings to return.

## `minRent` (type: `integer`):

Minimum monthly rent in USD.

## `maxRent` (type: `integer`):

Maximum monthly rent in USD.

## `minBeds` (type: `integer`):

Minimum number of bedrooms (0 = studio).

## `minBaths` (type: `integer`):

Minimum number of bathrooms.

## `rentalType` (type: `string`):

Filter by rental property type.

## Actor input object example

```json
{
  "location": "Austin, TX",
  "maxItems": 100,
  "rentalType": ""
}
```

# 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 = {
    "location": "Austin, TX",
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/zillow-rental-listings").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 = {
    "location": "Austin, TX",
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/zillow-rental-listings").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 '{
  "location": "Austin, TX",
  "maxItems": 100
}' |
apify call themineworks/zillow-rental-listings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=themineworks/zillow-rental-listings",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/EmcHgYMMtODmLAHic/builds/g2C8T0GNECeaBc2ei/openapi.json
