# Zillow MCP Server (`afanasenko/zillow-mcp-server`) Actor

MCP server exposing Zillow property + agent data as 3 tools: search by ZIP, search by URL, lookup by zpid. Connect Claude Desktop, Cursor, ChatGPT to /mcp endpoint. Pay-per-property pricing — $0.08 on FREE, down to $0.05 on DIAMOND. Same data + pricing as the parent scraper.

- **URL**: https://apify.com/afanasenko/zillow-mcp-server.md
- **Developed by:** [Andrey Afanasenko](https://apify.com/afanasenko) (community)
- **Categories:** MCP servers, Real estate, Agents
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event + usage

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 MCP Server

[![Status: Beta](https://img.shields.io/badge/status-beta-blue)]() [![MCP](https://img.shields.io/badge/MCP-Streamable_HTTP-green)]() [![Pricing](https://img.shields.io/badge/pricing-pay--per--property-orange)]()

**Zillow data, accessible to AI agents over the Model Context Protocol.** Connect Claude Desktop, Cursor, ChatGPT, or any MCP-compatible client and query Zillow listings + agent contact data in plain language.

### What it does

This is a **Model Context Protocol (MCP) server** that exposes Zillow scraping to AI agents — and a regular Apify actor for click-Run users. Two ways to use it:

1. **MCP clients** (Claude Desktop, Cursor, ChatGPT, VS Code) → connect to the Standby `/mcp` endpoint → get 3 narrow tools picked automatically by intent.
2. **Apify Console / API** → fill the input form (mode + zpid/zip_codes/zillow_url) → click Start → results pushed to the dataset.

Same data, same per-property pricing, two entry points.

Sister actor [Zillow Property & Agent Data Scraper](https://apify.com/afanasenko/zillow-property-agent-data-scraper) — the original run-input/output actor with the same data and pricing.

### Tools

| Tool | Inputs | Returns |
|------|--------|---------|
| **`zillow_search_by_zip`** | `zip_codes` (1–20), `max_properties?`, `filters?`, `enrichWalkScore?`, `enrichPhotos?` | Array of enriched property records |
| **`zillow_search_by_url`** | `zillow_url`, `max_properties?`, `enrichWalkScore?`, `enrichPhotos?` | Array (or single record for `_zpid` URL) |
| **`zillow_lookup_property`** | `zpid`, `enrichWalkScore?`, `enrichPhotos?` | Single enriched property record |

Each enriched record includes 77 fields — same shape as the parent scraper. Highlights: address, price, beds/baths/sqft, full agent contact (with 3-tier email-resolution fallback: property page → agent profile → name search), broker, Zestimate / rent Zestimate, HOA, taxes, schools, openHouseSchedule, full price history, walk/transit/bike scores (when `enrichWalkScore=true`), photo gallery (when `enrichPhotos=true`).

#### Optional enrichments

Both toggles add 1 upstream call per property and **no extra Apify event charge**.

- `enrichWalkScore: true` — populates `walkScore`, `transitScore`, `bikeScore` (0–100 each).
- `enrichPhotos: true` — populates the full Zillow photo gallery in `photos[]` (default behavior is `[mainPhoto]` or `[]`).

### Pricing

Pay-per-event, mirroring the parent scraper:

| Plan | Per-property cost | One-time actor start |
|------|-------------------|----------------------|
| FREE | $0.08 | $0.00005 (per GB memory) |
| BRONZE | $0.07 | $0.00005 |
| SILVER | $0.06 | $0.00005 |
| GOLD / PLATINUM / DIAMOND | $0.05 | $0.00005 |

**Free plan caps**: up to 15 properties per single tool call. **Paid plans**: up to 50 properties per single tool call (call again for more).

### Run as a regular Apify actor (no MCP client needed)

Click **Start** with one of these inputs:

```json
{ "mode": "zpid", "zpids": ["119617641"], "enrichWalkScore": true, "enrichPhotos": true }
````

```json
{ "mode": "zip", "zipCodes": ["10001"], "maxProperties": 5, "status_type": "ForRent", "largeDogsAllowed": true, "inUnitLaundry": true }
```

```json
{ "mode": "zip", "zipCodes": ["94103"], "maxProperties": 3, "schools": "elementary,public", "schoolsRating": 8 }
```

```json
{ "mode": "url", "zillowUrl": "https://www.zillow.com/homedetails/..._zpid/" }
```

Results land in the run's default dataset. Same enriched 77-field records as the MCP tools return. The full filter surface (price / rent / beds / baths / sqft / lot / year built ranges, home type, listing-type tri-state filters, features, views, rental amenities, schools) is exposed as top-level input fields — same UX as the parent scraper.

### Connect from Claude Desktop

Add to your `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
    "mcpServers": {
        "zillow": {
            "url": "https://<your-actor-id>.apify.actor/mcp",
            "headers": {
                "Authorization": "Bearer <your-apify-token>"
            }
        }
    }
}
```

Restart Claude Desktop. Tools appear in the tool catalog.

### Connect from Cursor / ChatGPT / VS Code

Same Streamable HTTP endpoint. Configuration syntax varies by client — point your MCP client to:

```
https://<your-actor-id>.apify.actor/mcp
```

with header `Authorization: Bearer <APIFY_TOKEN>`.

### Quick test (no client)

```bash
curl -X POST "https://<your-actor-id>.apify.actor/mcp" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
```

returns the catalog. To call a tool:

```bash
curl -X POST "https://<your-actor-id>.apify.actor/mcp" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"zillow_lookup_property","arguments":{"zpid":"119617641"}}}'
```

### Output

Every tool call also writes its results to the actor's default dataset, so you can re-export results from the Apify Console (CSV, JSON, Excel) alongside the MCP response.

### Free vs paid

| Feature | Free | Paid |
|---------|------|------|
| Properties per tool call | 15 max | 50 max |
| Tool calls per run | Unlimited | Unlimited |

Apify's "Maximum cost per run" run option provides per-run cost ceilings independently.

### Free-plan email masking

On the FREE plan agent emails come back masked — `j***@a***.com` — and `agentEmailSource` reports `masked_upgrade_to_unlock`. Upgrade to any paid plan (BRONZE+) to receive the unmasked value. This mirrors the parent scraper's gating exactly.

### Storage records

The actor writes the same 5 operational records the parent scraper produces. In Standby mode, counters aggregate across all MCP tool calls in the same Standby instance and flush every 10 calls (and on `Actor.exit`).

- **Default dataset** — one row per property returned, across regular-run dispatcher and all MCP tool calls.
- **`RUN_SUMMARY`** — input snapshot, properties.found / enriched / skipped, email-resolution stats, plan, runMode, durationSeconds, tool-call count.
- **`SKIPPED_ITEMS`** — per-item breakdown (zpid / ZIP / URL skipped, reason, category).
- **`FREE_LIMITS_APPLIED`** — list of FREE-plan ceilings hit during the run.
- **`USER_MESSAGE`** — onboarding / upgrade / informational banner (when applicable).
- **`status.html`** — live progress / completed banner rendered in the Apify Console Output tab.

### Related actors

- [Zillow Property & Agent Data Scraper](https://apify.com/afanasenko/zillow-property-agent-data-scraper) — parent scraper, run-input/output style. Same data, same pricing.
- [Zillow ZIP Code Property Scraper](https://apify.com/afanasenko/zillow-zip-search) — single-mode parent spinoff, ZIP-only.
- [Zillow URL Search Property Scraper](https://apify.com/afanasenko/zillow-url-search) — single-mode parent spinoff, URL-only.

### Support

For issues or feature requests, open an issue on the actor's Apify Store page.

# Actor input Schema

## `mode` (type: `string`):

Choose how to look up properties. Each mode mirrors one of the 3 MCP tools: zpid → zillow\_lookup\_property, zip → zillow\_search\_by\_zip, url → zillow\_search\_by\_url. FREE plan: max 15 properties total per run.

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

Required for ZIP mode. List of US ZIP codes or location names (e.g. "Austin, TX"). Up to 20 entries per run.

## `maxProperties` (type: `integer`):

Hard cap on how many properties this run will enrich + return. Applies to ALL modes (not per-ZIP). FREE plan capped at 15 regardless. Paid plans up to 50 here. Each enriched property is charged $0.08 (FREE).

## `status_type` (type: `string`):

Filter properties by their listing status. Applies to ZIP and URL modes (ignored in ZPID mode).

## `price_min` (type: `integer`):

For Sale / Sold properties. 0 = no minimum.

## `price_max` (type: `integer`):

For Sale / Sold properties. 0 = no maximum.

## `rentMinPrice` (type: `integer`):

For Rent properties. 0 = no minimum.

## `rentMaxPrice` (type: `integer`):

For Rent properties. 0 = no maximum.

## `beds_min` (type: `integer`):

Minimum number of bedrooms.

## `beds_max` (type: `integer`):

Maximum number of bedrooms (0 for any).

## `baths_min` (type: `integer`):

Minimum number of bathrooms.

## `baths_max` (type: `integer`):

Maximum number of bathrooms (0 for any).

## `doz` (type: `string`):

Filter by how recently the property was listed or sold.

## `sort` (type: `string`):

Choose how to sort the search results.

## `keywords` (type: `string`):

Free-text keywords to match in listings (e.g. 'pool, ocean view').

## `isSingleFamily` (type: `boolean`):

Include single-family homes.

## `isTownhouse` (type: `boolean`):

Include townhouses.

## `isMultiFamily` (type: `boolean`):

Include multi-family properties.

## `isCondo` (type: `boolean`):

Include condos and co-ops.

## `isLotLand` (type: `boolean`):

Include lots and land.

## `isApartment` (type: `boolean`):

Include apartments (primarily for rentals).

## `isManufactured` (type: `boolean`):

Include manufactured homes.

## `isForSaleByOwner` (type: `boolean`):

Include For Sale By Owner listings.

## `isForSaleByAgent` (type: `boolean`):

Include agent-listed properties.

## `isNewConstruction` (type: `string`):

'Any' shows all, 'Only' shows only new construction, 'Exclude' hides new construction.

## `isAuction` (type: `string`):

'Any' shows all, 'Only' shows only auctions, 'Exclude' hides auctions.

## `isForSaleForeclosure` (type: `string`):

'Any' shows all, 'Only' shows only foreclosures, 'Exclude' hides foreclosures.

## `includeForeclosed` (type: `boolean`):

Add foreclosed properties to results (excluded by default).

## `includePreForeclosure` (type: `boolean`):

Add pre-foreclosure properties to results (excluded by default).

## `isPendingUnderContract` (type: `boolean`):

Only include properties that are pending or under contract.

## `isAcceptingBackupOffers` (type: `boolean`):

Only include properties accepting backup offers.

## `sqft_min` (type: `integer`):

Minimum property size in square feet.

## `sqft_max` (type: `integer`):

Maximum property size in square feet.

## `lotSize_min` (type: `string`):

Minimum lot size.

## `lotSize_max` (type: `string`):

Maximum lot size.

## `built_min` (type: `integer`):

Earliest year of construction.

## `built_max` (type: `integer`):

Latest year of construction.

## `parkingSpots_min` (type: `integer`):

Minimum number of parking spots.

## `hasGarage` (type: `boolean`):

Only include properties with a garage.

## `hoa_max` (type: `integer`):

Maximum monthly HOA fee.

## `hasPool` (type: `boolean`):

Only include properties with a pool.

## `hasAirConditioning` (type: `boolean`):

Only include properties with air conditioning.

## `isWaterfront` (type: `boolean`):

Only include waterfront properties.

## `isBasementFinished` (type: `boolean`):

Only include properties with a finished basement.

## `isBasementUnfinished` (type: `boolean`):

Only include properties with an unfinished basement.

## `isCityView` (type: `boolean`):

Only properties with a city view.

## `isMountainView` (type: `boolean`):

Only properties with a mountain view.

## `isParkView` (type: `boolean`):

Only properties with a park view.

## `isWaterView` (type: `boolean`):

Only properties with a water view.

## `isOpenHousesOnly` (type: `boolean`):

Only include properties with scheduled open houses.

## `is3dHome` (type: `boolean`):

Only include properties with a 3D tour.

## `largeDogsAllowed` (type: `boolean`):

Only rentals that allow large dogs.

## `smallDogsAllowed` (type: `boolean`):

Only rentals that allow small dogs.

## `catsAllowed` (type: `boolean`):

Only rentals that allow cats.

## `noPets` (type: `boolean`):

Only rentals that do not allow pets.

## `inUnitLaundry` (type: `boolean`):

Only rentals with in-unit laundry.

## `parkingAvailable` (type: `boolean`):

Only rentals with on-site parking.

## `furnished` (type: `boolean`):

Only furnished rentals.

## `hardwoodFloor` (type: `boolean`):

Only rentals with hardwood floors.

## `utilitiesIncluded` (type: `boolean`):

Only rentals with utilities included.

## `disabledAccess` (type: `boolean`):

Only rentals with disabled access.

## `shortTermLease` (type: `boolean`):

Only rentals with short term lease available.

## `outdoorSpace` (type: `boolean`):

Only rentals with outdoor space.

## `controlledAccess` (type: `boolean`):

Only rentals with controlled access.

## `highSpeedInternet` (type: `boolean`):

Only rentals with high speed internet.

## `elevator` (type: `boolean`):

Only rentals with elevator access.

## `acceptsApplications` (type: `boolean`):

Only rentals accepting Zillow applications.

## `incomeRestricted` (type: `boolean`):

Only income-restricted rentals.

## `schools` (type: `string`):

Filter by nearby school types (comma-separated: elementary, middle, high, public, private, charter).

## `schoolsRating` (type: `integer`):

Minimum school rating (1-10).

## `includeUnratedSchools` (type: `boolean`):

Include schools with no rating in the search.

## `zpids` (type: `array`):

Required for ZPID mode. Enter Zillow Property IDs to look up directly. Each ZPID is enriched independently — search filters above are ignored.

## `zillowUrl` (type: `string`):

Required for URL mode. Paste a Zillow search URL (filters embedded in searchQueryState are honored automatically) or a single-property page (.../<zpid>\_zpid/). Example: https://www.zillow.com/homedetails/...\_zpid/

## `enrichWalkScore` (type: `boolean`):

Add Walk Score / Transit Score / Bike Score (0–100 each) to each returned property. Adds 1 upstream call per property; no extra Apify event charge.

## `enrichPhotos` (type: `boolean`):

Return the full Zillow photo gallery (photos\[] array) per property. Adds 1 upstream call per property; no extra Apify event charge. Default: photos\[] contains only the main photo.

## Actor input object example

```json
{
  "mode": "zpid",
  "zipCodes": [
    "90210"
  ],
  "maxProperties": 5,
  "status_type": "ForSale",
  "price_min": 0,
  "price_max": 0,
  "rentMinPrice": 0,
  "rentMaxPrice": 0,
  "beds_min": 0,
  "beds_max": 0,
  "baths_min": 0,
  "baths_max": 0,
  "doz": "any",
  "sort": "Homes_for_You",
  "keywords": "",
  "isSingleFamily": true,
  "isTownhouse": true,
  "isMultiFamily": false,
  "isCondo": true,
  "isLotLand": false,
  "isApartment": true,
  "isManufactured": false,
  "isForSaleByOwner": false,
  "isForSaleByAgent": true,
  "isNewConstruction": "any",
  "isAuction": "any",
  "isForSaleForeclosure": "any",
  "includeForeclosed": false,
  "includePreForeclosure": false,
  "isPendingUnderContract": false,
  "isAcceptingBackupOffers": false,
  "sqft_min": 0,
  "sqft_max": 0,
  "lotSize_min": "",
  "lotSize_max": "",
  "built_min": 0,
  "built_max": 0,
  "parkingSpots_min": 0,
  "hasGarage": false,
  "hoa_max": 0,
  "hasPool": false,
  "hasAirConditioning": false,
  "isWaterfront": false,
  "isBasementFinished": false,
  "isBasementUnfinished": false,
  "isCityView": false,
  "isMountainView": false,
  "isParkView": false,
  "isWaterView": false,
  "isOpenHousesOnly": false,
  "is3dHome": false,
  "largeDogsAllowed": false,
  "smallDogsAllowed": false,
  "catsAllowed": false,
  "noPets": false,
  "inUnitLaundry": false,
  "parkingAvailable": false,
  "furnished": false,
  "hardwoodFloor": false,
  "utilitiesIncluded": false,
  "disabledAccess": false,
  "shortTermLease": false,
  "outdoorSpace": false,
  "controlledAccess": false,
  "highSpeedInternet": false,
  "elevator": false,
  "acceptsApplications": false,
  "incomeRestricted": false,
  "schools": "",
  "schoolsRating": 0,
  "includeUnratedSchools": true,
  "zpids": [],
  "zillowUrl": "",
  "enrichWalkScore": false,
  "enrichPhotos": false
}
```

# Actor output Schema

## `properties` (type: `string`):

All enriched property records collected during this run, across MCP tool calls and the regular-run dispatcher. Same 41-field shape as the parent Zillow scraper.

# 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("afanasenko/zillow-mcp-server").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("afanasenko/zillow-mcp-server").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 afanasenko/zillow-mcp-server --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Zillow MCP Server",
        "description": "MCP server exposing Zillow property + agent data as 3 tools: search by ZIP, search by URL, lookup by zpid. Connect Claude Desktop, Cursor, ChatGPT to /mcp endpoint. Pay-per-property pricing — $0.08 on FREE, down to $0.05 on DIAMOND. Same data + pricing as the parent scraper.",
        "version": "0.0",
        "x-build-id": "9NWM0k38DW96wCNW2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/afanasenko~zillow-mcp-server/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-afanasenko-zillow-mcp-server",
                "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/afanasenko~zillow-mcp-server/runs": {
            "post": {
                "operationId": "runs-sync-afanasenko-zillow-mcp-server",
                "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/afanasenko~zillow-mcp-server/run-sync": {
            "post": {
                "operationId": "run-sync-afanasenko-zillow-mcp-server",
                "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": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Operation Mode",
                        "enum": [
                            "zpid",
                            "zip",
                            "url"
                        ],
                        "type": "string",
                        "description": "Choose how to look up properties. Each mode mirrors one of the 3 MCP tools: zpid → zillow_lookup_property, zip → zillow_search_by_zip, url → zillow_search_by_url. FREE plan: max 15 properties total per run.",
                        "default": "zpid"
                    },
                    "zipCodes": {
                        "title": "ZIP Codes",
                        "type": "array",
                        "description": "Required for ZIP mode. List of US ZIP codes or location names (e.g. \"Austin, TX\"). Up to 20 entries per run.",
                        "default": [
                            "90210"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxProperties": {
                        "title": "Max Properties (total per run)",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Hard cap on how many properties this run will enrich + return. Applies to ALL modes (not per-ZIP). FREE plan capped at 15 regardless. Paid plans up to 50 here. Each enriched property is charged $0.08 (FREE).",
                        "default": 5
                    },
                    "status_type": {
                        "title": "Property Status",
                        "enum": [
                            "ForSale",
                            "ForRent",
                            "RecentlySold"
                        ],
                        "type": "string",
                        "description": "Filter properties by their listing status. Applies to ZIP and URL modes (ignored in ZPID mode).",
                        "default": "ForSale"
                    },
                    "price_min": {
                        "title": "Price: Minimum ($)",
                        "type": "integer",
                        "description": "For Sale / Sold properties. 0 = no minimum.",
                        "default": 0
                    },
                    "price_max": {
                        "title": "Price: Maximum ($)",
                        "type": "integer",
                        "description": "For Sale / Sold properties. 0 = no maximum.",
                        "default": 0
                    },
                    "rentMinPrice": {
                        "title": "Rent: Minimum ($/mo)",
                        "type": "integer",
                        "description": "For Rent properties. 0 = no minimum.",
                        "default": 0
                    },
                    "rentMaxPrice": {
                        "title": "Rent: Maximum ($/mo)",
                        "type": "integer",
                        "description": "For Rent properties. 0 = no maximum.",
                        "default": 0
                    },
                    "beds_min": {
                        "title": "Bedrooms: Minimum",
                        "type": "integer",
                        "description": "Minimum number of bedrooms.",
                        "default": 0
                    },
                    "beds_max": {
                        "title": "Bedrooms: Maximum",
                        "type": "integer",
                        "description": "Maximum number of bedrooms (0 for any).",
                        "default": 0
                    },
                    "baths_min": {
                        "title": "Bathrooms: Minimum",
                        "type": "integer",
                        "description": "Minimum number of bathrooms.",
                        "default": 0
                    },
                    "baths_max": {
                        "title": "Bathrooms: Maximum",
                        "type": "integer",
                        "description": "Maximum number of bathrooms (0 for any).",
                        "default": 0
                    },
                    "doz": {
                        "title": "Days on Zillow / Sold in Last",
                        "enum": [
                            "any",
                            "1",
                            "7",
                            "14",
                            "30",
                            "90",
                            "6m",
                            "12m"
                        ],
                        "type": "string",
                        "description": "Filter by how recently the property was listed or sold.",
                        "default": "any"
                    },
                    "sort": {
                        "title": "Sort Results By",
                        "enum": [
                            "Homes_for_You",
                            "Price_High_Low",
                            "Price_Low_High",
                            "Newest"
                        ],
                        "type": "string",
                        "description": "Choose how to sort the search results.",
                        "default": "Homes_for_You"
                    },
                    "keywords": {
                        "title": "Keywords",
                        "type": "string",
                        "description": "Free-text keywords to match in listings (e.g. 'pool, ocean view').",
                        "default": ""
                    },
                    "isSingleFamily": {
                        "title": "Houses",
                        "type": "boolean",
                        "description": "Include single-family homes.",
                        "default": true
                    },
                    "isTownhouse": {
                        "title": "Townhomes",
                        "type": "boolean",
                        "description": "Include townhouses.",
                        "default": true
                    },
                    "isMultiFamily": {
                        "title": "Multi-family",
                        "type": "boolean",
                        "description": "Include multi-family properties.",
                        "default": false
                    },
                    "isCondo": {
                        "title": "Condos / Co-ops",
                        "type": "boolean",
                        "description": "Include condos and co-ops.",
                        "default": true
                    },
                    "isLotLand": {
                        "title": "Lots / Land",
                        "type": "boolean",
                        "description": "Include lots and land.",
                        "default": false
                    },
                    "isApartment": {
                        "title": "Apartments",
                        "type": "boolean",
                        "description": "Include apartments (primarily for rentals).",
                        "default": true
                    },
                    "isManufactured": {
                        "title": "Manufactured",
                        "type": "boolean",
                        "description": "Include manufactured homes.",
                        "default": false
                    },
                    "isForSaleByOwner": {
                        "title": "Owner Posted (FSBO)",
                        "type": "boolean",
                        "description": "Include For Sale By Owner listings.",
                        "default": false
                    },
                    "isForSaleByAgent": {
                        "title": "Agent Listed",
                        "type": "boolean",
                        "description": "Include agent-listed properties.",
                        "default": true
                    },
                    "isNewConstruction": {
                        "title": "New Construction",
                        "enum": [
                            "any",
                            "only",
                            "exclude"
                        ],
                        "type": "string",
                        "description": "'Any' shows all, 'Only' shows only new construction, 'Exclude' hides new construction.",
                        "default": "any"
                    },
                    "isAuction": {
                        "title": "Auctions",
                        "enum": [
                            "any",
                            "only",
                            "exclude"
                        ],
                        "type": "string",
                        "description": "'Any' shows all, 'Only' shows only auctions, 'Exclude' hides auctions.",
                        "default": "any"
                    },
                    "isForSaleForeclosure": {
                        "title": "Foreclosures",
                        "enum": [
                            "any",
                            "only",
                            "exclude"
                        ],
                        "type": "string",
                        "description": "'Any' shows all, 'Only' shows only foreclosures, 'Exclude' hides foreclosures.",
                        "default": "any"
                    },
                    "includeForeclosed": {
                        "title": "Include Foreclosed",
                        "type": "boolean",
                        "description": "Add foreclosed properties to results (excluded by default).",
                        "default": false
                    },
                    "includePreForeclosure": {
                        "title": "Include Pre-Foreclosure",
                        "type": "boolean",
                        "description": "Add pre-foreclosure properties to results (excluded by default).",
                        "default": false
                    },
                    "isPendingUnderContract": {
                        "title": "Pending & Under Contract",
                        "type": "boolean",
                        "description": "Only include properties that are pending or under contract.",
                        "default": false
                    },
                    "isAcceptingBackupOffers": {
                        "title": "Accepting Backup Offers",
                        "type": "boolean",
                        "description": "Only include properties accepting backup offers.",
                        "default": false
                    },
                    "sqft_min": {
                        "title": "Square Feet: Minimum",
                        "type": "integer",
                        "description": "Minimum property size in square feet.",
                        "default": 0
                    },
                    "sqft_max": {
                        "title": "Square Feet: Maximum",
                        "type": "integer",
                        "description": "Maximum property size in square feet.",
                        "default": 0
                    },
                    "lotSize_min": {
                        "title": "Lot Size: Minimum",
                        "enum": [
                            "",
                            "1,000 sqft",
                            "2,000 sqft",
                            "5,000 sqft",
                            "1/4 acre/10,890 sqft",
                            "1/2 acre/21,780 sqft",
                            "1 acre/43,560 sqft"
                        ],
                        "type": "string",
                        "description": "Minimum lot size.",
                        "default": ""
                    },
                    "lotSize_max": {
                        "title": "Lot Size: Maximum",
                        "enum": [
                            "",
                            "2,000 sqft",
                            "5,000 sqft",
                            "1/4 acre/10,890 sqft",
                            "1/2 acre/21,780 sqft",
                            "1 acre/43,560 sqft",
                            "5 acres/217,800 sqft"
                        ],
                        "type": "string",
                        "description": "Maximum lot size.",
                        "default": ""
                    },
                    "built_min": {
                        "title": "Year Built: Minimum",
                        "type": "integer",
                        "description": "Earliest year of construction.",
                        "default": 0
                    },
                    "built_max": {
                        "title": "Year Built: Maximum",
                        "type": "integer",
                        "description": "Latest year of construction.",
                        "default": 0
                    },
                    "parkingSpots_min": {
                        "title": "Minimum Parking Spots",
                        "type": "integer",
                        "description": "Minimum number of parking spots.",
                        "default": 0
                    },
                    "hasGarage": {
                        "title": "Must Have Garage",
                        "type": "boolean",
                        "description": "Only include properties with a garage.",
                        "default": false
                    },
                    "hoa_max": {
                        "title": "Maximum HOA Fee ($/month)",
                        "type": "integer",
                        "description": "Maximum monthly HOA fee.",
                        "default": 0
                    },
                    "hasPool": {
                        "title": "Must Have Pool",
                        "type": "boolean",
                        "description": "Only include properties with a pool.",
                        "default": false
                    },
                    "hasAirConditioning": {
                        "title": "Must Have A/C",
                        "type": "boolean",
                        "description": "Only include properties with air conditioning.",
                        "default": false
                    },
                    "isWaterfront": {
                        "title": "Waterfront",
                        "type": "boolean",
                        "description": "Only include waterfront properties.",
                        "default": false
                    },
                    "isBasementFinished": {
                        "title": "Finished Basement",
                        "type": "boolean",
                        "description": "Only include properties with a finished basement.",
                        "default": false
                    },
                    "isBasementUnfinished": {
                        "title": "Unfinished Basement",
                        "type": "boolean",
                        "description": "Only include properties with an unfinished basement.",
                        "default": false
                    },
                    "isCityView": {
                        "title": "City View",
                        "type": "boolean",
                        "description": "Only properties with a city view.",
                        "default": false
                    },
                    "isMountainView": {
                        "title": "Mountain View",
                        "type": "boolean",
                        "description": "Only properties with a mountain view.",
                        "default": false
                    },
                    "isParkView": {
                        "title": "Park View",
                        "type": "boolean",
                        "description": "Only properties with a park view.",
                        "default": false
                    },
                    "isWaterView": {
                        "title": "Water View",
                        "type": "boolean",
                        "description": "Only properties with a water view.",
                        "default": false
                    },
                    "isOpenHousesOnly": {
                        "title": "Must Have Open House",
                        "type": "boolean",
                        "description": "Only include properties with scheduled open houses.",
                        "default": false
                    },
                    "is3dHome": {
                        "title": "Must Have 3D Tour",
                        "type": "boolean",
                        "description": "Only include properties with a 3D tour.",
                        "default": false
                    },
                    "largeDogsAllowed": {
                        "title": "Allows Large Dogs",
                        "type": "boolean",
                        "description": "Only rentals that allow large dogs.",
                        "default": false
                    },
                    "smallDogsAllowed": {
                        "title": "Allows Small Dogs",
                        "type": "boolean",
                        "description": "Only rentals that allow small dogs.",
                        "default": false
                    },
                    "catsAllowed": {
                        "title": "Allows Cats",
                        "type": "boolean",
                        "description": "Only rentals that allow cats.",
                        "default": false
                    },
                    "noPets": {
                        "title": "No Pets",
                        "type": "boolean",
                        "description": "Only rentals that do not allow pets.",
                        "default": false
                    },
                    "inUnitLaundry": {
                        "title": "In-Unit Laundry",
                        "type": "boolean",
                        "description": "Only rentals with in-unit laundry.",
                        "default": false
                    },
                    "parkingAvailable": {
                        "title": "On-Site Parking",
                        "type": "boolean",
                        "description": "Only rentals with on-site parking.",
                        "default": false
                    },
                    "furnished": {
                        "title": "Furnished",
                        "type": "boolean",
                        "description": "Only furnished rentals.",
                        "default": false
                    },
                    "hardwoodFloor": {
                        "title": "Hardwood Floors",
                        "type": "boolean",
                        "description": "Only rentals with hardwood floors.",
                        "default": false
                    },
                    "utilitiesIncluded": {
                        "title": "Utilities Included",
                        "type": "boolean",
                        "description": "Only rentals with utilities included.",
                        "default": false
                    },
                    "disabledAccess": {
                        "title": "Disabled Access",
                        "type": "boolean",
                        "description": "Only rentals with disabled access.",
                        "default": false
                    },
                    "shortTermLease": {
                        "title": "Short Term Lease",
                        "type": "boolean",
                        "description": "Only rentals with short term lease available.",
                        "default": false
                    },
                    "outdoorSpace": {
                        "title": "Outdoor Space",
                        "type": "boolean",
                        "description": "Only rentals with outdoor space.",
                        "default": false
                    },
                    "controlledAccess": {
                        "title": "Controlled Access",
                        "type": "boolean",
                        "description": "Only rentals with controlled access.",
                        "default": false
                    },
                    "highSpeedInternet": {
                        "title": "High Speed Internet",
                        "type": "boolean",
                        "description": "Only rentals with high speed internet.",
                        "default": false
                    },
                    "elevator": {
                        "title": "Elevator",
                        "type": "boolean",
                        "description": "Only rentals with elevator access.",
                        "default": false
                    },
                    "acceptsApplications": {
                        "title": "Accepts Zillow Applications",
                        "type": "boolean",
                        "description": "Only rentals accepting Zillow applications.",
                        "default": false
                    },
                    "incomeRestricted": {
                        "title": "Income Restricted",
                        "type": "boolean",
                        "description": "Only income-restricted rentals.",
                        "default": false
                    },
                    "schools": {
                        "title": "School Types",
                        "type": "string",
                        "description": "Filter by nearby school types (comma-separated: elementary, middle, high, public, private, charter).",
                        "default": ""
                    },
                    "schoolsRating": {
                        "title": "Minimum School Rating",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Minimum school rating (1-10).",
                        "default": 0
                    },
                    "includeUnratedSchools": {
                        "title": "Include Unrated Schools",
                        "type": "boolean",
                        "description": "Include schools with no rating in the search.",
                        "default": true
                    },
                    "zpids": {
                        "title": "ZPID List",
                        "type": "array",
                        "description": "Required for ZPID mode. Enter Zillow Property IDs to look up directly. Each ZPID is enriched independently — search filters above are ignored.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "zillowUrl": {
                        "title": "Zillow Search URL",
                        "type": "string",
                        "description": "Required for URL mode. Paste a Zillow search URL (filters embedded in searchQueryState are honored automatically) or a single-property page (.../<zpid>_zpid/). Example: https://www.zillow.com/homedetails/..._zpid/",
                        "default": ""
                    },
                    "enrichWalkScore": {
                        "title": "Fetch Walk/Transit Scores",
                        "type": "boolean",
                        "description": "Add Walk Score / Transit Score / Bike Score (0–100 each) to each returned property. Adds 1 upstream call per property; no extra Apify event charge.",
                        "default": false
                    },
                    "enrichPhotos": {
                        "title": "Fetch All Property Photos",
                        "type": "boolean",
                        "description": "Return the full Zillow photo gallery (photos[] array) per property. Adds 1 upstream call per property; no extra Apify event charge. Default: photos[] contains only the main photo.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
