Zillow ZIP Search Scraper - Listings & Prices
Pricing
from $1.00 / 1,000 listings
Zillow ZIP Search Scraper - Listings & Prices
Scrape Zillow listings for any US ZIP code: homes for sale, for rent or recently sold, with price, Zestimate, Rent Zestimate, beds, baths, area, days on Zillow, price cuts and coordinates. Rental buildings priced from their units. Follows every page, no browser.
Pricing
from $1.00 / 1,000 listings
Rating
0.0
(0)
Developer
Tom Awake
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
What does Zillow ZIP Search Scraper do?
Zillow ZIP Search Scraper extracts every Zillow listing for the US ZIP codes you give it: homes for sale, for rent, or recently sold. You get the price, the Zestimate and Rent Zestimate, beds, baths, living area, lot size, home type, days on Zillow, price cuts, open houses, broker, coordinates and the listing URL. It works like a Zillow API for ZIP-code searches.
- Follows every results page. Zillow shows about 41 listings per page, and the actor pages through until it reaches your limit. Measured: 264 listings over 7 pages for 90210.
- Rental buildings, priced. On Zillow, apartment buildings have no price of their own, only per-unit rents. In a sample of 123 rentals, 73 were buildings. The actor reads their starting rent, rent range, bedroom range and available units. Measured: rental price coverage rose from 42 % to 98 %.
- Filters that keep paging. A minimum price, bedrooms or a home type is applied during collection. Ask for 100 condos and you get 100 condos, not the condos found among the first 100 listings.
- No browser. The actor reads Zillow's own page data, which is fast and light.
What data can you extract from Zillow?
| Data | Fields |
|---|---|
| Price | price, priceText, zestimate, rentZestimate, priceChange, priceReduction |
| Home | beds, baths, livingAreaSqft, lotAreaValue, lotAreaUnit, homeType, homeStatus |
| Market | daysOnZillow, openHouse, brokerName, listingType |
| Location | address, street, city, state, zipcode, latitude, longitude |
| Rental buildings | isBuilding, buildingName, availableUnits, minRent, maxRent, bedsRange, units |
| Links | zpid, detailUrl, imageUrl |
Coverage measured on 3 ZIP codes (90210, 10001, 60614), 123 listings per type:
| Field | For sale | For rent | Sold |
|---|---|---|---|
price | 100 % | 98 % | 100 % |
zestimate | 57 % | 15 % | 92 % |
rentZestimate | 22 % | 28 % | 57 % |
baths | 100 % | 41 % | 97 % |
livingAreaSqft | 84 % | 30 % | 72 % |
daysOnZillow | 98 % | 40 % | 100 % |
priceChange | 18 % | 15 % | — |
latitude, longitude | 100 % | 98 % | 90 % |
Rental buildings carry per-unit data (units, bedsRange, rent range) instead
of a single home's baths and area, which is why those columns are thinner for
rentals.
How to scrape Zillow by ZIP code
- Enter one or more ZIP codes.
- Choose for sale, for rent or recently sold.
- Optionally set filters: price range, minimum bedrooms, home types.
- Click Start, then download JSON, CSV or Excel, or read the results through the API.
How much does it cost to scrape Zillow?
You pay per listing returned: $0.0015 each, that is $1.50 per 1,000. Subscription plans pay less, down to $0.0007 per listing. There is no start fee.
| Job | Listings | Cost |
|---|---|---|
| One ZIP code, first page | ~41 | about $0.06 |
| One ZIP code, 200 listings | 200 | about $0.30 |
| 20 ZIP codes, 200 each | 4,000 | about $6 |
If a run reaches the spending limit you set, the output stops at that limit and never goes past it.
Input example
{"zipCodes": ["90210", "10001", "60614"],"listingType": "forSale","priceMin": 500000,"minBedrooms": 2,"homeTypes": ["CONDO", "TOWNHOUSE"],"maxItemsPerZip": 200}
Output example
{"zpid": "20534770","address": "624 Cole Pl, Beverly Hills, CA 90210","listingType": "forSale","price": 25000000,"zestimate": null,"beds": 6,"baths": 6,"livingAreaSqft": 6586,"homeType": "SINGLE_FAMILY","daysOnZillow": 1,"priceChange": -2998000,"priceReduction": "$2,998,000 (Sep 17)","openHouse": "Sun. 1-4pm","latitude": 34.10872,"longitude": -118.3981,"detailUrl": "https://www.zillow.com/homedetails/624-Cole-Pl-Beverly-Hills-CA-90210/20534770_zpid/"}
Use the Zillow API in Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("DataIO/zillow-zip-search-scraper").call(run_input={"zipCodes": ["90210"], "listingType": "forSale", "maxItemsPerZip": 100,})for home in client.dataset(run["defaultDatasetId"]).iterate_items():print(home["address"], home["price"], home["zestimate"])
It also works from JavaScript, Make, Zapier, n8n, and from AI agents through the Apify MCP server.
Other actors you might like
- Google Hotels Scraper: hotel prices and ratings for any city and dates.
- OpenStreetMap Scraper: local businesses and places by city and category.
- USAspending Scraper: federal contract awards by state and agency.
FAQ
Is it legal to scrape Zillow?
The actor reads listings that Zillow shows publicly, without logging in. Zillow's terms of use restrict automated access. You decide whether and how to use the data, and it is your responsibility to respect those terms and the laws that apply to you.
Why do I need residential proxies?
Zillow blocks datacenter addresses. Measured: HTTP 403 on every attempt from datacenter proxies, and 123 listings with no refusal from US residential proxies. The default setting already uses US residential proxies.
Why is the Zestimate sometimes empty?
Zillow does not publish a Zestimate for every home in search results: in the sample, 57 % of homes for sale and 92 % of recently sold homes had one.
Can I track a ZIP code every day?
Yes. Schedule the actor and compare price, priceChange and daysOnZillow
from one run to the next to catch new listings and price cuts.
Source
Public Zillow search pages. This actor is not affiliated with or endorsed by Zillow.