Zillow MCP Server
Pricing
Pay per event + usage
Zillow MCP Server
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.
Pricing
Pay per event + usage
Rating
0.0
(0)
Developer
Andrey Afanasenko
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Connect Claude Desktop, Cursor, or ChatGPT to live Zillow listings and agent contacts via 3 narrow tools — search by ZIP, paste any Zillow URL, or look up a single property by ID. From $0.05 per property on paid plans, $0.08 on Free.
Same data and pricing as the parent Zillow Property & Agent Data Scraper — but exposed as Model Context Protocol tools so your AI agent picks the right one by intent. Beyond what Zillow's official API offers: full filter set, agent emails and phone numbers, photo galleries, price-history arrays, school ratings, and 70+ output columns per row.
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:
- MCP clients (Claude Desktop, Cursor, ChatGPT, VS Code) → connect to the Standby
/mcpendpoint → get 3 narrow tools picked automatically by intent. - 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 — 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— populateswalkScore,transitScore,bikeScore(0–100 each).enrichPhotos: true— populates the full Zillow photo gallery inphotos[](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:
{ "mode": "zpid", "zpids": ["119617641"], "enrichWalkScore": true, "enrichPhotos": true }
{ "mode": "zip", "zipCodes": ["10001"], "maxProperties": 5, "status_type": "ForRent", "largeDogsAllowed": true, "inUnitLaundry": true }
{ "mode": "zip", "zipCodes": ["94103"], "maxProperties": 3, "schools": "elementary,public", "schoolsRating": 8 }
{ "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.
Starting a run without a target (no ZPIDs / ZIP codes / URL for the selected mode) performs a small demo run capped at 10 properties instead of failing, so you always get sample output to inspect. Provide your own target to scrape real data at the full property cap.
Connect from Claude Desktop
Add to your ~/Library/Application Support/Claude/claude_desktop_config.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)
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:
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 — parent scraper, run-input/output style. Same data, same pricing.
- Zillow ZIP Code Property Scraper — single-mode parent spinoff, ZIP-only.
- Zillow URL Search Property Scraper — single-mode parent spinoff, URL-only.
Support
For issues or feature requests, open an issue on the actor's Apify Store page.


