# Zillow MCP servers, bench results, September 2026: nine servers, four scenarios, same tool calls

> Source: <https://gist.github.com/sergey-ermakovich/3c433761712b73692c8900aea1092418>
> Published: 2026-09-10 08:50:06+00:00

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.
