Documentation Blog Free tools [email protected]Log in

Zillow scraper API

A Zillow scraper API that turns a US location into property rows: price, beds, baths, living area, lot size, home type, listing status, Zestimate and rent Zestimate, days on Zillow, broker, coordinates, photo and the listing URL. For sale, for rent or recently sold.

$0.001 per delivered listing · $2 free every month · Failed runs never billed

POST /v1/scraper/collectors/zillow_search/run
$ curl $QD/zillow_search/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"location": "Austin,  TX", "status": "for_sale", "max_results": 80}'
{ "status": "done", "count": 80,
  "results": [
    {
      "zpid": "…",
      "address": "…",
      "street": "…",
      "city": "…" } ],
  "cost": 0.08 }
# 80 listings × $0.001 · nothing delivered, nothing charged
$0.001 / listing2,000 listings on the free $2 every month
Semantic inputlocation, status, max_results — no URL lists
Up to 500listings per run, pagination handled for you
No browserread over HTTP/TLS — cheaper and faster than rendering

What a Zillow scraper API does

Real-estate analysis needs the whole board, not one listing at a time: everything for sale in a ZIP, with size, price and location on the same row. This collector paginates a Zillow search and returns exactly that, with the address already split into street, city, state and ZIP.

Zillow ships its results inside the page's data payload — but not always in the same shape: sometimes the search state is a sub-object, sometimes a JSON string nested inside the props tree. Both forms have been seen on the same day, so the parser handles both instead of breaking on whichever one it did not expect.

What one listing looks like

Every delivered listing carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

FieldTypeWhat it holds
rankinteger1-based position across pages.
pageintegerResults page the row came from.
zpidstringZillow property id.
addressstring · nullableFull address as shown.
streetstring · nullableStreet line.
citystring · nullableCity.
statestring · nullableState code.
zipcodestring · nullableZIP code.
pricestring · nullablePrice as shown.
price_valuenumber · nullableNumeric price.
currencystring · nullableCurrency symbol.
bedsnumber · nullableBedrooms.
bathsnumber · nullableBathrooms.
area_sqftnumber · nullableLiving area in sqft.
lot_sizenumber · nullableLot size when published.
home_typestring · nullableSINGLE_FAMILY, CONDO, TOWNHOUSE…
statusstring · nullableStatus text (Active, Pending…).
status_typestring · nullableFOR_SALE / FOR_RENT / SOLD.
listing_typestring · nullableFor Sale by Agent/Owner, Foreclosure…
zestimatenumber · nullableZillow price estimate.
rent_zestimatenumber · nullableZillow rent estimate.
days_on_zillownumber · nullableDays listed.
brokerstring · nullableListing brokerage.
latitudenumber · nullableGPS latitude.
longitudenumber · nullableGPS longitude.
imagestring · nullablePhoto URL.
urlstringListing URL.

Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

InputTypeRequiredWhat it does
locationstringyesCity and state, ZIP or neighborhood, e.g. "Austin, TX".
statusstringnoWhich listings to collect. One of: for_sale, for_rent, sold.
max_resultsintegernoHow many listings to deliver at most (1–500). You pay only for delivered listings.

Pricing

Zillow scraper API pricing

$0.001 per delivered listing. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 2,000 listings before you spend anything.

$0.001per delivered listing$1 per 1,000 delivered listings
2,000 listingson the free allowance$2 every month, no card
Zero rowszero chargeblocks, captchas and retries are on us
−30%on volume tiersthe catalog returns your key's price

Pay as you go

$0/mo
  • $2 free credit / month
  • 60 requests / min
  • List unit prices

Starter

$19/mo
  • $15 free credit / month
  • 300 requests / min
  • 10% off unit prices

Scale

$299/mo
  • $250 free credit / month
  • 1,200 requests / min
  • 30% off unit prices

Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.

Integration

One POST, typed rows

Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/scraper/collectors/zillow_search/run.

curl -X POST https://api.quanticdata.io/v1/scraper/collectors/zillow_search/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"location":"Austin, TX","status":"for_sale","max_results":80}'

What people build with the Zillow scraper API

Three shapes of work this endpoint was designed around.

Market analysis

Price per square foot by neighbourhood, computed from rows rather than eyeballed.

Investment screening

Filter for rent Zestimate against asking price across a whole city.

Comparables

Pull recently sold properties around an address to build a comp set.

Zillow scraper API versus rolling your own

The differences that actually cost time when you build this in-house.

DIY scraperThis collector
CoverageOne listing per requestA whole search, paginated
AddressOne string to parse yourselfStreet, city, state and ZIP split
Payload shapeBreaks when Zillow changes itBoth known shapes handled

A closed API and a licensed alternative

Zillow's public API programme has been progressively closed — the GetSearchResults and Zestimate endpoints that powered a generation of side projects are gone, and what remains is partner-oriented. There is no self-serve API returning search results.

The licensed alternative is MLS data, and it is genuinely better where it applies: authoritative, contractually clean, with agent-level fields Zillow never shows. It also requires being a licensed real-estate professional or partnering with one, agreements with hundreds of regional MLSs and a RESO integration. For research, screening and market analysis rather than a brokerage product, public listing data is what is realistically available.

Limits, coverage and the legal bit

Up to 500 listings per run — the deepest cap in the catalogue, because market analysis needs whole markets rather than samples, and a bigger cap also means fewer requests. US only. Addresses arrive pre-split into street, city, state and ZIP, so joins do not depend on an address parser. Throughput is your plan's rate limit rather than anything about the collector: 60 requests/minute on pay-as-you-go, up to 1,200 on the top tier.

Treat both Zestimates as one model's opinion rather than as market truth. Their value in a dataset is as a screening signal — the spread against asking price — not as a valuation.

This is the collector to be most careful with. Collecting publicly visible data is generally lawful in most jurisdictions, and courts have repeatedly declined to treat reading a public page as unauthorised access. Zillow's terms nonetheless explicitly prohibit automated collection and it has historically been willing to enforce them; listing photos and descriptions are copyrighted by the brokerage, and agent names are personal data. Get real advice before building a commercial product on it. None of this is legal advice — get some for your actual use case.

FAQ

Questions we get about the Zillow scraper API.

Something else? Ask us →

Can I collect rentals and sold properties?

Yes — status accepts for_sale, for_rent and sold.

What counts as a location?

What Zillow accepts: a city and state ("Austin, TX"), a ZIP code, or a neighbourhood name.

Is the Zestimate included?

When Zillow publishes it for the listing, yes, along with the rent Zestimate. Both are Zillow's own estimates, not ours.

Is there a free Zillow scraper API?

Every account gets $2 of credit every month with no card, which is about 2,000 delivered listings on this endpoint at $0.001 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.

How much does one run cost?

Multiply the rows you actually receive by $0.001. A run capped at 500 listings — the maximum for this collector — costs $0.5 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.

Can I get sold prices as well as asking prices?

Yes — set status to recently sold. It is the status people forget and usually the most valuable, because it records what buyers actually paid rather than what sellers hoped for.

Why is the run cap so high?

Because real-estate questions are about markets, not samples. Five hundred listings per run means a small market fits in one call, which keeps request counts and rate-limit pressure low for a nightly sweep.

Run the Zillow scraper API now

$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.

Get my free API key
Get my free API key