~ / endpoints / Home Price & Sales Data API

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.

Get a free API keyAll data types
1,000
free requests
2.6s
median response
JSON
structured output
1
call per location
the bottleneck

Why Zillow Home Price data is tough at scale

Zillow publishes market data as bulk research CSVs and its ZHVI index, but there is no public API that returns priced listing data for a given ZIP, and every for-sale page hides its numbers in a hydration blob behind PerimeterX. So a simple question like the current list prices and Zestimates in a ZIP means scraping a challenge-walled page and parsing JSON out of an HTML comment.

setup

Run the Zillow Home Price Data Scraper API in one call

cURL
curl "https://api.zillowscraperapi.com/api/v1/zillow/search?location=Seattle,%20WA&page=1&api_key=$API_KEY"
Python
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)
query options

Parameters

ParameterRequiredDefaultNotes
locationrequired-The place to pull prices for: a city and state (Seattle, WA), a ZIP code, or a neighborhood. This is the primary parameter.
urloptional-A Zillow for-sale results URL to scrape directly, as an alternative to building the location slug yourself.
pageoptional11-based results page. Zillow paginates the for-sale list; page holds about 40 homes. Range 1 to 20.
statusoptionalfor_saleListing status filter: for_sale, for_rent, or sold. Use sold to pull recent sales data for a location.
limitoptional100Maximum rows to return, from 1 to 500. The page itself holds roughly 40 listings.
api_keyrequired-Your API key, passed as a query parameter. Get one free at signup.
json out

The Zillow Home Price Data Scraper API JSON response

200 OK
{
  "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,
      "currency": "USD",
      "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,
      "currency": "USD",
      "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
    }
  ]
}
FieldTypeDescription
querystringThe location you searched, echoed back.
locationstringThe resolved location string for the results.
pageintegerThe results page returned, starting at 1.
total_resultsintegerNumber of listings in the results array for this page.
resultsarrayThe listings for this location, each with the price and value fields below.
results[].priceintegerThe current list price in whole dollars.
results[].zestimateinteger or nullZillow's Zestimate value for the home, or null when Zillow does not publish one for that listing.
results[].bedsintegerBedroom count for the home.
results[].bathsintegerBathroom count for the home.
results[].sqftintegerLiving area in square feet, used for price-per-square-foot math.
results[].address_zipstringZIP code of the listing, for grouping price data by ZIP.
results[].statusstringRaw listing status, e.g. FOR_SALE, SOLD.
results[].status_textstringHuman-readable status such as Active.
results[].home_typestringProperty type, e.g. SINGLE_FAMILY, CONDO.
results[].zpidstringThe stable Zillow id, ready to pass to the property endpoint for full detail.
results[].latitudenumberListing latitude for mapping and geographic joins.
results[].longitudenumberListing longitude for mapping and geographic joins.
what it powers

Ways teams use this data

>

Price data by ZIP code

Search a ZIP or city and pull the list price, Zestimate, and square footage of every home to build a current price table for that market without a manual export.
>

Recent sales and comps

Set status to sold to pull recently sold homes for a location, then use price, beds, baths, and sqft as comparable-sales inputs for valuation.
>

List-price vs Zestimate gaps

Compare each home's price against its zestimate to flag listings priced above or below Zillow's own value estimate across a ZIP.
>

Market dashboards

Poll a set of ZIP codes on a schedule and store median price, price per square foot, and inventory counts to chart how a local market moves over time.
>

Investment screening

Filter a location's listings by price band, home_type, and size to surface candidates that fit a buy-box, then hand each zpid to the property endpoint for the full record.
>

Appraisal and lending support

Assemble priced, geolocated listing sets for a subject area to support appraisal review, portfolio valuation, and lending decisions.
why choose us

Where our Zillow Home Price Data Scraper API stands out

Give us a location and we run the proxied fetch, PerimeterX handling, and parsing, then return every listing's price, Zestimate, size, and status as a ranked JSON array. One request covers a whole page of a market in about 2.6 seconds, with a stable schema verified at 100% parity, no bulk-CSV download to wrangle, and a 1,000-request free tier.

*

Location or URL input

Pass a city, ZIP, or neighborhood and we build Zillow's results slug, or hand us a for-sale URL directly. Either way the priced list comes back parsed.
*

List price and Zestimate together

Each result carries both the current price and Zillow's Zestimate when published, so the value comparison is one field away with no second lookup.
*

Sold-status pricing

Set status to sold to pull recent sales for a location, or for_sale and for_rent for active inventory, from the same endpoint.
*

PerimeterX handling built in

Proxies and anti-bot handling clear Zillow's challenge, so the results page returns priced listings instead of a captcha wall.
*

Chains into the property endpoint

Every result includes a zpid you can pass straight to zillow/property for the full record: price per square foot, description, photos, and agent.
*

Honest nulls

When Zillow does not publish a Zestimate for a listing, we return zestimate as null and never invent a number the page does not carry.
versus

Zillow Home Price Data Scraper API vs DIY and the Zillow API

Our APIZillow research CSVsDIY (requests / headless)
Priced listings by ZIPLive JSON per locationAggregate index onlyManual fetch and parse
Per-home ZestimateIncluded when publishedNot in the bulk filesYou parse it yourself
Sold and for-salestatus filter on one endpointSeparate research datasetsSeparate pages to parse
FreshnessCurrent page at request timePeriodic file refreshCurrent, if unblocked
Anti-bot (PerimeterX)Handled for youNot applicableYou solve the challenge
Output shapeStable flat JSONCSV you reshapeWhatever you parse
cost to run

Free to test, cheap to scale

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky 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.

Start with the Zillow Home Price Data Scraper API
1,000 requests free. No card, no commitment.
Get a free API key All data types