# Zillow State & ZIP Listings Scraper (`ayk_6789/zillow-state-live-listings-scraper`) Actor

Scrape the latest Zillow property listings across one or multiple U.S. states. Automatically resolves ZIP codes, searches Zillow for new listings, supports For Sale & FSBO properties, removes duplicates, and returns structured property data for real estate professionals.

- **URL**: https://apify.com/ayk\_6789/zillow-state-live-listings-scraper.md
- **Developed by:** [YKA](https://apify.com/ayk_6789) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.20 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 State Listing Scraper

Scrape the latest Zillow property listings across one or more U.S. states using ZIP codes automatically.

Instead of manually providing hundreds of ZIP codes, simply select the state(s) you want to search. The actor automatically resolves the ZIP codes for those states, invokes the underlying Zillow ZIP scraper, and returns one consolidated dataset.

---

## Features

* Search by one or multiple U.S. states
* Optional custom ZIP code list
* Supports multiple listing types

  * For Sale
  * FSBO
* Filters listings by listing age
* Uses residential proxies
* Automatically removes duplicate properties
* Returns the exact output generated by the Zillow ZIP scraper
* Built for large-scale statewide monitoring

---

## How it works

````

State(s)
│
▼
Load ZIP codes
│
▼
Run Zillow ZIP Scraper
│
▼
Collect all listings
│
▼
Remove duplicates
│
▼
Return final dataset

````

---

## Input

### States

List one or more states.

Example:

```json
{
    "states": [
        "Texas",
        "California"
    ]
}
````

Supported formats:

```
California
Texas
Florida
CA
TX
FL
```

***

### Custom ZIP Codes (Optional)

If ZIP codes are provided, they take priority over states.

Example

```json
{
    "zipCodes": [
        "75230",
        "90210"
    ]
}
```

***

### Listing Types

Example

```json
[
    "forSale",
    "fsbo"
]
```

Supported values

- forSale
- fsbo

***

### Maximum Listing Age

Maximum age of listings in hours.

Example

```json
48
```

***

### Maximum Listings Per ZIP

Limits the number of listings collected for each ZIP code.

Example

```json
200
```

***

### Proxy Configuration

Uses Apify Residential Proxies.

Example

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

***

## Example Input

```json
{
    "states": [
        "Texas"
    ],
    "listingTypes": [
        "forSale",
        "fsbo"
    ],
    "maxListingAgeHours": 48,
    "maxListingsPerZip": 200,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
}
```

***

## Example Output

Each record contains the property information returned by the Zillow ZIP Scraper, including fields such as:

- Property URL
- Address
- City
- State
- ZIP Code
- Price
- Bedrooms
- Bathrooms
- Square Feet
- Listing Status
- Listing Type
- Zestimate (when available)
- Days on Zillow
- Agent Information (when available)
- MLS Information (when available)
- Property Description
- Images
- Latitude & Longitude
- Property History
- Additional property metadata

The output format is identical to the Zillow ZIP Scraper output.

***

## Performance

Typical performance depends on:

- Number of selected states
- Number of ZIP codes processed
- Listing age window
- Zillow activity within each ZIP

For best performance:

- Use Residential Proxies
- Limit ZIP codes when testing
- Increase listing age when looking for older listings

***

## Notes

- ZIP code data is automatically resolved from the selected states.
- Duplicate properties appearing in multiple ZIP searches are removed automatically.
- This actor orchestrates the ZIP-based scraper and does not scrape Zillow directly.
- Results depend on current Zillow inventory and availability.

***

## Requirements

- Apify Residential Proxy is recommended.
- A valid Apify account is required.

***

## Changelog

#### v1.0

- State-based ZIP resolution
- Multiple state support
- Custom ZIP support
- Duplicate removal
- Residential proxy support
- Compatible with the Zillow ZIP Scraper

# Actor input Schema

## `states` (type: `array`):

State names or abbreviations to scrape, for example California, CA, Texas, TX.

## `zipCodes` (type: `array`):

Optional. If provided, these ZIP codes will be used instead of the state ZIP list.

## `maxZipsPerState` (type: `integer`):

Maximum number of ZIP codes to run from each selected state.

## `listingTypes` (type: `array`):

Optional listing types to pass to the existing ZIP actor. Leave empty to use the ZIP actor default.

## `maxListingAgeHours` (type: `integer`):

Maximum listing age in hours to pass to the existing ZIP actor.

## `maxListingsPerZip` (type: `integer`):

Maximum number of listings to collect per ZIP code from the existing ZIP actor.

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

Proxy configuration passed to the existing ZIP actor.

## Actor input object example

```json
{
  "states": [
    "California"
  ],
  "maxZipsPerState": 5,
  "maxListingAgeHours": 24,
  "maxListingsPerZip": 200,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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("ayk_6789/zillow-state-live-listings-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("ayk_6789/zillow-state-live-listings-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 ayk_6789/zillow-state-live-listings-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Zillow State & ZIP Listings Scraper",
        "description": "Scrape the latest Zillow property listings across one or multiple U.S. states. Automatically resolves ZIP codes, searches Zillow for new listings, supports For Sale & FSBO properties, removes duplicates, and returns structured property data for real estate professionals.",
        "version": "0.0",
        "x-build-id": "gSDje2kVBpOQNyGKA"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ayk_6789~zillow-state-live-listings-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ayk_6789-zillow-state-live-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/ayk_6789~zillow-state-live-listings-scraper/runs": {
            "post": {
                "operationId": "runs-sync-ayk_6789-zillow-state-live-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/ayk_6789~zillow-state-live-listings-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-ayk_6789-zillow-state-live-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "states"
                ],
                "properties": {
                    "states": {
                        "title": "States to Scrape",
                        "type": "array",
                        "description": "State names or abbreviations to scrape, for example California, CA, Texas, TX.",
                        "default": [
                            "California"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "zipCodes": {
                        "title": "Custom ZIP Codes",
                        "type": "array",
                        "description": "Optional. If provided, these ZIP codes will be used instead of the state ZIP list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxZipsPerState": {
                        "title": "Max ZIPs Per State",
                        "type": "integer",
                        "description": "Maximum number of ZIP codes to run from each selected state.",
                        "default": 5
                    },
                    "listingTypes": {
                        "title": "Listing Types",
                        "type": "array",
                        "description": "Optional listing types to pass to the existing ZIP actor. Leave empty to use the ZIP actor default.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxListingAgeHours": {
                        "title": "Max Listing Age Hours",
                        "type": "integer",
                        "description": "Maximum listing age in hours to pass to the existing ZIP actor.",
                        "default": 24
                    },
                    "maxListingsPerZip": {
                        "title": "Max Listings Per ZIP",
                        "type": "integer",
                        "description": "Maximum number of listings to collect per ZIP code from the existing ZIP actor.",
                        "default": 200
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy configuration passed to the existing ZIP actor.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
