Roundup
October 2026 · 11 min read
Zillow API Alternatives in 2026: 5 Tested and Compared
Zillow data without building a scraper. We ran the same home through 5 APIs live, side by side, and worked out the cost per 1K requests and what each one covers.
Adam Ben-Ayoun
CTO, OpenWeb Ninja
Zillow API · Redfin API · Python · API Comparison

Does Zillow Have an API?
Not one you can sign up for and call. Zillow Group's Zestimate API is by request, and its Public Records and MLS listing APIs are "currently invite only". The other route is a third-party API. We ran five live, and four returned the same Zestimate ($534,500) for our test home.
Best Zillow API options by need
- Zillow and Redfin on one key, by address: OpenWeb Ninja, which also searches by coordinates and polygon.
- Fastest by address in our test: RealtyAPI, 0.63 s median.
- Lowest published price at volume: HasData, $0.69 per 1,000 requests on Growth.
- Pay per result, no commitment: Apify, $0.0036 per result on the free plan.
- Ownership, deed and mortgage records: ATTOM, a records API with an AVM.
Comparison table
All five run live with our own keys in October 2026. "Per 1K" is the entry plan price divided by the requests (or results) it includes.
| Option | Data | Entry price per 1K | Free tier |
|---|---|---|---|
| OpenWeb Ninja | Zillow and Redfin | $2.50 ($25 / 10,000) | 100 requests/mo |
| HasData | Zillow and Redfin scrapers | $2.46 ($49 / 20,000) | 100 Zillow requests/mo |
| Apify Zillow Detail Scraper | Zillow property pages | $3.60 (free-plan rate) | $5 usage/mo |
| RealtyAPI | Zillow, Redfin, other portals | $2.45 ($49 / 20,000)* | 250 requests/mo |
| ATTOM | US property records, AVM | Not published | Free trial key |
*RealtyAPI bills 1 to 3 credits for detailed property calls, so this is the best case.
Is There an Official Zillow API?
Zillow Group's developer hub lists close to 20 APIs. Three matter here, and each is gated:
- Zestimate API: Zestimates for about 100 million US properties, for "commercial use cases by businesses". You request access.
- Public Records API: county parcel, assessment and transaction data. "Currently invite only."
- MLS listings API: RESO-standard MLS data, US and Canada. "Currently invite only", at "the discretion of our individual MLS partners".
For research, the hub points to Zillow Research downloads: regional metrics, not individual listings.
How We Tested the Five APIs
- One home: 12909 Majestic Oaks Dr, Austin, TX 78732, chosen because it has a Zestimate (see the note below).
- Five APIs, live: each asked for the property details, three runs, median time, one machine, October 2026.
- Docs vs observations: capabilities and prices come from each provider's own docs and pricing page. Timings and values come from our calls. Where docs are silent, we say "not documented".
We build one of these APIs, so read entry #1 with that in mind.
Same Home, Four Zillow Data APIs, Same Answer
| API | Lookup by | Median time | Zestimate / rent | Price events / tax years |
|---|---|---|---|---|
| OpenWeb Ninja | Address | 0.95 s | $534,500 / $2,921 | 6 / 22 |
| RealtyAPI | Address | 0.63 s | $534,500 / $2,921 | 6 / 22 |
| HasData | Zillow URL | 2.94 s | $534,500 / $2,921 | 6 / 22 |
| Apify (maxcopell) | Zillow URL | 5.76 s | $534,500 / $2,921 | 6 / 22 |
All four agree on bedrooms, bathrooms, living area, year built, both estimates and the price and tax history. The choice comes down to how you look a home up, speed and price.
ATTOM answers differently. It is a records API, so it has no Zestimate or price events. Its AVM said $539,000, with a range of $494,392 to $583,608 and a confidence score of 92.
One catch: OpenWeb Ninja's Zestimate endpoint returned null for all eight active Austin listings we tried, and a value for three of four recently sold homes. The docs do not say when it can be null.
OpenWeb Ninja Real-Time Real Estate Data
Zillow + RedfinBest for: Zillow and Redfin listings, details, Zestimates and market trends under one key
The Real-Time Real Estate Data API has 15 endpoints: search by location, coordinates or polygon, property details by ZPID, URL or address, Zestimates, agent listings and Redfin market trends. Zillow-only and Redfin-only versions exist. Plans: $25 for 10,000 requests, $75 for 50,000, $150 for 200,000, and a free plan of 100 requests a month. Code and responses are in the quick start.
Pros
- +Address lookup, plus search by coordinates and polygon
- +Zillow and Redfin on one key
Cons
- -Zestimate behavior on active listings is not documented: null in all eight we tried
HasData Zillow Scraper API
Zillow + RedfinBest for: Zillow and Redfin scrapers on the same account as HasData's other scrapers
Zillow and Redfin listing and property endpoints (we ran the Zillow ones). Each request costs 10 credits: $2.46 per 1,000 on the $49 plan, $0.99 on Basic, $0.69 on Growth. The free plan is 1,000 credits, which its pricing page lists as 100 Zillow requests.
# hasdata_zillow_property.py
import requests
response = requests.get(
"https://api.hasdata.com/scrape/zillow/property",
headers={"x-api-key": "YOUR_API_KEY"},
params={"url": "https://www.zillow.com/homedetails/12909-Majestic-Oaks-Dr-Austin-TX-78732/29357265_zpid/"},
)
home = response.json()["property"]
print(home["beds"], home["baths"], home["yearBuilt"], home["zestimate"]["zestimate"], home["zestimate"]["rentZestimate"])Response (trimmed)
{ "requestMetadata": { "status": "ok", ... }, "property": { "id": 29357265, "status": "RECENTLY_SOLD", "homeType": "SINGLE_FAMILY", "beds": 3, "baths": 2, "yearBuilt": 2000, "zestimate": { "zestimate": 534500, "estimatedSaleRange": "$508K - $561K", "rentZestimate": 2921, "zestimateLowPercent": 5, "zestimateHighPercent": 5 }, ... more fields } }
Pros
- +Lowest published per-request rate here: $0.69 per 1,000 on Growth
- +Redfin endpoints documented on the same key (not run by us)
Cons
- -Property details need a Zillow URL, not an address
- -Free tier is only 100 Zillow requests
Apify Zillow Detail Scraper
ZillowBest for: paying per result for Zillow detail pages when a few seconds per call is fine
An Actor published by the user maxcopell in the Apify Store. It takes Zillow URLs and is priced per result: $0.0036 on the free plan ($3.60 per 1,000), down to $0.0008 on the top tier. The free plan includes $5 of usage a month. Search is a separate Actor.
# apify_zillow_detail.py
import requests
response = requests.post(
"https://api.apify.com/v2/acts/maxcopell~zillow-detail-scraper/run-sync-get-dataset-items",
headers={"Authorization": "Bearer YOUR_API_TOKEN"},
json={"startUrls": [{"url": "https://www.zillow.com/homedetails/12909-Majestic-Oaks-Dr-Austin-TX-78732/29357265_zpid/"}]},
)
home = response.json()[0]
print(home["bedrooms"], home["bathrooms"], home["yearBuilt"], home["zestimate"], home["rentZestimate"])Response (trimmed)
[ { "zpid": 29357265, "homeType": "SINGLE_FAMILY", "bedrooms": 3, "bathrooms": 2, "livingArea": 2315, "yearBuilt": 2000, "zestimate": 534500, "rentZestimate": 2921, "listingStatus": "sold", "dateSold": "2026-10-02T00:00:00.000Z", ... more fields } ]
Pros
- +Priced per result, with $5 free usage a month
Cons
- -Slowest in our test: 5.76 s median
- -Takes Zillow URLs, not addresses
RealtyAPI
Zillow + Redfin + moreBest for: one key across Zillow, Redfin, Realtor.com and other portals, including outside the US
Its docs describe a Zillow API with lookups by address, ZPID or URL, search, and Zestimate, tax and price history. Plans: Free 250 requests a month, Pro $49 for 20,000, Ultra $99 for 85,000, Mega $399 for 500,000 ($0.80 per 1,000). Detailed property calls cost 1 to 3 credits. The pricing page's platform list does not name Zillow, so plan coverage for Zillow is not documented.
# realtyapi_zillow_property.py
import requests
response = requests.get(
"https://zillow.realtyapi.io/pro/byaddress",
headers={"x-realtyapi-key": "YOUR_API_KEY"},
params={"propertyaddress": "12909 Majestic Oaks Dr, Austin, TX 78732"},
)
home = response.json()["propertyDetails"]
print(home["bedrooms"], home["bathrooms"], home["yearBuilt"], home["zestimate"], home["rentZestimate"])Response (trimmed)
{ "message": "200: Success", "zillowURL": "https://www.zillow.com/homedetails/12909-Majestic-Oaks-Dr-Austin-TX-78732/29357265_zpid/", "propertyDetails": { "zpid": 29357265, "homeStatus": "RECENTLY_SOLD", "homeType": "SINGLE_FAMILY", "bedrooms": 3, "bathrooms": 2, "livingArea": 2315, "yearBuilt": 2000, "zestimate": 534500, "rentZestimate": 2921, "priceHistory": [ { "date": "2026-10-02", "event": "Sold", "price": null }, ... more events ], "taxHistory": [ ... ], ... more fields } }
A Zillow search for Austin, TX returned 200 results in a median 1.13 s. Its /pricehistory endpoint worked with byzpid but returned HTTP 500 with byaddress.
Pros
- +Fastest in our test: 0.63 s median, by address
- +Many portals under one key
Cons
- -1 to 3 credits per detailed call raises the real price
- -/pricehistory failed with an address
ATTOM Property API
Public recordsBest for: US property records: ownership, deeds, mortgages, building permits and valuation
ATTOM's docs describe over 160 million US properties: ownership, deeds, mortgages, permits, assessed values and an automated valuation model (AVM). Calls need an APIKey header, and you get a key from a free trial account. We found no prices, and trial limits are not documented.
# attom_property.py
import requests
headers = {"APIKey": "YOUR_API_KEY", "Accept": "application/json"}
base = "https://api.gateway.attomdata.com/propertyapi/v1.0.0"
address = {"address1": "12909 Majestic Oaks Dr", "address2": "Austin, TX 78732"}
avm = requests.get(f"{base}/attomavm/detail", headers=headers, params=address).json()["property"][0]["avm"]
print(avm["eventDate"], avm["amount"])Response (trimmed)
{ "status": { "msg": "SuccessWithResult", "total": 1 }, "property": [ { "address": { "oneLine": "12909 MAJESTIC OAKS DR, AUSTIN, TX 78732" }, "avm": { "eventDate": "2026-09-24", "amount": { "scr": 92, "value": 539000, "high": 583608, "low": 494392, "fsd": 8.0 } }, "assessment": { "assessed": { "assdttlvalue": 520303 } }, ... more sections } ] }
ATTOM's docs say scr is "the confidence in the calculation". Median times: AVM 0.11 s, property detail 0.32 s, assessment history 0.15 s (14 years). Its current assessed total ($520,303) matches the latest value in Zillow's tax history.
Pros
- +Ownership, deed and mortgage records with an AVM and confidence score
- +Fast, and a free trial gets you a key
Cons
- -No prices or trial limits found in its docs
- -A records API: no Zestimate, listings or price events
Quick Start
Get a free key on the Real-Time Real Estate Data API page, then run these.
1. Search Zillow listings
# openwebninja_zillow_search.py
import requests
response = requests.get(
"https://api.openwebninja.com/realtime-real-estate-data/zillow/search",
headers={"x-api-key": "YOUR_API_KEY"},
params={"location": "Austin, TX", "home_status": "FOR_SALE"},
)
homes = response.json()["data"]
print(len(homes), homes[0]["address"], homes[0]["price"])Response (trimmed)
{ "status": "OK", "data": [ { "zpid": "52830624", "homeStatus": "FOR_SALE", "address": "15120 Thatcher Dr, Austin, TX 78717", "homeType": "SINGLE_FAMILY", "price": 565000, "bedrooms": 3, "bathrooms": 3, "livingArea": 2537, "daysOnZillow": 3, ... more fields }, ... more listings ] }
Each search page includes up to 41 results.
2. Look up a home by address, then fetch its Zestimate
# openwebninja_zillow_details.py
import requests
headers = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.openwebninja.com/realtime-real-estate-data"
home = requests.get(
f"{base}/zillow/property-details-address",
headers=headers,
params={"address": "12909 Majestic Oaks Dr, Austin, TX 78732"},
).json()["data"]
print(home["zpid"], home["bedrooms"], home["bathrooms"], home["livingArea"], home["yearBuilt"])
zestimate = requests.get(
f"{base}/zillow/zestimate",
headers=headers,
params={"zpid": home["zpid"]},
).json()["data"]
print(zestimate)Response: property details (trimmed)
{ "status": "OK", "data": { "zpid": 29357265, "homeStatus": "RECENTLY_SOLD", "homeType": "SINGLE_FAMILY", "bedrooms": 3, "bathrooms": 2, "livingArea": 2315, "yearBuilt": 2000, "zestimate": 534500, "rentZestimate": 2921, "priceHistory": [ { "date": "2026-10-02", "event": "Sold", "price": null, "source": "Agent Provided" }, { "date": "2026-09-21", "event": "Contingent", "price": 539000, "source": "Unlock MLS" }, ... more events ], "taxHistory": [ { "taxPaid": 8235.92, "value": 520303, "valueIncreaseRate": -0.029917087 }, ... more years ], ... more fields } }
Response: Zestimate
{ "status": "OK", "parameters": { "zpid": "29357265" }, "data": { "zestimate": 534500 } }
3. Redfin market trends for a ZIP code
# openwebninja_redfin_trends.py
import requests
response = requests.get(
"https://api.openwebninja.com/realtime-real-estate-data/redfin/market-trends",
headers={"x-api-key": "YOUR_API_KEY"},
params={"location": "78732"},
)
snapshot = response.json()["data"]["snapshot"]
print(snapshot["medianSalePrice"], snapshot["medianSalePerList"], snapshot["avgDaysOnMarket"], snapshot["yoySalePrice"])Response (trimmed)
{ "status": "OK", "data": { "region": { "name": "78732", "region_type": 2, "country_code": "US" }, "snapshot": { "medianListPrice": "$826K", "medianSalePrice": "$861K", "medianSalePerList": "96.3%", "numHomesSold": "20", "numHomesOnMarket": "108", "avgDaysOnMarket": "86", "yoySalePrice": "+7.8%" }, "home_prices": [ ... ], "demand": [ ... ] } }
Redfin search and trends take a 5-digit US ZIP code, a Canadian postal-code area or a Redfin URL. A city name returned a 400 error.
Building an AI agent? OpenWeb Ninja and RealtyAPI both document an MCP server, and ours is in the MCP server post. For use cases see real estate intelligence and deal sourcing with Zillow data.
Sources
Prices and docs read in October 2026. Prices change; check before you commit.
- OpenWeb Ninja: API page
- HasData: pricing, Zillow property docs
- Apify: Actor, pricing, API docs
- RealtyAPI: pricing, credits, Zillow OpenAPI spec
- ATTOM: API docs
- Zillow Group: developer hub, Research data
- Redfin: Data Center
FAQ
Does Zillow have an API?
What is the best Zillow API alternative?
Is there a free Zillow API?
How much does a Zillow API cost?
Is there a Redfin API?
How do I get Zestimate data?

Written by
Adam Ben-Ayoun
CTO at OpenWeb Ninja
Adam leads engineering at OpenWeb Ninja, building the APIs and infrastructure that make public web data accessible to developers and AI agents.
Connect on LinkedInOne key. 50+ APIs. Start free.
100 free requests a month, no credit card. Zillow and Redfin search, property details, Zestimates and market trends, plus SERP, Google Maps, Amazon and 50+ other APIs on the same key.