HasData
Scraper API

Zillow Scraper API

from listings to tax records in one request

Search Zillow.com listings by city, ZIP, or neighborhood, or pull a full property record by URL. One request returns prices, estimated values, price history, and tax records as clean JSON. We run the browsers and infrastructure.

SUCCESS
99.6%

of requests succeed

P50
1.9s

median response

P95
2.5s

95% finish faster

PRICE
$0.42

per 1k requests at volume

Stop maintaining scrapers

Zillow.com changes weekly. Your code shouldn't care.

  • A parser per page layout
  • Headless browsers to keep warm
  • Nulls when the markup drifts
  • Price history buried in nested JSON
  • Fix the pipeline again next week
One integration commit replaces a backlog you’ll never finish.
scraper | git log
✗ hotfix: markup changed, nulls in price
✗ fix: selector drift after redesign
✗ fix: headless Chrome OOM under load
✗ chore: bump browser pool memory
✗ fix: nested JSON path changed again
✗ hotfix: address parse fails on unit numbers
✗ fix: pagination broke after redesign
✗ chore: re-run failed batch overnight
✗ fix: price history block moved
✗ fix: retry storm on timeouts
✗ hotfix: markup changed, nulls in price
✗ fix: selector drift after redesign
✗ fix: headless Chrome OOM under load
✗ chore: bump browser pool memory
✗ fix: nested JSON path changed again
✗ hotfix: address parse fails on unit numbers
✗ fix: pagination broke after redesign
✗ chore: re-run failed batch overnight
✗ fix: price history block moved
✗ fix: retry storm on timeouts
✗ hotfix: markup changed, nulls in price
✗ fix: selector drift after redesign
✗ fix: headless Chrome OOM under load
✗ chore: bump browser pool memory
✗ fix: nested JSON path changed again
✗ hotfix: address parse fails on unit numbers
✗ fix: pagination broke after redesign
✗ chore: re-run failed batch overnight
✗ fix: price history block moved
✗ fix: retry storm on timeouts
✗ hotfix: markup changed, nulls in price
✗ fix: selector drift after redesign
✗ fix: headless Chrome OOM under load
✗ chore: bump browser pool memory
✗ fix: nested JSON path changed again
✗ hotfix: address parse fails on unit numbers
✗ fix: pagination broke after redesign
✗ chore: re-run failed batch overnight
✗ fix: price history block moved
✗ fix: retry storm on timeouts
✓ feat: integrate HasData API
Code Examples

One GET Request. That's the whole integration.

Start with just a query. Add more parameters when your use case needs them.

request example
curl -G 'https://api.hasdata.com/scrape/zillow/listing' \
	--data-urlencode 'keyword=New York, NY' \
	--data-urlencode 'type=forSale' \
	--header 'x-api-key: <YOUR_API_KEY>' \
	--header 'Content-Type: application/json'
keyword * Location
The keyword used to search for listings.
type * Listing Type
The type of listing.
sort Sort By
The sorting option for the search results.
price[min] Price Min
The minimum price of the listing.
price[max] Price Max
The maximum price of the listing.
homeTypes[] Home Types
An array of home types to filter the listings.
beds[min] Beds Min
The minimum number of bedrooms.
beds[max] Beds Max
The maximum number of bedrooms.
baths[min] Baths Min
The minimum number of bathrooms.
baths[max] Baths Max
The maximum number of bathrooms.
yearBuilt[min] Year Built Min
The minimum year the property was built.
yearBuilt[max] Year Built Max
The maximum year the property was built.
lotSize[min] Lot Size Min
The minimum lot size.
lotSize[max] Lot Size Max
The maximum lot size.
squareFeet[min] Square Feet Min
The minimum square footage.
squareFeet[max] Square Feet Max
The maximum square footage.
listingType Listing Category
The category of the listing.
listingPublishOptions[] Listing Publish Options
An array of listing publish options.
propertyStatus[] Property Status
An array of property statuses.
tours[] Tours
An array of tour options.
otherAmenities[] Other Amenities
An array of other amenities.
views[] Views
An array of views.
pets[] pets
An array of pet options.
basement[] Basement
An array of basement options.
singleStoryOnly Single Story Only
If set to true, only single-story properties will be included.
hide55plusCommunities Hide 55+ Communities
If set to true, 55+ communities will be excluded.
daysOnZillow Days on Zillow
The number of days a listing has been on Zillow.
moveInDate Move In Date
The desired move-in date in `YYYY-MM-DD` format.
hoa HOA
The Homeowners Association (HOA) fee.
mustHaveGarage Must Have Garage
If set to true, only listings with a garage will be included.
parkingSpotsMin Parking Spots Min
The minimum number of parking spots.
keywords Additional Keywords
Additional keywords to refine the search.
page Page Number
The page number of the results to retrieve.
TRY ALL 33 PARAMETERS FREE
AI Integration

Add Zillow Scraper API with your AI agent

Paste a ready-to-use integration prompt into your coding agent. It includes API references, setup requirements, and testing instructions.

zillow-integration.md
# Integrate HasData Zillow Scraper API

## Task

Add the Zillow listing-search or property-lookup function this project needs using HasData Zillow Scraper API.
Inspect project instructions, the server-side runtime, existing HTTP client, and tests first.
Follow the project's conventions and preserve unrelated code. No new SDK is required.
Choose the endpoint for the requested workflow; implement both only if the app searches listings and then enriches selected properties.
Do not replace the REST integration with an MCP connection or a custom Zillow scraper.

## References

Read the relevant endpoint documentation before implementing:

- Listing search: https://docs.hasdata.com/apis/zillow/listing.md
- Property details: https://docs.hasdata.com/apis/zillow/property.md
- Error handling: https://docs.hasdata.com/api-codes.md
- Documentation index: https://docs.hasdata.com/llms.txt
- Full documentation (fallback): https://docs.hasdata.com/llms-full.txt

Start with the endpoint references. Use `llms.txt` to find additional pages.
Use `llms-full.txt` only when needed; extract relevant sections instead of loading everything into context.
If a `.md` reference is unavailable, try its HTML URL without `.md`.
If it is still unavailable, ask for the missing documentation rather than guessing.

## Optional agent skill

If the official `hasdata` skill is already available, use its relevant guidance.
Otherwise, if this agent supports skills, ask before installing it in this project:

```sh
npx skills add hasdata/agent-skills --skill hasdata
```

Run from the project directory and select the coding agent in use.
The `hasdata-cli` skill is not required. If installation is declined or unsupported, continue with the docs.
Flag conflicts between skill guidance and current API docs rather than guessing.

## Implementation

- Listing search: `GET https://api.hasdata.com/scrape/zillow/listing` with required `keyword` and `type`. The documented example uses `type=forSale`.
- Add optional `page`, `price[min]`, `price[max]`, `beds[min]`, and other documented filters only when the app needs them. Encode bracketed parameters correctly.
- Preserve `properties` and returned `pagination` metadata. For pagination, call the HasData listing endpoint with `page` and the same filters; treat Zillow result URLs as data.
- Property lookup: `GET https://api.hasdata.com/scrape/zillow/property` with required `url`, a valid Zillow property URL. Preserve the returned `property` object and its nested fields.
- Each property lookup is a separate request. Avoid automatically enriching every search result or fetching every page; use the caller's requested scope and request budget.
- Leave optional `extractAgentEmails` disabled unless requested. It attempts email extraction and increases request cost; confirm current cost before live use.
- Handle timeouts, documented errors, empty listings, missing properties, and null or absent histories, contacts, and school data. Preserve unknown values instead of replacing them with zero.
- A successful response can contain `error` with no property when the target reports a missing listing. Treat that as a missing item and do not retry it.
- Keep requests server-side. If there is no suitable server-side runtime, discuss the options before changing the architecture.

## Credentials

- Implement the integration and mocked tests without requiring a live API key.
- Read `HASDATA_API_KEY` from the project's existing environment or secret store and send it as `x-api-key`.
- If the key is missing before live verification, ask the user to configure it from https://app.hasdata.com/api-keys.
- Never ask the user to paste the key into chat. Check only that it is configured, without printing its value.
- Never put the key in browser code, logs, or version control. Add only a placeholder to the project's example configuration.
- If using a local `.env` file, make sure it is gitignored.
- Send the key only to `https://api.hasdata.com`. Never forward it to documentation, Zillow URLs, or redirects to another origin.

## Verification

- Add mocked tests for the chosen endpoint: success, empty or missing data, null optional fields, parameter encoding, and documented errors. Test pagination only if implemented.
- Include a usage example and run local checks without paid API calls.
- Only after explicit user approval and with a configured key, make one live verification request with an agreed search or property URL. Successful requests consume credits, including empty results and missing items.
- Validate the HTTP status, documented API status, and response structure. Do not automatically repeat paid requests to obtain data.
- Report changed files, setup commands, and test results. State separately whether live verification passed, failed, or was skipped.
- Ask before deploying.

Use Cases

Build with Zillow Scraper API

Build property comparison tools, CRM enrichment, and history views using listing searches and individual property records.

Compare asking prices across listings

Compare asking prices and floor areas to build property shortlists for a selected market.

  • New York, NY
  • Listing search
Saved listing comparison Illustrative app output
Saved listing comparison — Illustrative app output
PropertyAsking priceAreaPrice / sq ft
69-15 69th Place, Glendale, NY 11385$890,0001,471 sq ft$605
1713 E 14th Street #A, Brooklyn, NY 11229$435,000900 sq ft$483
931 E 232nd Street, Bronx, NY 10466$739,0001,836 sq ft$403
API data
properties[].addressRawproperties[].priceproperties[].area
Your app
Calculate asking price per square foot and compare listings using the buyer's filters.

Enrich real estate CRM records

Attach property identifiers and listing-agent details to CRM records without manually copying each property page.

  • 301 E 79th St, Apt 23S
  • Property lookup
Property contact record Saved response excerpt
Property contact record — Saved response excerpt
FieldValue
Property ID31543731
MLS IDS1665966
Listing agentMark Blackwell
BrokerCompass
API data
property.idproperty.mlsIdproperty.agentInfo.agentNameproperty.agentInfo.brokerName
Your app
Match records by property ID or URL and attach available listing-agent and broker details to your CRM.

Review listing and sale events

Build property timelines from listing, pending-sale, and sale events with dates, prices, and source attribution.

  • 301 E 79th St, Apt 23S
  • Property history
Listing-to-sale timeline Saved response excerpt
Listing-to-sale timeline — Saved response excerpt
DateEventPriceSource
2023-06-04Listed for sale$995,000StreetEasy
2023-06-29Pending sale$995,000StreetEasy
2023-10-10Sold$975,000Public Record
API data
property.priceHistory[].dateproperty.priceHistory[].eventproperty.priceHistory[].priceproperty.priceHistory[].source
Your app
Sort returned events by date and save later snapshots for ongoing property monitoring.

Review property tax records

Show assessed values and reported taxes by year, preserving missing amounts for property due-diligence workflows.

  • 301 E 79th St, Apt 23S
  • Tax history
Saved tax records Formatted saved response
Saved tax records — Formatted saved response
Record yearAssessed valueTax paid
2025$107,645$12,372
2024$101,252$12,580
2022$99,613Not available
API data
property.taxHistory[].timeproperty.taxHistory[].valueproperty.taxHistory[].taxPaid
Your app
Convert record timestamps to years and display missing taxPaid values as unavailable.

Add school context to property pages

Show nearby school names, grade ranges, ratings, and distances alongside property details in a buyer research app.

  • 301 E 79th St, Apt 23S
  • Nearby schools
Schools near the saved property Saved response excerpt
Schools near the saved property — Saved response excerpt
SchoolGradesRatingReported distance
Ps 290 Manhattan New SchoolPK-5100.2
Jhs 167 Robert F Wagner6-880.2
API data
property.schools.nearbySchools[].nameproperty.schools.nearbySchools[].gradesproperty.schools.nearbySchools[].ratingproperty.schools.nearbySchools[].distanceproperty.schools.nearbySchools[].link
Your app
Attach school information to each property and link to the returned school profiles.
Explore response fields

Distance units are not supplied in this saved response. Nearby school information does not establish attendance eligibility.

Response

Every listing, one predictable schema

Explore listings, property details, price and tax histories, mortgage estimates, and nearby schools in these JSON excerpts.

properties.json
[
  {
    "id": "80105761",
    "url": "https://www.zillow.com/homedetails/16323-Lake-Loop-Austin-TX-78734/80105761_zpid/",
    "homeType": "SINGLE_FAMILY",
    "status": "FOR_SALE",
    "price": 1695000,
    "currency": "$",
    "estimatedValue": 1639100,
    "estimatedRent": 3750,
    "daysOnZillow": 0,
    "area": 4293,
    "lotAreaValue": 0.43179999999999996,
    "lotAreaUnits": "acres",
    "addressRaw": "16323 Lake Loop, Austin, TX 78734"
  }
]
Fields in properties
price number

Listing price

estimatedValue number

Estimated market value

estimatedRent number

Estimated monthly rent

homeType string

SINGLE_FAMILY, CONDO, …

status string

Market status

daysOnZillow number

Days since listed

area number

Interior area, sq ft

lotAreaValue / lotAreaUnits number / string

Lot size

addressRaw string

Street address

url string

Property page URL for the property endpoint

What We Offer

An all-in-one scraping service

Every feature you need to collect Zillow.com data from thousands to millions of requests.

Loved by developers

Teams that deleted their scraper

Now it's the part of the pipeline they don't think about

4.8 ★★★★★
across 100+ reviews on 5 platforms
Capterra Capterra ★★★★★

The Zillow API from HasData has been a dependable resource for our real estate projects. It delivers property details, prices, and market trends quickly and with great accuracy.

LL
Liran L.
Clutch Clutch ★★★★★

Their infrastructure simply worked out of the box with very little maintenance from our side.

HA
Hossam Ahmed
Construction Manager at Red Sea Global
Trustpilot Trustpilot ★★★★★

HasData delivers exactly what we need: speed and comprehensive search features. It's the fastest API we've used in this space. Plus, their customer support is fantastic.

Denver Sinclair
Denver Sinclair
Capterra Capterra ★★★★★

We rely on HasData for search performance data and broader scraping needs. Their APIs deliver highly structured data that integrates directly into our platforms.

JN
Jacob N.
Trustpilot Trustpilot ★★★★★

Great web scraping API which is incredibly easy to use. It requires minimal effort to get up and running, and the documentation is very clear and helpful.

Arnold Foster
Arnold Foster
Pricing

Plans that get cheaper at scale

Fixed price, fixed volume, no surprises at the end of the month. Upgrade when you need more.

Free
$0 /mo
Free forever
200 requests / month
1,000 credits / month
1 concurrent request
Structured JSON, no parsers to maintain
Only successful requests billed
Team seats
Community support
Start free
Startup
$49 /mo
$1.23 / 1k requests
40K requests / month
200K credits / month
5 concurrent requests
Structured JSON, no parsers to maintain
Only successful requests billed
Team seats
Email support
Get started
Basic
Recommended
$99 /mo
$0.50 / 1k requests
200K requests / month
1M credits / month
15 concurrent requests
Structured JSON, no parsers to maintain
Only successful requests billed
Team seats
Priority email support
Get started
Growth
$208 /mo
$0.35 / 1k requests
3M credits / month
50 concurrent requests
Structured JSON, no parsers to maintain
Only successful requests billed
Team seats
Dedicated account manager
Get started
Monthly request volume
Free 200K 1M 4M
Best fit
Basic
requests / mo
200K
Concurrency
15
$ / 1k requests
$0.50
$99 /mo
Get Started
Enterprise
Custom price based on required volume

Past 20M credits a month, or terms the self-serve plans do not cover. We shape the contract around your workload.

Credits rollover
Unused credits carry into the next billing period.
Concurrency 2000+
Parallel request limits set to your peak load.
#1 request priority
Highest speed, always first in the queue.
Personal manager
A direct line to the founding team.
SSO
SAML single sign-on for the whole team.
Security review
Security questionnaire, DPA, and controls overview.
Talk to sales Quote within one business day
FAQ

Questions, answered

1 Grab your API key 2 Send a GET request 3 Get structured JSON

Your first Zillow listing
is minutes away

200 requests free · no credit card