Zillow MCP servers, bench results, September 2026: nine servers, four scenarios, same tool calls A developer benchmarked nine Zillow MCP servers across four scenarios and three calls per task using the official MCP TypeScript SDK as the client, publishing the harness and fixtures on GitHub. HasData's hosted Zillow MCP completed all six search calls with a 2.5-second median latency, while chrischall/zillow-mcp failed all calls with "no confirmed browser session" and Zillapi exhausted its allowance after two of three searches. The results, which include latency, byte size, and item/field counts, are presented without ranking. Raw results from running the same tool calls against every Zillow MCP server that could be found in the MCP registry, npm, Smithery, the Docker MCP catalog and search, on 2026-09-08 and 2026-09-09. Four scenarios, three calls per task, the official MCP TypeScript SDK as the client, 240 second per-call timeout unless noted. No ranking here, only what came back. The harness and the four fixture files are public at https://github.com/HasData/mcp-bench https://github.com/HasData/mcp-bench . Disclosure. HasData, which maintains the harness, also runs one of the servers below. | Server | Where it runs | Auth | Source | |---|---|---|---| | HasData Zillow MCP | hosted, streamable HTTP, also npm and PyPI packages | x-api-key header, free key | https://hasdata.com/mcp/zillow https://hasdata.com/mcp/zillow | | Bright Data Web MCP, pro mode | hosted, streamable HTTP | account token in URL, &pro=1 | https://docs.brightdata.com/mcp-server/overview https://docs.brightdata.com/mcp-server/overview | | Zillapi | hosted, streamable HTTP | Authorization: Bearer zk … | https://zillapi.com https://zillapi.com | | APIllow | local, uvx --with "mcp<2" apillow-mcp | APILLOW API KEY | https://apillow.co https://apillow.co | | Apify, afanasenko/zillow-mcp-server | hosted via mcp.apify.com | Apify token | https://apify.com/afanasenko/zillow-mcp-server https://apify.com/afanasenko/zillow-mcp-server | | Apify, maxcopell/zillow-scraper | hosted via mcp.apify.com, two calls run, then dataset | Apify token | https://apify.com/maxcopell/zillow-scraper https://apify.com/maxcopell/zillow-scraper | | chrischall/zillow-mcp | local, npx -y zillow-mcp plus the fetchproxy browser extension | logged-in zillow.com session | https://github.com/chrischall/zillow-mcp https://github.com/chrischall/zillow-mcp | | sap156/zillow-mcp-server | local, npx -y zillow-mcp-server | none | https://github.com/sap156/zillow-mcp-server https://github.com/sap156/zillow-mcp-server | | @striderlabs/mcp-zillow | local, built from source, Playwright stealth | none | https://github.com/markswendsen-code/mcp-zillow https://github.com/markswendsen-code/mcp-zillow | Not run, with the reason. rohitsingh-iitd/zillow-mcp-server and EmilyThaHuman/zillow-mcp-server wrap a third-party Zillow API and need its key. Zapier's "Zillow Tech Connect MCP" is agent CRM actions, not listing data. HomeHarvest is a Python library, not an MCP server. A call counted as failed when the server returned isError , when the body was an error envelope such as {"error": "quota exceeded"} regardless of HTTP status, when the body was an empty result list, or when the call timed out. Latency is the median of successful calls only, with the min and max alongside. Bytes are the text the client received. Items and fields are counted on the first array of objects in the JSON, so they describe shape, not schema. | Server | Search | p50 | min to max | Bytes | Items x fields | Property record | p50 | Bytes | Fields | |---|---|---|---|---|---|---|---|---|---| | HasData | 6/6 over two runs | 2.5 s, 6.5 s | 2.4 to 8.3 s | 142 KB | 41 x 21 | 6/6 | 3.7 s, 4.5 s | 31 KB | 33 | | Bright Data pro | no search tool, scrape as markdown of the search page 3/3 | 2.0 s | 1.8 to 2.6 s | 7.6 KB markdown | n/a | 3/3 | 17.1 s | 59 KB | 94 | | Zillapi | 2/3, third call refused, allowance spent | 8.9 s | 7.4 to 8.9 s | 864 KB | 50 x 63 | 0/3, allowance spent | n/a | n/a | n/a | | APIllow | 3/3 | 10.7 s | 10.5 to 11.5 s | 5.7 KB | few | 3/3 | 10.4 s | 0.9 KB | n/a | | Apify afanasenko | 2/3, one 60 s timeout | 30.6 s | 26.5 to 30.6 s | 119 KB | 15 x 75 | 2/3 | 6.2 s | 6.3 KB | 75 | | Apify maxcopell | 3/3 run metadata, 40 items in the dataset | 17.6 s | 13.4 to 19.4 s | 6.3 KB | dataset not fetched in this run | no tool | n/a | n/a | n/a | | chrischall/zillow-mcp | 0/3, "no confirmed browser session" | n/a | n/a | n/a | n/a | 0/3, same | n/a | n/a | n/a | | sap156/zillow-mcp-server | did not start, no executable in the npm package | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | Notes. Zillapi's search takes a bounding box west,south,east,north , not a place name, and bills one credit per listing returned, so two 50-listing searches consumed the 100 free credits. The APIllow package crashes on the current Python MCP SDK FastMCP import and starts only with mcp<2 pinned. Bright Data's property JSON arrives inside a text block with =====UNTRUSTED … BEGIN===== markers, not as structuredContent . HasData's search returned 5,621 total results for Austin and 41 on the page. | Server | Result | p50 | min to max | Bytes | Items x fields | |---|---|---|---|---|---| | HasData | 3/3 | 5.4 s | 3.5 to 8.7 s | 159 KB | 41 x up to 21 | | Apify afanasenko, by rentals URL | 3/3 | 7.2 s | 6.7 to 13.4 s | 42 KB | 15 x 77 | | Apify maxcopell, run plus dataset fetch | 3/3 | 13.0 s | 12.4 to 14.5 s | 168 KB | 40 x 17 | | APIllow, type: for rent | 3/3 answered | 16.5 s | 7.3 to 17.1 s | 5.7 KB | 5 properties, prices $525,000 and $975,000, sale prices | | @striderlabs/mcp-zillow, search rentals | 0/3, total found: 0 | 3 to 5 s | n/a | 67 B | n/a | Notes. The HasData rows include apartment buildings with price , beds and baths as null , hence "up to 21". A filtered call beds min : 2, price max : 2500 returned 41 of 3,647 matching listings, every priced one inside the filter. The maxcopell dataset id sits at storages.datasets.default.id in the run response, not at the top level. Apify usage counters: six afanasenko searches across scenarios 2 and 4 cost $5.25, three maxcopell two-step searches cost $0.28. | Server | Result | p50 | min to max | Bytes | Items x fields | |---|---|---|---|---|---| | HasData | 3/3 | 5.6 s | 3.9 to 6.5 s | 175 KB | 41 x 24 | | Bright Data pro, scrape as markdown of the sold page | 3/3 | 2.2 s | 1.8 to 2.9 s | 7.5 KB markdown | n/a | | Zillapi, status: sold | 0/3, allowance spent | n/a | n/a | n/a | n/a | | @striderlabs/mcp-zillow, search homes | 0/3, total found: 0 | 3 to 5 s | n/a | 69 B | n/a | Note. The striderlabs server has no sold filter, so search homes was the closest call. | Server | Result | Latency | Bytes | Items x fields | |---|---|---|---|---| | HasData | 3/3 | p50 2.6 s, 1.9 to 3.5 s | 132 KB | 41 x 21 | | Bright Data pro, scrape as markdown | 3/3 | p50 2.0 s, 1.6 to 2.3 s | 8.2 KB markdown | n/a | | Apify afanasenko, search by zip | 2/3, third call failed after 121 s | 25.4 s and 44.8 s | 117 KB | 15 x 75 | | APIllow, search by zip | 0/3, {"error": "Rate limit or quota exceeded"} as HTTP 200 | 0.8 s | 85 B | n/a | | @striderlabs/mcp-zillow | 0/3, total found: 0 | 3.3 s | 63 B | n/a | | Zillapi | not run, needs a bounding box and the allowance was spent | n/a | n/a | n/a | Hosted: HasData 1.7 to 2.3 s, Zillapi 1.0 to 1.4 s, Bright Data 1.5 to 2.2 s, Apify 1.8 to 2.3 s. Local: APIllow 11 s via uvx , chrischall 27 s via npx , striderlabs 0.6 s from a local build. sap156 never connected. - Two npm packages in the category ship without their executable. zillow-mcp-server sap156, 48 stars, last commit May 2025 and @striderlabs/mcp-zillow v1.0.0, src/index.ts only . Built from source, striderlabs starts and returns empty results from headless Chromium. - zillow-mcp chrischall, about 1,400 npm downloads a month, 20 tools routes every call through a browser extension that reuses the user's zillow.com session. Headless it fails 100%. - apillow-mcp and mcp-youtube-transcript both fail on Python MCP SDK 2.x because they import FastMCP from its old location. uvx --with "mcp<2" … is the workaround. - Zillapi and APIllow return their quota and credit errors as normal tool results, plain text and {"error": …} respectively, with no isError flag. - Bright Data has no Zillow search tool in the MCP. Its Zillow property lookup returns the most fields of any server 94 in about 17 s. - Billing units differ. HasData bills one call per page 5 credits, 1,000 credits a month free . Zillapi bills one credit per listing returned. APIllow bills per property returned. Bright Data bills per request or per record depending on the tool. git clone https://github.com/HasData/mcp-bench.git && cd mcp-bench && npm install cp .env.example .env add the keys you have node mcp-bench.mjs probe zillow-zip-33139 node mcp-bench.mjs run zillow-zip-33139 --runs 3 --timeout 240000 node mcp-bench.mjs report zillow-zip-33139 Fixtures: fixtures/zillow.json , fixtures/zillow-rent-denver.json , fixtures/zillow-sold-phoenix.json , fixtures/zillow-zip-33139.json . Vendor prices and free tiers referenced above are as published on 2026-09-09.