Zillow ZIP Code Scraper – Prices & Inventory
Pricing
$2.00 / 1,000 listings
Zillow ZIP Code Scraper – Prices & Inventory
Scrape Zillow property listings from one or more US ZIP codes. Export asking prices, price changes, days on Zillow, beds, baths, square footage, broker, coordinates, and inventory counts. Simple ZIP input, predictable limits, and clean price and location views.
Pricing
$2.00 / 1,000 listings
Rating
5.0
(1)
Developer
Luke Hunter
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
Zillow ZIP Code Scraper — Prices, Listings & Inventory
Scrape Zillow listings by ZIP code and turn Zillow search results into clean, structured property data. Enter one or more US ZIP codes and get asking prices, price changes, days on Zillow, beds, baths, square footage, brokerage, coordinates, listing URLs, and Zillow's own reported inventory count.
Built for people who want a simple Zillow ZIP scraper rather than a large configuration screen: choose ZIP codes, set a hard result limit, and run.
Try the Zillow ZIP Code Scraper on Apify
Popular ready-to-run examples
Why use this Zillow ZIP scraper?
| Need | What this Actor gives you |
|---|---|
| Zillow listings by ZIP code | Enter 1–20 ZIP codes or paste Zillow for-sale ZIP URLs |
| Price research | Numeric asking price plus Zillow's displayed price text |
| Price-cut tracking | priceChange, datePriceChanged, and daysOnZillow |
| Inventory research | Zillow's own zipTotalResultCount on every row |
| Property comparison | Beds, baths, living area, lot size, home type, tax assessment |
| Mapping | Latitude, longitude, image URL, and listing URL |
| Predictable spend | maxItems is a hard cap on delivered listings and therefore on cost |
| Clean exports | Flat rows ready for CSV, Excel, JSON, databases, or the Apify API |
The Actor is intentionally focused on for-sale ZIP-code research. That makes the input simple and keeps the output useful for repeatable market analysis.
What can you do with Zillow listing data?
Compare property prices across ZIP codes
Run several ZIP codes together and compare asking prices, beds, baths, square footage, home type, brokerages, and inventory. The zipCode field stays attached to every row, so side-by-side analysis is straightforward.
Track Zillow price cuts
Use priceChange to find reduced listings and datePriceChanged to see when the latest change happened. Negative values in priceChange are price cuts.
Monitor days on market and inventory
Combine daysOnZillow with zipTotalResultCount to watch how a ZIP's active inventory and listing age change over time.
Build property-research datasets
Schedule repeat runs in Apify and export each run to CSV, Excel, JSON, a database, or another workflow through the Apify API and integrations.
Get a per-ZIP market snapshot for free
Every run also writes a ZIP market snapshot — one summary row per ZIP with median asking price, median price per square foot, median days on market, and the price-cut count/rate — built from the same listings you already scraped. It lands in its own dataset (open the marketSnapshots view under the run's Storage tab, or fetch it via the Apify API) and does not count toward your billed listings.
How to scrape Zillow by ZIP code
- Enter one or more five-digit US ZIP codes, for example
90210or10001. - Set Maximum listings. This is your hard result and cost cap.
- Click Start.
- Open the Listings, Prices only, Locations, or All fields dataset view.
- Export the data as CSV, Excel, JSON, or access it programmatically.
You can also paste a Zillow for-sale URL such as:
https://www.zillow.com/homes/for_sale/90210/
The Actor extracts the ZIP code automatically.
Input
{"zipCodes": ["90210", "10001"],"maxItems": 100,"maxPagesPerZip": 20}
| Field | Type | Default | Description |
|---|---|---|---|
zipCodes | string[] | required | 1–20 US ZIP codes. Zillow for-sale ZIP URLs are also accepted. |
maxItems | integer | 100 | 1–5000. Hard cap on listings delivered across the whole run. |
maxPagesPerZip | integer | 20 | 1–20. Safety cap on Zillow search-result pages fetched per ZIP. |
For most users, the only settings that matter are ZIP codes and Maximum listings.
Zillow data fields
| Category | Fields |
|---|---|
| Identity | zpid, zipCode |
| Address | address, addressStreet, addressCity, addressState, addressZipcode |
| Price | price, priceDisplay, currencySymbol |
| Property | beds, baths, area, lotAreaValue, lotAreaUnit, homeType, statusType |
| Market signals | daysOnZillow, priceChange, datePriceChanged, taxAssessedValue |
| Listing | brokerName, imageUrl, detailUrl, isZillowOwned |
| Location | latitude, longitude |
| Inventory | zipTotalResultCount |
| Freshness | scrapedAt |
Missing values are returned as null. The Actor does not invent or infer missing listing data.
Zillow output example
{"zpid": "20533678","zipCode": "90210","address": "3084 Franklin Canyon Dr, Beverly Hills, CA 90210","price": 3895000,"priceDisplay": "$3,895,000","beds": 6,"baths": 5,"area": 4073,"homeType": "SINGLE_FAMILY","daysOnZillow": 125,"priceChange": -300000,"taxAssessedValue": 4052357,"brokerName": "Keller Williams Beverly Hills","latitude": 34.128544,"longitude": -118.40726,"detailUrl": "https://www.zillow.com/homedetails/3084-Franklin-Canyon-Dr-Beverly-Hills-CA-90210/20533678_zpid/","zipTotalResultCount": 263,"scrapedAt": "2026-09-21T00:00:00.000Z"}
Use it as a Zillow listings API
The Actor can be called from any application through the Apify API. No separate Zillow API key is required.
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("lukehunter/zillow-zip-scraper").call(run_input={"zipCodes": ["90210", "10001"],"maxItems": 100,"maxPagesPerZip": 20,})for listing in client.dataset(run["defaultDatasetId"]).iterate_items():print(listing["zipCode"], listing["address"], listing["price"])
Use Apify schedules for recurring market snapshots, and webhooks or integrations to send completed datasets into the rest of your workflow.
Pricing and cost control
This Actor uses pay per delivered listing pricing.
Current configured rate: $0.002 per listing delivered. Check the Apify Pricing tab for the latest published rate.
| Listings delivered | Cost at $0.002/listing |
|---|---|
| 100 | $0.20 |
| 1,000 | $2.00 |
| 5,000 | $10.00 |
There is no charge for merely starting a run. maxItems gives you a clear upper bound on the number of billable listings.
Listings are de-duplicated by zpid within a run.
Reliability and data quality
The Actor is designed to fail visibly rather than quietly return misleading data.
- If Zillow blocks the request before any listings are found, the run fails instead of returning an apparently successful empty dataset.
- Built-in quality checks detect malformed or degraded Zillow responses and reject pages that no longer look like normal listing data instead of quietly treating them as valid.
- Individual listings can still have fields that Zillow does not provide. Missing values are returned as
nullrather than guessed. zipTotalResultCountgives you Zillow's own reported search total so you can compare it with the number of rows your limits allowed the run to deliver.- Missing values stay
null; they are not guessed. - Duplicate
zpidvalues are removed within the run.
Important limitations
- For-sale ZIP searches only. This Actor does not currently scrape rentals, sold listings, city searches, school districts, or custom map areas.
- No Zestimate field. It reads the fields available from the ZIP search results used by this Actor and does not open every property detail page.
- Up to 20 ZIP codes per run. Split larger jobs across multiple runs.
maxItemsandmaxPagesPerZipcan intentionally stop a run before every Zillow result is collected.- Zillow inventory and prices change continuously. Every row is a point-in-time observation identified by
scrapedAt. - Individual agent names, phone numbers, and email addresses are not collected.
brokerNameis the brokerage company when Zillow publishes it. - The Actor does not use CAPTCHA bypass, proxy rotation, credential capture, or impersonation.
- This is an independent tool and is not affiliated with, endorsed by, or connected to Zillow Group, Inc. Zillow is a trademark of its owner. You are responsible for using the data in accordance with applicable terms and laws.
FAQ
Can I scrape Zillow by ZIP code?
Yes. Enter one or more five-digit US ZIP codes and the Actor returns the for-sale listings Zillow publishes for those ZIP searches.
Can I export Zillow listings to CSV or Excel?
Yes. Every run writes a standard Apify dataset that can be downloaded as CSV, Excel, JSON, and other supported formats.
Can I compare Zillow prices across multiple ZIP codes?
Yes. Put multiple ZIP codes in one run. Each result includes its source zipCode, making it easy to group or compare markets.
Can I track Zillow price reductions?
Yes. priceChange contains Zillow's most recent signed price change when available. Negative values indicate a reduction.
Can I schedule Zillow data collection?
Yes. Use Apify schedules to run the same input automatically, then compare datasets over time.
Does this scrape Zillow rentals or sold properties?
No. This Actor is deliberately focused on for-sale listings by ZIP code.
Do I need a Zillow API key or account?
No separate Zillow API key or Zillow login is required.
How do I control the cost?
Set maxItems. It is a hard cap on the number of listings delivered across the run and therefore on billable results.