Zillow Scraper
Pricing
Pay per usage
Zillow Scraper
Scrape Zillow real-estate listings as clean JSON — search homes for sale, for rent and recently sold by location, map bounds or a Zillow search URL. Get price, beds, baths, sqft, lot size, address, coordinates, Zestimate, photos, days-on-market and broker. No proxies, no CAPTCHAs, no login.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
ReefAPI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Zillow Scraper — Search Homes for Sale, Rent & Sold as JSON
📮 Need help, hit a problem, want a new feature, or a field that's missing from the output? Email support@reefapi.com or open an issue on the Issues tab of this Actor — we reply fast and take feature requests seriously.
Scrape Zillow real-estate listings as clean, structured JSON. Search homes for sale, for rent and recently sold by location, map bounds or a Zillow search URL, with full filters — price, beds, baths, sqft, lot size, home type, year built, HOA, days-on-market and keywords. Every listing comes back with price, Zestimate, beds/baths/sqft, address, coordinates, broker and photos. No proxies, no CAPTCHAs, no login, no daily call limits — just send a location and get the data.
What is the Zillow Scraper?
The Zillow Scraper is a fast, no-code Zillow data API that turns any Zillow search into a downloadable dataset. Instead of copy-pasting listings by hand or fighting bot walls, you send a location (or a Zillow URL, or a map bounding box) and get back every matching property as flat JSON, CSV or Excel. It's the easiest way to scrape Zillow listings for real-estate lead lists, market research, comps and property-tech products — whether you want to search Zillow homes for sale, pull for-rent inventory, or collect recently sold history. Point it at a city, ZIP, neighborhood or county and it handles paging, filters and the ~860-result cap for you.
What can this Zillow Scraper do?
- 🔎 Search listings — for-sale / for-rent / sold homes in any city, ZIP, neighborhood or county, with 15+ filters.
- 🔗 Search by Zillow URL — paste a Zillow results URL (
?searchQueryState=...) and replay it exactly. - 🗺️ Search by map bounds — pass a lat/long bounding box for precise map-area coverage.
- 🏷️ Recently sold — sold listings with sale price (where the state discloses it) and sold date.
- 💬 Location autocomplete — turn partial text (
"austi") into Zillow regions. - 🔓 Bypass the ~860 cap — set
fetch_all: trueto subdivide dense areas and return every listing. - 💵 Rich fields per home — list price, Zestimate, rent Zestimate, tax-assessed value, beds/baths/sqft, lot size, days-on-market, broker and photos.
🔓 Beyond the ~860-result cap
Zillow caps a normal search at roughly 860 results. Set fetch_all: true and the scraper subdivides dense areas to return every listing in the region — ideal for full-market pulls, investor lead lists and complete inventory snapshots. It's slower but complete; combine it with Max results to control run size.
What data can I extract?
Each listing is returned as a flat record. Key fields (real output shown below):
| Field | What it is |
|---|---|
zpid | Zillow property id (stable key for a home) |
url | Direct link to the Zillow listing page |
list_price_usd / price_display | Numeric list price + formatted string ($750,000) |
status / status_text | FOR_SALE / FOR_RENT / SOLD + human status (Active) |
property_type | SINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, LAND, … |
beds / baths | Bedroom and bathroom counts |
sqft / lot_sqft | Living area and lot size in square feet |
zestimate_usd | Zillow's estimated market value (when published) |
rent_zestimate_usd | Estimated monthly rent (when published) |
tax_assessed_value_usd | Tax-assessed value |
days_on_market | Days the listing has been live |
address_line / address | Street line + full formatted address |
city / state_code / postal_code | Location breakdown |
latitude / longitude | Exact coordinates for mapping |
broker_name | Listing brokerage |
is_showcase | Whether it's a Zillow Showcase listing |
photos | Array of listing photo URLs |
Field availability can vary — Zillow doesn't publish a Zestimate, rent Zestimate or tax value for every home, and can change its page structure at any time. Core fields (price, address, beds/baths/sqft, coordinates, URL) are always present.
How do I scrape Zillow?
- Open the Actor and go to the Input tab.
- Pick an Action (Search listings is the default).
- Type a Location (e.g.
Austin, TX), choose Listing status, and add any filters (price, beds, baths, home type, days-on-market, keywords). - Optionally tick Fetch ALL listings to go beyond the ~860 cap, and set Max results.
- Click Start. When the run finishes, download the results as JSON, CSV, Excel or HTML from the Dataset tab, or pull them via the Apify API.
Input
{"action": "search","location": "Austin, TX","status": "for_sale","price_max": 700000,"beds_min": 3,"max_results": 200}
location— city / ZIP / neighborhood / county (search & sold).status—for_sale·for_rent·sold.fetch_all— bypass the ~860 cap (slower, complete).price_min/price_max,beds_min,baths_min,home_type,days_on_max,keywords.url— for Search by Zillow URL;map_bounds—{north, south, east, west}for Search by map bounds.query— for Location autocomplete.params— advanced JSON:sqft_min/max,lot_min/max,year_built_min/max,max_hoa,max_pages, …
Output
Real response (trimmed to one representative listing):
{"zpid": 337141915,"source": "zillow","url": "https://www.zillow.com/homedetails/4907-Watusi-Bnd-2-Austin-TX-78732/337141915_zpid/","list_price_usd": 750000.0,"price_display": "$750,000","status": "FOR_SALE","status_text": "Active","property_type": "SINGLE_FAMILY","beds": 4.0,"baths": 3.0,"sqft": 2586.0,"lot_sqft": 24668.03,"zestimate_usd": null,"rent_zestimate_usd": null,"tax_assessed_value_usd": 732733.0,"days_on_market": 8,"address_line": "4907 Watusi Bnd #2","city": "Austin","state_code": "TX","postal_code": "78732","address": "4907 Watusi Bnd #2, Austin, TX 78732","latitude": 30.388262,"longitude": -97.8774,"broker_name": "Keller Williams Realty","is_showcase": true,"photos": ["https://photos.zillowstatic.com/fp/a8b0cc525925715ca3b3eac45a19ca60-p_e.jpg"]}
Use cases
- Real-estate lead lists — build buyer / seller / investor pipelines by area and filters.
- Market analysis & comps — pull for-sale + sold inventory to model pricing per ZIP.
- Property tech & portals — power search, map and listing features with fresh data.
- Investment screening — filter by price, Zestimate, rent Zestimate and days-on-market.
- Rental market research — track for-rent inventory, rent Zestimates and availability.
- Full-market snapshots — use
fetch_allto capture every listing in a metro for a point-in-time dataset.
FAQ
Is there an official Zillow API? Zillow retired most of its public listing APIs, and the remaining partner programs are limited and gated. This Actor is the practical way to get Zillow search data as structured JSON without a partnership.
Why scrape Zillow? Zillow is the largest US real-estate marketplace. Its listing, price, Zestimate and sold data powers lead generation, comps, valuation models, market dashboards and property-tech products — none of which you can get in bulk through the front end.
How much does it cost? This Actor runs on Apify's pay-as-you-go model — you're billed for what you use (benchmarked to be competitive with other Zillow scrapers). See the Pricing section on this Actor's page for the current rate.
Can I integrate it with my app or spreadsheet? Yes. Run it from the Apify API or the official Python / Node.js clients, schedule it, and connect the output to Make, Zapier, n8n, Google Sheets, Slack, webhooks or your database via Apify integrations.
Is it legal to scrape Zillow? Scraping publicly available data is generally lawful, and this Actor only reads public listing pages (no login, no personal accounts). Listing data can include agent/broker names — treat any personal data responsibly and in line with GDPR/CCPA. This is not legal advice; if in doubt, consult a lawyer.
Unofficial — not affiliated with Zillow. Public data only.