Zillow API on Apify: US real estate listings for sale, rent, and sold as clean JSON. Python + MCP quick start.
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
- !No standard license detected
- !Install pipes a remote script into a shell (curl | sh)
claude mcp add apify-zillow-api -- uvx apify-zillow-api{
"mcpServers": {
"apify-zillow-api": {
"command": "uvx",
"args": ["apify-zillow-api"],
"env": {
"APIFY_API_TOKEN": "<apify_api_token>"
}
}
}
}APIFY_API_TOKENMCP Servers overview
# 🏠 Zillow API: US Real Estate Listings for Sale, Rent & Sold
> A **Zillow API** on Apify that returns US real estate listings as clean, structured JSON. Search by plain city or ZIP, filter for price cuts, and export homes for sale, for rent, and sold.
**Actor page:** [apify.com/johnvc/zillow-api](https://apify.com/johnvc/zillow-api?fpr=9n7kx3)
**Input schema:** [apify.com/johnvc/zillow-api/input-schema](https://apify.com/johnvc/zillow-api/input-schema?fpr=9n7kx3)
This Zillow API turns [Zillow](https://www.zillow.com) into a structured data feed. Send a location and a few filters and get back typed rows for each listing: price, beds, baths, square footage, address, coordinates, broker, Zestimate, days on market, and the amount and date of any recent price cut. It covers homes for sale, rentals, and recently sold homes, and it resolves a plain city or ZIP to the right Zillow region for you.
## Video Walkthrough
[](https://www.youtube.com/watch?v=jREWahDGhJM)
### Text walkthrough
The **Zillow API** takes plain locations, so you never build a search URL or look up a region id: pass `"Austin, TX"` or `"78704"` in `locations`, pick a `statusType` of `sale`, `rent`, or `sold`, and add filters like `priceReduction` or `bedsMin`. Each row comes back with `price`, `priceValue`, `priceChange`, `beds`, `baths`, `squareFeet`, `address`, `latitude`, `longitude`, and `url`, plus `zestimate` and `daysOnZillow`. A single Zillow search is capped at 820 results, so turn on `autoShard` to sweep a whole metro by splitting the map into tiles. One common use case is a weekly price-cut feed: set `priceReduction` to true for a city, save it as a Task, and schedule it so your dataset always shows the freshest motivated-seller listings. Rentals return building-level data (per-floorplan rents, available units, leasing phone), and sold results return the sold date with the Zestimate and tax-assessed value.
## Quick Start
### Prerequisites
- Python 3.11 or higher
- An Apify account and API key ([get a free key here](https://apify.com?fpr=9n7kx3))
1. **Clone the repository**
```bash
git clone https://github.com/johnisanerd/Apify-Zillow-API.git
cd Apify-Zillow-API
```
2. **Install dependencies with UV**
```bash
# Install UV if you do not have it:
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install project dependencies:
uv sync
```
3. **Configure your API key**
```bash
cp .env.example .env
# Edit .env and add your Apify API key
# Get your free API key at: https://apify.com?fpr=9n7kx3
```
4. **Run the example**
```bash
uv run python zillow-api-example.py
# Optional recipes:
# uv run python zillow-api-example.py --example rentals
# uv run python zillow-api-example.py --example price_cuts
# uv run python zillow-api-example.py --example sold
```
### Alternative: set the API key directly
```bash
export APIFY_API_TOKEN="your_api_key_here"
uv run python zillow-api-example.py
```
## Why Use This Zillow API?
Zillow's own developer access runs through an invite-only partner program, so most people cannot self-serve. This Zillow API is the practical alternative: no application, no region ids, no hand-built search URLs. You send plain inputs and get structured JSON.
It is correct where raw scrapers are silently wrong. Hand most tools a ZIP code and they return a different city's listings; this Actor resolves the ZIP to the right Zillow region first, so `78704` gives you Austin, not a same-numbered town in another state.
It covers the full market in one place: for sale, for rent, and sold, each with the fields that match. It is built to run on a schedule, so a saved search becomes a standing feed you can diff week over week.
And it is MCP-ready, so an AI assistant can call it as a tool and ask for listings in plain language.
## Features
### Core Capabilities
- Search homes for sale, for rent, and recently sold across the US.
- Plain-name location input: city, ZIP, county, neighborhood, or state.
- Price-cut filter with the change amount and date for motivated-seller and stale-inventory work.
- Map sharding to sweep a whole metro past the 820-result cap.
### Data Quality
- Typed fields, not scraped strings: numeric prices, coordinates, and dates.
- Deduplicated results across map tiles.
- Photo URLs are passed through, never re-hosted.
## Recipes
### Homes for sale in a city
[Run this on Apify](https://apify.com/johnvc/zillow-api?fpr=9n7kx3): search a city or ZIP for sale with beds and price filters, get back typed listing rows.
Local: `uv run python zillow-api-example.py`
### Rentals in a ZIP code
[Run this on Apify](https://apify.com/johnvc/zillow-api?fpr=9n7kx3): building-level rentals with per-floorplan rents, available units, and leasing phone.
Local: `uv run python zillow-api-example.py --example rentals`
### Homes with recent price cuts
[Run this on Apify](https://apify.com/johnvc/zillow-api?fpr=9n7kx3): set `priceReduction` and read `priceChange` and `priceChangeDate` for a motivated-seller feed.
Local: `uv run python zillow-api-example.py --example price_cuts`
### Recently sold homes
[Run this on Apify](https://apify.com/johnvc/zillow-api?fpr=9n7kx3): recently sold homes with sold date, Zestimate, and tax-assessed value.
Local: `uv run python zillow-api-example.py --example sold`
**Schedule tip:** Save any of these inputs as an Apify Task and [schedule it](https://apify.com/johnvc/zillow-api?fpr=9n7kx3) to run daily or weekly so your dataset stays fresh without manual runs.
## Usage Examples
### Basic Example
```json
{
"locations": ["Austin, TX"],
"statusType": "sale",
"maxResults": 10
}
```
### Advanced Example
```json
{
"locations": ["Phoenix, AZ"],
"statusType": "sale",
"priceReduction": true,
"bedsMin": 3,
"priceMax": 600000,
"autoShard": true,
"maxResults": 2000,
"maxUpstreamCalls": 80
}
```
## Input Parameters
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `locations` | `list[str]` | one location source | `["Austin, TX"]` | Plain place names: city, ZIP, county, neighborhood, or state. Up to 25 per run. |
| `statusType` | `str` | YES | `sale` | `sale`, `rent`, or `sold`. |
| `priceMin` / `priceMax` | `int` | no | - | Price range (list price for sale/sold, monthly rent for rent). |
| `bedsMin` / `bedsMax` | `int` | no | - | Bedroom range. |
| `priceReduction` | `bool` | no | `false` | Only listings with a recent price cut. |
| `listingType` | `list[str]` | no | - | For sale: owner (FSBO), agent, new construction, foreclosure, and more. |
| `homeType` | `list[str]` | no | - | House, condo, townhome, multi-family, lot/land, apartment, manufactured. |
| `autoShard` | `bool` | no | `false` | Sweep past the 820-result cap by splitting the map into tiles. |
| `maxUpstreamCalls` | `int` | no | `40` | Hard ceiling on requests for a sharded run. |
| `maxResults` | `int` | no | `200` | Main cost control. Minimum 10 per search. |
## Output Format
```json
{
"resultType": "forSale",
"zpid": "29444234",
"title": "1200 Barton Hills Dr, Austin, TX 78704",
"price": "$425,000",
"priceValue": 425000,
"priceChange": -15000,
"priceChangeDate": "2026-08-12",
"beds": 3,
"baths": 2,
"squareFeet": 1842,
"city": "Austin",
"state": "TX",
"zipcode": "78704",
"latitude": 30.2489,
"longitude": -97.7791,
"url": "https://www.zillow.com/homedetails/29444234_zpid/",
"regionId": "10221",
"scrapedAt": "2026-08-25T14:22:07Z"
}
```
## People also search for
### Is this a Zillow scraper or an API?
This repo teaches the **Zillow API** on Apify. People often search for a "zillow scraper"; the same Actor covers that need and returns structured JSON you can call from Python or MCP, without building or maintaining a scraper yourself.
### How do I get Zillow data from Python?
Clone this repo, set `APIFY_API_TOKEN`, and run `uv run python zillow-api-example.py`. See Quick Start and Recipes above.
### How do I search Zillow by ZIP code or city?
Put the ZIP or city in `locations`, for example `"78704"` or `"Austin, TX"`. The Actor resolves it to the correct [Zillow](https://www.zillow.com) region automatically, so you do not get another city's listings by mistake.
### Can I use this Zillow API with MCP or Claude?
Yes. Use the install sections below to add the Actor as an MCP tool in [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial), [Claude Cowork](https://claude.ai/referral/uIlpa7nPLg) (free trial), Claude.ai, Cursor, or ChatGPT.
### How do I get more than 800 Zillow results for one city?
Turn on `autoShard`. A single Zillow search returns at most 820 results, so the Actor splits the map into tiles and merges them, deduplicated, to cover a full metro. Use `maxUpstreamCalls` to cap the cost.
---
## Install in Claude Cowork Desktop

Cowork is the desktop app's automation mode. To give it the Zillow API as a tool, add the Apify MCP server as a connector.
1. Open the Claude desktop app and go to **Settings → Connectors** (or **Settings → Developer → Edit Config** to edit `claude_desktop_config.json` directly).
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
2. Add the Apify MCP server, preloaded with only this Actor:
```json
{
"mcpServers": {
"apify": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.apify.com/?tools=actors,docs,johnvc/zillow-api"
]
}
}
}
```
3. Restart the app. When Cowork first calls the tool, complete the OAuth prompt in your browser, or add your Apify API token in the connector settings to skip OAuth.
4. In a CoworkWhat people ask about Apify-Zillow-API
What is johnisanerd/Apify-Zillow-API?
+
johnisanerd/Apify-Zillow-API is mcp servers for the Claude AI ecosystem. Zillow API on Apify: US real estate listings for sale, rent, and sold as clean JSON. Python + MCP quick start. It has 0 GitHub stars and its last recorded update is dated 2026-09-05.
How do I install Apify-Zillow-API?
+
You can install Apify-Zillow-API by cloning the repository (https://github.com/johnisanerd/Apify-Zillow-API) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is johnisanerd/Apify-Zillow-API safe to use?
+
Our security agent has analyzed johnisanerd/Apify-Zillow-API and assigned a Trust Score of 62/100 (tier: OK). See the full breakdown of passed checks and flags on this page.
Who maintains johnisanerd/Apify-Zillow-API?
+
johnisanerd/Apify-Zillow-API is maintained by johnisanerd. The last recorded GitHub activity is dated 2026-09-05, with 0 open issues.
Are there alternatives to Apify-Zillow-API?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy Apify-Zillow-API to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/johnisanerd-apify-zillow-api)<a href="https://claudewave.com/repo/johnisanerd-apify-zillow-api"><img src="https://claudewave.com/api/badge/johnisanerd-apify-zillow-api" alt="Featured on ClaudeWave: johnisanerd/Apify-Zillow-API" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!