Zillow Home Price Data Scraper API
Our Zillow home price data API takes a location, a city, a ZIP, or a neighborhood, and returns every for-sale listing with its list price, Zestimate, beds, baths, and square footage as structured JSON, so you can build price and sales data by ZIP code without a manual export.
Quickstart
curl "https://api.zillowscraperapi.com/api/v1/zillow/search?location=Seattle,%20WA&page=1&api_key=$API_KEY" import requests
BASE = "https://api.zillowscraperapi.com"
API_KEY = "YOUR_API_KEY"
# Pass a city, ZIP, or neighborhood. Read list price and Zestimate per home.
data = requests.get(
f"{BASE}/api/v1/zillow/search",
params={"location": "Seattle, WA", "page": 1, "api_key": API_KEY},
timeout=30,
).json()
print(data["total_results"], "listings in", data["location"])
for home in data["results"]:
gap = None
if home["zestimate"] and home["price"]:
gap = home["zestimate"] - home["price"]
print(home["address_zip"], f"${home['price']:,}", "zestimate", home["zestimate"], "delta", gap) Response
{
"query": "Seattle, WA",
"location": "Seattle, WA",
"page": 1,
"total_results": 10,
"results_count": 10,
"results": [
{
"position": 1,
"id": "463504654",
"title": "6505 44th Avenue NE, Seattle, WA 98115",
"url": "https://www.zillow.com/homedetails/6505-44th-Ave-NE-Seattle-WA-98115/463504654_zpid/",
"price": 899900,
"beds": 3,
"baths": 3,
"sqft": 1422,
"zpid": "463504654",
"address_street": "6505 44th Avenue NE",
"address_city": "Seattle",
"address_state": "WA",
"address_zip": "98115",
"zestimate": null,
"status": "FOR_SALE",
"status_text": "Active",
"home_type": "SINGLE_FAMILY",
"latitude": 47.675953,
"longitude": -122.281136,
"has_image": true,
"builder_name": "Enduring Estates LLC"
},
{
"position": 2,
"id": "48725548",
"title": "2218 E Prospect Street, Seattle, WA 98112",
"url": "https://www.zillow.com/homedetails/2218-E-Prospect-St-Seattle-WA-98112/48725548_zpid/",
"price": 5000000,
"beds": 5,
"baths": 6,
"sqft": 8010,
"zpid": "48725548",
"address_street": "2218 E Prospect Street",
"address_city": "Seattle",
"address_state": "WA",
"address_zip": "98112",
"zestimate": 5015900,
"status": "FOR_SALE",
"status_text": "Active",
"home_type": "SINGLE_FAMILY",
"latitude": 47.62881,
"longitude": -122.30269,
"has_image": true,
"builder_name": null
}
]
} | Field | Type | Description |
|---|---|---|
query | string | The location you searched, echoed back. |
location | string | The resolved location string for the results. |
page | integer | The results page returned, starting at 1. |
total_results | integer | Number of listings in the results array for this page. |
results | array | The listings for this location, each with the price and value fields below. |
results[].price | integer | The current list price in whole dollars. |
results[].zestimate | integer or null | Zillow's Zestimate value for the home, or null when Zillow does not publish one for that listing. |
results[].beds | integer | Bedroom count for the home. |
Use it for
Price data by ZIP code
Recent sales and comps
List-price vs Zestimate gaps
Market dashboards
Pricing
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
Is there a Zillow sales data by ZIP code tool?
Our Zillow home price data API works as one. Pass a ZIP or city as the location parameter and it returns every listing on that results page with its list price, Zestimate, beds, baths, square footage, and status as JSON. Set status to sold to pull recent sales instead of active listings, so you can assemble price and sales data for a ZIP programmatically without downloading and reshaping a bulk CSV.
Does Zillow offer a home price API?
Zillow publishes market-level research data, including the Zillow Home Value Index, as downloadable CSV files, but it does not offer a public API that returns priced listing data for a specific ZIP or city. Our endpoint reads the public for-sale and sold results pages and returns each home's price and Zestimate as structured JSON, filling the gap the research downloads leave for listing-level data.
Can I get the Zestimate for each home?
Yes, when Zillow publishes one. Each result carries a zestimate field with Zillow's value estimate for that home. Some listings, often brand-new construction, have no Zestimate yet, and for those we return null and never a fabricated value. Comparing zestimate against the list price across a ZIP is a common way to spot homes priced above or below Zillow's own estimate.
How do I pull sold and sales data instead of active listings?
Set the status parameter to sold. The endpoint then returns recently sold homes for the location with the same fields, price, beds, baths, sqft, and address, so you can build comparable-sales sets and track sale activity by ZIP. Use for_sale for active inventory and for_rent for rentals from the same call.
How many listings come back per request?
One request returns a single results page, which holds roughly 40 homes, and you can raise the limit parameter up to 500 or walk deeper with the page parameter (1 to 20). Zillow caps a given search around a few hundred results, so covering a large metro means splitting it into tighter locations or ZIP codes and paging through each.
How fast is the Zillow price data API and how is it billed?
Median end-to-end response is about 2.6 seconds per page, including proxy routing, PerimeterX handling, retries, and parsing. You are billed only for successful requests, so blocked fetches that we retry behind the scenes do not land on your bill. The free tier includes 1,000 requests to test against real ZIP codes first.