Zillapi
About
Zillow Data API MCP server. Property lookup, Zestimate, listings, photos, schools.
Details
- Author
- nikhonit
- Categories
- Database, Other, API
Jump to
Setup
Install Zillapi in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/nikhonit/zillow-api
Follow the installation instructions in the repository README, then restart your MCP client.
Zillow API: REST endpoints, code examples, free tier (2026)
Get a free API key →. 100 credits at signup, no card required.
Run comps, pull Zestimates, and scan for-sale, sold & rental listings across 160M+ U.S. homes with one REST call: photos, taxes, schools, and full price history included. Free tier, no card. This repo is a resource hub for the modern Zillow API: REST endpoints, working code samples in six languages, and a free tier you can use without a credit card. Zillow's original public API (ZWSID) was retired in September 2021. Bridge Interactive, the official replacement, is limited to MLS-affiliated brokers. For everyone else, independent developers, data analysts, AI agents, and real-estate startups, the practical answer in 2026 is a third-party REST wrapper. This repository documents one of them (Zillapi) end-to-end so you can copy 10 lines of code and have property data flowing in under five minutes.
This repo is not a maintained SDK. It is a curated set of examples, endpoint stubs, and recipes that match the OpenAPI spec atzillapi.com/openapi.json. Every snippet is one screen long, uses standard-library tooling where possible, and is verified to run against the live API.
Look up any U.S. property by address, with one HTTPS call. No SDK, no auth dance, just a bearer token.
curl -s "https://api.zillapi.com/v1/properties/by-address" \ -G --data-urlencode "address=1600 Pennsylvania Ave NW, Washington DC 20500" \ -H "Authorization: Bearer $ZILLAPI_KEY" \ | jq '.data | {zpid, address, zestimate, bedrooms, bathrooms, livingArea}'
You get back a wrapped JSON envelope,{ "data": {...}, "request_id": "..." }, with 300+ typed fields on the property: Zestimate, beds, baths, square footage, year built, lot size, tax history, school ratings, listing agent, photos, and theresoFactsMLS attribute blob.
Sign up at zillapi.com, grab a key, setZILLAPI_KEY, and the request above runs as-is.
There is no public, self-serve Zillow API today for property-level data. Zillow Group's original consumer-developer program, ZWSID, shipped in 2008 and ran for thirteen years before beingretired on September 30, 2021. The notice gave existing keys a short wind-down window; after that, every legacy library,pyzillow,python-zillow,aelaguiz/python_zillow, the various Ruby and PHP ports, started returning 403s.
The gap that opened in 2021 is what third-party REST wrappers fill. They normalize requests against Zillow's own data layer, cache responses, expose a clean OpenAPI surface, and meter usage in credits instead of broker contracts. The Zillow API ecosystem in 2026 is essentially this category: a handful of independent services offering the same shape of contract, a bearer token, a JSON response, per-credit pricing, that the original ZWSID program offered fifteen years ago.
The Zillow API surface in this repo covers nine functional areas mapped to nine REST endpoints. Each is one HTTPS call, returns wrapped JSON, and bills against your credit balance only on success.
- Look up a property by address,/v1/properties/by-address. Free-form U.S. address; we geocode and resolve a zpid upstream.
- Look up a property by Zillow URL,/v1/properties/by-url. Paste anyhomedetails,b,community, orapartmentsURL.
- Look up a property by zpid,/v1/properties/{zpid}. Cache-served when fresh.
- Get the Zestimate,/v1/properties/{zpid}/zestimate. Returns the Zestimate, rent Zestimate, tax-assessed value, and last-sold price as a four-field response.
- Search for-sale or for-rent listings,/v1/listings(GET, bbox-based) or/v1/search(POST, structured filters). Up to ~820 results per call withPAGINATION, more withPAGINATION_WITH_ZOOM_IN.
- Pull price + ownership history,/v1/properties/{zpid}/price-historyand/v1/properties/{zpid}/tax-history.
- Get school ratings + agent contact,/v1/properties/{zpid}/schools(GreatSchools ratings, distance, level) and/v1/properties/{zpid}/agent(agent name, email, phone, broker).
- Photos and open houses,/v1/properties/{zpid}/photos(full-resolution + responsive widths) and/v1/properties/{zpid}/open-houses.
- Async batches + signed webhooks,POST /v1/properties/batchfor up to 500 records per job; webhook deliveries are HMAC-signed.
Full schema is in theOpenAPI spec. Stub references are inendpoints/.
Ready to try?Get a free Zillapi API key →and start with the curl example below.
Six languages, each in its own folder. Every snippet is one screen, uses the language's stdlib or a single zero-friction dependency, and resolves to the same canonical shape: a wrapped JSON envelope underdatawith arequest_idfor support traceability.
curlplusjqis the fastest way to verify a key works and inspect the response shape. No build step, no installer, every Unix box has both.
curl -s "https://api.zillapi.com/v1/properties/by-address" \ -G --data-urlencode "address=1600 Pennsylvania Ave NW, Washington DC 20500" \ -H "Authorization: Bearer $ZILLAPI_KEY" \ | jq '.data | {zpid, address, zestimate, bedrooms, bathrooms}'
Three more shell scripts inexamples/curl/cover the by-URL lookup and a bbox listing search.
The Python ecosystem is the most common landing zone for this API. We usehttpxbecause it has a clean sync API and built-in connection pooling;requestsworks identically if you prefer it.
import os import httpx resp = httpx.get( "https://api.zillapi.com/v1/properties/by-address", params={"address": "1600 Pennsylvania Ave NW, Washington DC 20500"}, headers={"Authorization": f"Bearer {os.environ['ZILLAPI_KEY']}"}, timeout=30, ) resp.raise_for_status() prop = resp.json()["data"] print(f"Zestimate: ${prop['zestimate']:,}") print(f"Beds/baths: {prop['bedrooms']}/{prop['bathrooms']}") print(f"Living area: {prop['livingArea']:,} sqft")
Five Python examples in[examples/python/cover the quickstart, by-address and by-URL lookups, the dedicated Zestimate endpoint, listing search, and a pandas DataFrame export. The pandas example usespd.json_normalize()to flatten the nested response into a flat tabular shape suitable for CSV or Parquet.
Node 18+ has nativefetch. Zero dependencies, zero build step. Works the same in Bun and Deno.
…
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





