@hasdata/zillow-mcp 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -10
- package/index.mjs +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ It reads public listing pages on Zillow.com that a signed-out visitor can see.
|
|
|
9
9
|
**1,000 free credits every month, no card required**, which is 200 Zillow calls at the base rate.
|
|
10
10
|
|
|
11
11
|
```
|
|
12
|
-
https://mcp.hasdata.com/
|
|
12
|
+
https://mcp.hasdata.com/mcp?apis=zillow
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
[](https://glama.ai/mcp/servers/HasData/zillow-mcp)
|
|
@@ -38,7 +38,7 @@ https://mcp.hasdata.com/api/mcp?apis=zillow
|
|
|
38
38
|
|
|
39
39
|
## What you need
|
|
40
40
|
|
|
41
|
-
An MCP client and a HasData API key from the [dashboard](https://app.hasdata.com/sign-up?utm_source=github&utm_medium=syndication&utm_campaign=zillow-mcp), free to create with no card, and the
|
|
41
|
+
An MCP client and a HasData API key from the [dashboard](https://app.hasdata.com/sign-up?utm_source=github&utm_medium=syndication&utm_campaign=zillow-mcp), free to create with no card, and the free tier covers about 200 calls a month at the 5-credit rate. This is a remote server, so the simplest path is a URL and an `x-api-key` header, with no container to run. A client that only speaks stdio reaches it through a thin launcher, published as `@hasdata/zillow-mcp` on npm and `hasdata-zillow-mcp` on PyPI, shown below.
|
|
42
42
|
|
|
43
43
|
## Quick start
|
|
44
44
|
|
|
@@ -46,7 +46,7 @@ The server URL is the same for every client. We run it hands-on in Claude Code a
|
|
|
46
46
|
|
|
47
47
|
| Field | Value |
|
|
48
48
|
| :--- | :--- |
|
|
49
|
-
| URL | `https://mcp.hasdata.com/
|
|
49
|
+
| URL | `https://mcp.hasdata.com/mcp?apis=zillow` |
|
|
50
50
|
| Transport | HTTP, streamable |
|
|
51
51
|
| Auth header | `x-api-key: HASDATA_API_KEY` |
|
|
52
52
|
|
|
@@ -56,7 +56,7 @@ Clients with OAuth support can add the same URL as a connector and sign in witho
|
|
|
56
56
|
<summary><b>Claude Code</b></summary>
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
claude mcp add --transport http zillow "https://mcp.hasdata.com/
|
|
59
|
+
claude mcp add --transport http zillow "https://mcp.hasdata.com/mcp?apis=zillow" \
|
|
60
60
|
--header "x-api-key: HASDATA_API_KEY"
|
|
61
61
|
```
|
|
62
62
|
|
|
@@ -65,7 +65,7 @@ claude mcp add --transport http zillow "https://mcp.hasdata.com/api/mcp?apis=zil
|
|
|
65
65
|
<details>
|
|
66
66
|
<summary><b>Claude Desktop</b></summary>
|
|
67
67
|
|
|
68
|
-
Settings, then Connectors, then Add custom connector, then paste `https://mcp.hasdata.com/
|
|
68
|
+
Settings, then Connectors, then Add custom connector, then paste `https://mcp.hasdata.com/mcp?apis=zillow` and sign in.
|
|
69
69
|
|
|
70
70
|
For the config-file route, Claude Desktop loads only local (stdio) servers, so it reaches a remote server through a stdio launcher. The `@hasdata/zillow-mcp` package is that launcher, and it reads the key from the environment. Add this to `claude_desktop_config.json`:
|
|
71
71
|
|
|
@@ -106,7 +106,7 @@ For Python instead of Node, swap the launcher for the PyPI package, which `uvx`
|
|
|
106
106
|
{
|
|
107
107
|
"mcpServers": {
|
|
108
108
|
"zillow": {
|
|
109
|
-
"url": "https://mcp.hasdata.com/
|
|
109
|
+
"url": "https://mcp.hasdata.com/mcp?apis=zillow",
|
|
110
110
|
"headers": { "x-api-key": "HASDATA_API_KEY" }
|
|
111
111
|
}
|
|
112
112
|
}
|
|
@@ -124,7 +124,7 @@ For Python instead of Node, swap the launcher for the PyPI package, which `uvx`
|
|
|
124
124
|
{
|
|
125
125
|
"mcpServers": {
|
|
126
126
|
"zillow": {
|
|
127
|
-
"serverUrl": "https://mcp.hasdata.com/
|
|
127
|
+
"serverUrl": "https://mcp.hasdata.com/mcp?apis=zillow",
|
|
128
128
|
"headers": { "x-api-key": "HASDATA_API_KEY" }
|
|
129
129
|
}
|
|
130
130
|
}
|
|
@@ -143,7 +143,7 @@ For Python instead of Node, swap the launcher for the PyPI package, which `uvx`
|
|
|
143
143
|
"servers": {
|
|
144
144
|
"zillow": {
|
|
145
145
|
"type": "http",
|
|
146
|
-
"url": "https://mcp.hasdata.com/
|
|
146
|
+
"url": "https://mcp.hasdata.com/mcp?apis=zillow",
|
|
147
147
|
"headers": { "x-api-key": "HASDATA_API_KEY" }
|
|
148
148
|
}
|
|
149
149
|
}
|
|
@@ -176,6 +176,11 @@ A search result is enough to rank and shortlist. Price history, tax history, the
|
|
|
176
176
|
|
|
177
177
|
## Tools
|
|
178
178
|
|
|
179
|
+
| Tool | What it returns |
|
|
180
|
+
| --- | --- |
|
|
181
|
+
| `hasdata_zillow_listing_getRealEstateListings` | Each listing with address, Zillow URL/zpid, price, Zestimate, beds/baths, sqft, home type, status, days on Zillow, coordinates, thumbnail, and listing agent. 5 credits a call |
|
|
182
|
+
| `hasdata_zillow_property_getPropertyDetails` | Address, list price, Zestimate and Rent Zestimate, price and tax history, beds/baths, living area, lot size, year built, home type, HOA, days on Zillow, listing…. 5 credits a call |
|
|
183
|
+
|
|
179
184
|
Two tools, read-only. Samples below are trimmed from real calls, and the numbers move as the market moves. Read them as shapes. Each tool name links to its endpoint reference, which carries the full field list.
|
|
180
185
|
|
|
181
186
|
The samples are the payload, not the whole response. A `tools/call` result carries one text block, and that text is itself JSON holding `url`, `status`, `text` and `json`, with the scraped data under `json`. From a raw JSON-RPC response the path is `result.content[0].text`, parsed, then `.json`. A chat client unwraps that for you and code talking to the endpoint directly does not.
|
|
@@ -274,9 +279,9 @@ Each Zillow tool costs **5 credits per successful call**. Turning on `extractAge
|
|
|
274
279
|
|
|
275
280
|
The free tier is **1,000 credits every month with no card**, which is 200 Zillow calls at the base rate. It renews with the billing cycle, so a low-volume agent runs on the free tier indefinitely.
|
|
276
281
|
|
|
277
|
-
Paid plans start at **$
|
|
282
|
+
Paid plans start at **$59 a month** for 200,000 credits, which is 40,000 calls. The unit price falls with volume, from **$1.48 per 1,000 calls** on the entry plan to **$0.60** on Basic and **$0.41** across the Growth tiers. Current figures live on the [pricing page](https://hasdata.com/prices?utm_source=github&utm_medium=syndication&utm_campaign=zillow-mcp).
|
|
278
283
|
|
|
279
|
-
Your plan also sets concurrency. The free tier allows 1 request at a time, Startup
|
|
284
|
+
Your plan also sets concurrency. The free tier allows 1 request at a time, Startup 5, Basic 15, and the Growth tiers run from 50 to 500. Handle the overflow case defensively in anything unattended.
|
|
280
285
|
|
|
281
286
|
A request that comes back non-200 is not billed. A successful call that finds nothing is still a call.
|
|
282
287
|
|
package/index.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { spawn } from 'node:child_process';
|
|
|
6
6
|
import { createRequire } from 'node:module';
|
|
7
7
|
import { dirname, join } from 'node:path';
|
|
8
8
|
|
|
9
|
-
const URL = 'https://mcp.hasdata.com/
|
|
9
|
+
const URL = 'https://mcp.hasdata.com/mcp?apis=zillow';
|
|
10
10
|
const key = process.env.HASDATA_API_KEY;
|
|
11
11
|
if (!key) {
|
|
12
12
|
process.stderr.write('HASDATA_API_KEY is not set. Create a free key at https://app.hasdata.com and set HASDATA_API_KEY.\n');
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasdata/zillow-mcp",
|
|
3
3
|
"mcpName": "com.hasdata/zillow",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.7",
|
|
5
5
|
"description": "MCP server for Zillow through HasData's hosted API: search for-sale, for-rent and sold listings, and read a single property in full. 1,000 free credits every month.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|