# Zillow Scraper (`eunit/zillow-scraper`) Actor

Extract data about properties for sale and rent on Zillow using the Zillow API, but with no daily call limits. Scrape millions of listings and download your data as HTML, JSON, CSV, Excel, or XML. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.

- **URL**: https://apify.com/eunit/zillow-scraper.md
- **Developed by:** [Emmanuel Uchenna](https://apify.com/eunit) (community)
- **Categories:** Real estate, Travel, Lead generation
- **Stats:** 126 total users, 1 monthly users, 100.0% runs succeeded, 6 bookmarks
- **User rating**: No ratings yet

## Pricing

$22.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period. You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

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

## 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 Data Scraper (Map View & Filters) 🏡

> **⚠️ IMPORTANT: RESIDENTIAL PROXY REQUIRED**
> Zillow uses aggressive anti-bot protection (PerimeterX). Running this scraper on the **Apify Platform** without **Residential Proxies** will result in a `403 Forbidden` error. Please ensure "Residential proxies" are enabled in the Proxy Configuration before starting a run.

### 💡 What is the Zillow Rental Data Scraper?

This **Zillow Rental Data Scraper** is a powerful Apify Actor designed to collect comprehensive property data for listings marked **"For Rent"** on [Zillow.com](https://www.zillow.com/).

Unlike traditional URL-based scraping, this tool mimics the Zillow map-view search, allowing you to define a **geographic bounding box (latitude/longitude coordinates)** and apply specific **rental filters** (e.g., min/max price, beds, baths) to capture bulk data efficiently.

It is perfect for **real estate analysis**, **market trend tracking**, and gathering **detailed property data** for large areas without being limited by Zillow's front-end pagination.

#### Key Capabilities

- **Geographic Focus:** Scrape listings within a precise map area using a bounding box.
- **Detailed Filters:** Specify min/max limits for price, bedrooms, and bathrooms.
- **Comprehensive Data:** Extracts addresses, pricing, availability counts, coordinates, and most importantly, **all available photo URLs** for each property.
- **Clean Output:** Data is cleaned and transformed to include absolute URLs for the listing page and direct links to
  all property images.

***

### 🚀 How to Use the Zillow Scraper

Getting started with this Zillow Rental Scraper is fast and easy.

#### 1. Configure Your Search Input

This Actor requires you to define your desired geographic area and apply rental filters in the **Input** tab.

The easiest way to define your geographic box (NE/SW Latitude/Longitude) is to visit Zillow's map view, zoom in to your target area, and grab the coordinates from the URL or use a third-party bounding box tool.

| Field                       | Description                                                                                                      | Example Value                                  |
|:----------------------------|:-----------------------------------------------------------------------------------------------------------------|:-----------------------------------------------|
| **Search Query (Optional)** | A city or ZIP code string (e.g., `'Austin, TX'`).                                                                | `"Austin, TX"`                                 |
| **NE/SW Lat/Long**          | **Required**. Coordinates defining the corners of your map box.                                                  | `ne_lat: 30.6`, `sw_lat: 30.0`                 |
| **Min/Max Price**           | Filter the rental price range.                                                                                   | `min_price: 10000`, `max_price: 30000`         |
| **Min/Max Beds/Baths**      | Filter the size of the properties.                                                                               | `min_beds: 1`, `max_bathrooms: 2`              |
| **Proxy Configuration**     | **Required for Apify Platform**. Select **Residential Proxies** to bypass Zillow blocks.         | `Residential proxies`                          |

#### 2. Run the Actor

Click the **Start** button in the Apify Console. The Actor will initialize, load your parameters, scrape the relevant data using a proxy, and incrementally save the results.

#### 3. View and Download Results

Once the run is complete (or even while it's running!), navigate to the **Storage** tab and open the default **Dataset**.

Scraped rental listings are saved as a structured dataset, available to download in various formats: **JSON, CSV, Excel, XML**, and more.

***

### ⚙️ Input Configuration

The Actor input is divided into four main sections. For the "Search Parameters", "Geographic Boundary", and "Proxy Configuration" sections, ensure you switch the input mode to **JSON** (if required) and provide the correct object structure as demonstrated below.

#### 1. Search Query (`search_value`)

This is a standard string input.

- **Format:** `String`
- **Example:** `"Austin, TX"`

#### 2. Search Parameters (`search_parameters_section`)

This field accepts a **JSON object** containing your rental filters.

- **Format:** `Object` (JSON)
- **Example:**

```json
{
  "min_price": 10000,
  "max_price": 30000,
  "min_beds": 1,
  "max_beds": 3,
  "min_bathrooms": 1,
  "max_bathrooms": 2,
  "is_entire_place": true,
  "is_room": false,
  "pagination": 1
}
```

#### 3. Geographic Boundary (Bounding Box) (`geographic_section`)

This field accepts a **JSON object** defining the map coordinates for your search area.

- **Format:** `Object` (JSON)
- **Example:**

```json
{
  "ne_lat": 30.6,
  "ne_long": -97,
  "sw_lat": 30,
  "sw_long": -98,
  "zoom_value": 15
}
```

#### 4. Proxy Configuration (`proxyConfiguration`)

**CRITICAL FOR APIFY PLATFORM RUNS**: Zillow blocks standard Datacenter IPs. To run this scraper successfully on the Apify Platform, you **MUST** use **Residential Proxies**.

- **Residential Proxies**: Select "Residential proxies" in the proxy configuration.

- **Local Runs**: If running locally on your own machine, you may not need a proxy if your home IP is not blocked.

- **Format:** `Object` (ProxyConfiguration)

- **Example:** Select "Residential proxies" in the UI.

See the example below of full Actor input configuration:

![Actor input image](https://i.postimg.cc/3RpF3Vps/screenshot-2025-12-15-at-14-25-26.png)

***

### 📊 Output Data Structure

The scraper returns one data object for each property listing, providing rich, clean, and immediately usable data points.

Here is a sample of the data you will receive:

| Field Name                               | Type      | Description                                               | Sample Value                                                           |
|:-----------------------------------------|:----------|:----------------------------------------------------------|:-----------------------------------------------------------------------|
| **`statusText`**                         | `String`  | The name or title of the listing.                         | `"Hillside Place"`                                                     |
| **`address`**                            | `String`  | Full street address of the property.                      | `"4821 E Riverside Dr, Austin, TX"`                                    |
| **`detailUrl`**                          | `String`  | The **full, absolute URL** to the listing page on Zillow. | `"https://www.zillow.com/apartments/austin-tx/hillside-place/5Xhsyx/"` |
| **`units`**                              | `Array`   | Details on available units, including `price` and `beds`. | `[{ "price": "$600+", "beds": "1" }, ...]`                             |
| **`imgSrc`**                             | `String`  | The URL for the primary image used on the listing card.   | `https://photos.zillowstatic.com/...-p_e.jpg`                          |
| **`carouselPhotosComposable.photoData`** | `Array`   | **List of all available photo URLs** for the property.    | `["https://photos.zillowstatic.com/fp/...", ...]`                      |
| **`latLong.latitude`**                   | `Number`  | The geographic latitude of the property.                  | `30.230764`                                                            |
| **`availabilityCount`**                  | `Integer` | Total number of units available for rent.                 | `5`                                                                    |
| **`zpid`**                               | `String`  | The unique Zillow Property ID.                            | `"30.230764--97.7181"`                                                 |

### Example Output

```json
{
  "zpid": "30.46529--97.60529",
  "id": "30.46529--97.60529",
  "providerListingId": "5c5nn5nycnc5q",
  "imgSrc": "https://photos.zillowstatic.com/fp/7d1a61d3b011516c8a5204f1b398e474-p_e.jpg",
  "hasImage": true,
  "detailUrl": "https://www.zillow.com/apartments/pflugerville-tx/the-beacon-at-pfluger-farm/CjjCGn/",
  "statusType": "FOR_RENT",
  "statusText": "The Beacon at Pfluger Farm",
  "address": "1300 Rauscher Rd, Pflugerville, TX",
  "addressStreet": "1300 Rauscher Rd # f52cfdc49",
  "addressCity": "Pflugerville",
  "addressState": "TX",
  "addressZipcode": "78660",
  "units": [
    {
      "price": "$1,214+",
      "beds": "1",
      "roomForRent": false
    },
    {
      "price": "$1,782+",
      "beds": "2",
      "roomForRent": false
    }
  ],
  "lotId": 2748185226,
  "latLong": {
    "latitude": 30.46529,
    "longitude": -97.60529
  },
  "listCardRecommendation": {
    "flexFieldRecommendations": [
      {
        "displayString": "11 available units",
        "contentType": "frUnitsAvailable"
      }
    ],
    "ctaRecommendations": [
      {
        "displayString": "Request a tour",
        "contentType": "REQUEST_A_TOUR"
      }
    ]
  },
  "isSaved": false,
  "buildingName": "The Beacon at Pfluger Farm",
  "isBuilding": true,
  "canSaveBuilding": true,
  "has3DModel": false,
  "isFeaturedListing": true,
  "isShowcaseListing": false,
  "list": true,
  "relaxed": false,
  "carouselPhotosComposable": {
    "baseUrl": "https://photos.zillowstatic.com/fp/%7BphotoKey%7D-p_e.jpg",
    "communityBaseUrl": null,
    "photoData": [
      "https://photos.zillowstatic.com/fp/7d1a61d3b011516c8a5204f1b398e474-p_e.jpg",
      "https://photos.zillowstatic.com/fp/6ef9281fdb0d7e13b9fb90a3cec20987-p_e.jpg",
      "https://photos.zillowstatic.com/fp/1069c481833fdd6fa45c27fe7296ece7-p_e.jpg",
      "https://photos.zillowstatic.com/fp/3ae52944a1839e27510901aa70f03bb6-p_e.jpg",
      "https://photos.zillowstatic.com/fp/538f0be96c53927b7a1e3f536d05fed0-p_e.jpg",
      "https://photos.zillowstatic.com/fp/ba77a295f04bc79a14d93ed34dcc1e5f-p_e.jpg",
      "https://photos.zillowstatic.com/fp/2f5c50213efb1e57356fc2d9eb332089-p_e.jpg",
      "https://photos.zillowstatic.com/fp/bc2f048dd1d895baabd564e6f733b07c-p_e.jpg",
      "https://photos.zillowstatic.com/fp/90d8a596e849d8a67d3b05dcad9a038c-p_e.jpg",
      "https://photos.zillowstatic.com/fp/c3db6fee321ab87e0aec5574e2b96798-p_e.jpg",
      "https://photos.zillowstatic.com/fp/66f87c6c89345569fa9969bc7752e69c-p_e.jpg",
      "https://photos.zillowstatic.com/fp/9b4d966520512aafe6cc452a9e3c03a2-p_e.jpg",
      "https://photos.zillowstatic.com/fp/b3e544dcadcd50e9909c13cda614409c-p_e.jpg",
      "https://photos.zillowstatic.com/fp/88b022e258a3689392794869bce2c8b5-p_e.jpg",
      "https://photos.zillowstatic.com/fp/04aa9848fd82a6af259b8ee4057ddada-p_e.jpg",
      "https://photos.zillowstatic.com/fp/64f3e72700fa174491609240a2772348-p_e.jpg",
      "https://photos.zillowstatic.com/fp/e2024d6f788006f6f646e908030db1f6-p_e.jpg",
      "https://photos.zillowstatic.com/fp/7b9ec973819dcde5d354fe5fb396fb35-p_e.jpg",
      "https://photos.zillowstatic.com/fp/c2f38c90c4628d1a472a445b1b79b87f-p_e.jpg",
      "https://photos.zillowstatic.com/fp/010b8274d97cb58d03f43f33511e1c16-p_e.jpg",
      "https://photos.zillowstatic.com/fp/c83aab0ab0194622a262e019044b40eb-p_e.jpg",
      "https://photos.zillowstatic.com/fp/8488b9de4f2ac78b1ab8d661495205e1-p_e.jpg",
      "https://photos.zillowstatic.com/fp/3758a24dc4ff6f2df99d24a10b948499-p_e.jpg",
      "https://photos.zillowstatic.com/fp/0198c3f273d9369db18ccb371870397d-p_e.jpg",
      "https://photos.zillowstatic.com/fp/6245e857a3d8f784f3cf8d7e85b8b037-p_e.jpg",
      "https://photos.zillowstatic.com/fp/340b5363f062cc09a7876d1d6772fa96-p_e.jpg",
      "https://photos.zillowstatic.com/fp/ddd360f0f1db438298ea438c35afdc16-p_e.jpg",
      "https://photos.zillowstatic.com/fp/8b2392852d76970f4e38bb444dde9118-p_e.jpg",
      "https://photos.zillowstatic.com/fp/7c93c4adaeff5e718db6a1878515300a-p_e.jpg",
      "https://photos.zillowstatic.com/fp/402ff64e1592cff104968d216228fd15-p_e.jpg",
      "https://photos.zillowstatic.com/fp/41fc7e98b78f44a1b098479003c15c0f-p_e.jpg",
      "https://photos.zillowstatic.com/fp/1e96a1b3214f06e3352aa6e9267f9a7a-p_e.jpg",
      "https://photos.zillowstatic.com/fp/729f2ba54acab8ef7454af2fa4435239-p_e.jpg",
      "https://photos.zillowstatic.com/fp/f17991597d432633505cd1bc16b19017-p_e.jpg",
      "https://photos.zillowstatic.com/fp/c9e726647b8d47aa0afe17b5e88e1cd1-p_e.jpg",
      "https://photos.zillowstatic.com/fp/214b658c9de15f14982974d07663111d-p_e.jpg",
      "https://photos.zillowstatic.com/fp/e7f14898a3770034f6a713bcea34f4c7-p_e.jpg",
      "https://photos.zillowstatic.com/fp/4819e0d2edc6d2d32badeba4fdea044b-p_e.jpg",
      "https://photos.zillowstatic.com/fp/68406fbf2c016fd38fdec02e411b155d-p_e.jpg",
      "https://photos.zillowstatic.com/fp/2111ff9c000d2d5f3c37b1d838f902d6-p_e.jpg",
      "https://photos.zillowstatic.com/fp/e12b2a8952536f45e55c6716de2ef273-p_e.jpg",
      "https://photos.zillowstatic.com/fp/a0e7c07753f64ebbdf9e2b186e3f368f-p_e.jpg",
      "https://photos.zillowstatic.com/fp/f8168301283fe4477153eac9c1320fc8-p_e.jpg",
      "https://photos.zillowstatic.com/fp/1971944837586c1bca34fa72f088ef85-p_e.jpg",
      "https://photos.zillowstatic.com/fp/7f0cd466eb612c36955aabd3346020ae-p_e.jpg",
      "https://photos.zillowstatic.com/fp/f2159903758d257c046e8c4db8b9630e-p_e.jpg",
      "https://photos.zillowstatic.com/fp/eb3f16643202f129ec81c8997138f392-p_e.jpg",
      "https://photos.zillowstatic.com/fp/87fbce9721b2c588e3d27080e3deacfa-p_e.jpg"
    ],
    "communityPhotoData": null,
    "isStaticUrls": false
  },
  "availabilityCount": 11,
  "marketingTreatments": [
    "trustedListing",
    "paid",
    "zillowRentalManager",
    "multiFamilySalesListing",
    "paidOrUnpaidMultifamily",
    "paidMultifamily",
    "multifamilyPremium"
  ],
  "listPriceIncludesRequiredMonthlyFees": false,
  "isInstantTourEnabled": false,
  "isContactable": true,
  "isPaidBuilderNewConstruction": false
}
```

***

### ⚠️ Legal Notice

Web scraping public data like prices and addresses from Zillow is typically legal. However, scraping may sometimes include data regulated by laws like **GDPR**. Please ensure your scraping activities comply with all applicable laws and Zillow's **Terms of Service**. If you plan to scrape sensitive data or use the output commercially, we highly recommend consulting with a legal professional.

For more details on web scraping legality, check out our article on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### Related Actors

Expand your data collection capabilities with these other powerful Apify Actors developed by the same author:

#### [Zillow Scraper](https://apify.com/eunit/zillow-scraper)

- **URL:** <https://apify.com/eunit/zillow-scraper>
- **Description:** This general Zillow Scraper extracts data for properties **for sale**, **for rent**, or **recently sold** on Zillow. Use this Actor for broad market research or historical data collection across all property types.

#### [LinkedIn Job Postings Scraper](https://apify.com/eunit/linkedin-job-postings-scraper)

- **URL:** <https://apify.com/eunit/linkedin-job-postings-scraper>
- **Description:** Designed for lead generation and career intelligence, this scraper extracts tailored **job titles, company names, locations, and job URLs** from LinkedIn. Essential for matching job market trends with real estate data (e.g., analyzing local economic activity).

#### [Target Product Reviews Scraper](https://apify.com/eunit/target-reviews-scraper)

- **URL:** <https://apify.com/eunit/target-reviews-scraper>
- **Description:** A tool for market research and e-commerce analysis. Scrape **product reviews, star ratings, and consumer sentiment** from Target.com, useful for businesses analyzing the retail landscape in target neighborhoods.

### Your feedback

We are always working on improving the performance of our Actors. So if you’ve got any technical feedback for the [Zillow Rent Data Scraper](https://apify.com/eunit/zillow-rent-data-scraper) Actor or simply found a bug, please create an issue on the [Actor’s Issues tab](https://console.apify.com/actors/glmQL91Lqofgy3nh7/issues) in [Apify Console](https://console.apify.com/actors/glmQL91Lqofgy3nh7).

### Download

📄 Download this guide in PDF format 👉
[Download PDF](http://eunit.me/assets/docs/guide-zillow-rent-data-scraper-apify.pdf)

# Actor input Schema

## `search_value` (type: `string`):

Enter a city, state, or ZIP code to focus the search (e.g., 'Austin, TX'). Note: Geographic coordinates (lat/long) will override this if provided.

## `search_parameters_section` (type: `object`):

Define min/max beds, baths, and price ranges.

## `geographic_section` (type: `object`):

Define the map area to scrape using North-East (NE) and South-West (SW) coordinates.

## `proxyConfiguration` (type: `object`):

Select proxies to be used by your crawler.

## Actor input object example

```json
{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("eunit/zillow-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 = { "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    } }

# Run the Actor and wait for it to finish
run = client.actor("eunit/zillow-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 '{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call eunit/zillow-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,eunit/zillow-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/uQ4wa1z93Ejlhi0wP/builds/N8aZfVxV4MUq5qnVc/openapi.json
