Zillow Detail Scraper
Pricing
from $2.50 / 1,000 results
Zillow Detail Scraper
Scrape full property details from Zillow Home Detail Pages (HDP) by URL or zpid. Extracts 99 to 141 fields per listing including address, price, bedrooms, bathrooms, lat/lon, schools, price history, tax history, photos, broker info, and RESO facts.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
Crikit
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
What this Zillow Detail Scraper does
This Zillow Detail Scraper takes property detail URLs (or zpids) and returns the full property record for each one. For each input URL, the actor fetches Zillow's Home Detail Page (HDP), parses the server-rendered JSON payload, and emits a single record per listing with up to 141 fields. No login, no cookies, no API key.
Use it after the Zillow Search Scraper to enrich discovered zpids into full property records, or call it on its own with a list of URLs.
What you get per property
The actor extracts the property record Zillow embeds in each detail page. Typical fields include:
- Identity:
zpid,hdpUrl,url - Address:
streetAddress,city,state,zipcode,neighborhood,county,countyFIPS,address,latitude,longitude,country - Listing:
homeStatus,homeType,daysOnZillow,timeOnZillow,datePostedString,pageViewCount,favoriteCount,contingentListingType,comingSoonOnMarketDate - Physical:
bedrooms,bathrooms,livingArea,livingAreaUnits,lotSize,lotAreaValue,yearBuilt,propertyTypeDimension - Pricing:
price,currency,zestimate,rentZestimate,taxAssessedValue,taxAssessedYear,monthlyHoaFee,propertyTaxRate,annualHomeownersInsurance,mortgageRates - History:
priceHistory[],taxHistory[] - Media:
responsivePhotos[](multi-resolution srcset),photos[](legacy URLs),hasVRModel,hasPublicVideo,interactiveFloorPlanUrl - Schools:
schools[](up to 3: elementary, middle, high with rating + distance + grades) - Broker / agent:
brokerageName,brokerId,listedBy,listingProvider,attributionInfo - RESO compliance:
resoFacts(21 keys on stripped showcase listings, 180+ keys on regular listings) - Content:
description,whatILove,homeInsights - Flags:
isZillowOwned,isFeatured,isShowcaseListing,isNonOwnerOccupied,isRecentStatusChange - Provenance (added by the actor):
addressOrUrlFromInput,url
Every field that Zillow returns flows through to your dataset, so when Zillow adds a new attribute, your dataset gets it on the next run without a schema change.
Why use this Zillow Detail Scraper
- 30% cheaper than the leading competitor on Apify Store ($0.0025 per property on FREE tier vs the leader's $0.0036). Apify tier discounts apply automatically.
- No cookies, no logins. You never paste credentials. Works from a clean residential session.
- Crawlee + Cheerio + Apify residential proxy, so it survives Zillow's PerimeterX anti-bot stack without spinning up a browser. About 5x faster and 5x cheaper than browser-based scrapers.
- Pairs with Zillow Search Scraper. Use search to discover zpids, then enrich each with this detail scraper.
Input
| Field | Type | Description |
|---|---|---|
startUrls | array of {url} | Zillow detail URLs. Supports /homedetails/.../<zpid>_zpid/ plus /apartments/, /community/, /b/ variants. |
zpids | array of strings | Convenience input: pass zpids directly; each becomes https://www.zillow.com/homedetails/<zpid>_zpid/. |
maxItems | integer | Hard cap on the number of properties returned. 0 = unlimited. |
proxyConfiguration | object | Apify proxy settings. Residential US strongly recommended. |
You must supply at least one of startUrls or zpids.
Sample input
{"startUrls": [{ "url": "https://www.zillow.com/homedetails/3204-Lyons-Rd-1-Austin-TX-78702/461831807_zpid/" }],"zpids": ["29348440", "29472346"],"maxItems": 100,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Sample output (truncated)
{"zpid": 461831807,"hdpUrl": "/homedetails/3204-Lyons-Rd-1-Austin-TX-78702/461831807_zpid/","url": "https://www.zillow.com/homedetails/3204-Lyons-Rd-1-Austin-TX-78702/461831807_zpid/","streetAddress": "3204 Lyons Rd #1","city": "Austin","state": "TX","zipcode": "78702","latitude": 30.2502,"longitude": -97.7012,"price": 720000,"homeStatus": "FOR_SALE","homeType": "TOWNHOUSE","bedrooms": 3,"bathrooms": 3,"livingArea": 1700,"yearBuilt": 2026,"daysOnZillow": 7,"pageViewCount": 318,"favoriteCount": 12,"priceHistory": [{ "date": "2026-05-08", "price": 720000, "event": "Listed for sale" }],"schools": [{ "name": "Sims Elementary", "rating": 6, "grades": "PK-5", "type": "Public", "distance": 0.3 }, ...],"responsivePhotos": [{ "mixedSources": { "jpeg": [...], "webp": [...] } }, ...],"description": "Brand new construction with rooftop deck...","brokerageName": "Compass RE Texas, LLC","addressOrUrlFromInput": "https://www.zillow.com/homedetails/3204-Lyons-Rd-1-Austin-TX-78702/461831807_zpid/"}
Field coverage by listing type (measured, 2026-05)
Coverage depends on whether the property is a regular Zillow Home Detail Page or a "Showcase" (premium upgraded) listing. We ran an extensive QA pass across 7 cities and 65 properties; here are the measured numbers.
| Listing type | Fields per record | Real-world frequency in tested markets | Notes |
|---|---|---|---|
| Regular FOR_SALE / SOLD / FOR_RENT HDP | 130 to 141 | ~40% | Full record including priceHistory, taxHistory, schools, yearBuilt, listedBy, photos[] (27+ entries), full resoFacts (180+ keys). |
| Showcase (premium upgraded) | 97 to 99 | ~60% in tested markets | Stripped initial cache. Missing: priceHistory, taxHistory, schools, yearBuilt, listedBy, legacy photos[]. Still has: responsivePhotos (30+ entries), description (87% coverage), resoFacts (21-key subset), bedrooms/bathrooms/price/address/latitude/longitude/homeStatus (100% coverage). |
Apartment community / building (/apartments/, /b/, /community/) | warning row only | varies | The actor emits {warning: "URL type needs the search scraper"} rather than failing. |
Be aware that approximately 60% of active listings in major US markets surface as showcase variants. This is a real and significant coverage gap on premium-listing-heavy markets (Manhattan, Aspen, San Francisco). If you need the missing fields (price history, schools, year built) on showcase listings specifically, this v1 is not a complete substitute for the leading competitor at $0.0036.
The actor attempts a best-effort GraphQL enrichment call for showcase listings to recover the stripped fields. The follow-up call is currently blocked by PerimeterX without a JA3-bound _px3 cookie; it will be hardened in v2 via a stealth-browser bootstrap.
If you need the full record for every listing regardless of showcase status, use the Zillow Search Scraper on the listing's region. Search-page results include all 61 listing-card fields regardless of premium status.
Pricing
Pay-per-result, $0.0025 per property on the FREE tier. Apify's tier discounts apply automatically (BRONZE/SILVER/GOLD/PLATINUM/DIAMOND).
Worked examples (FREE tier):
- 100 properties: $0.25
- 1,000 properties: $2.50
- 10,000 properties: $25.00
Compare to the leading Zillow detail scraper on Apify Store at $0.0036 per property on FREE tier (about 44% more).
Limits and edge cases
- PerimeterX anti-bot. Always run on Apify residential US proxy. Datacenter IPs get flagged within a few requests.
- Showcase variant. Premium upgraded listings return a stripped 97-99 field cache. The actor's enrichment call recovers some fields when PX allows; otherwise the record ships with the SSR-only data.
- Apartment / building / community URLs. The actor accepts them but does not (yet) parse their distinct data shapes. Records ship with a
warningfield. - Synthetic zpids. Some apartment-building listings on Zillow use a synthetic zpid (e.g. a lat-lng composite). Treat zpids as opaque strings when deduping.
- Live data. Zillow updates listing fields continuously. Running the same input twice may show price changes, status changes, or new photo counts.
Technical details
- Stack: Node.js 20 + Crawlee
CheerioCrawler+got-scrapingwith Chrome header generator. No browser, no JavaScript execution. - Memory footprint: 1024 MB recommended.
- Throughput: about 30,000 properties per hour at default concurrency on Apify residential proxy.
FAQ
Does this Zillow Detail Scraper need an API key? No. Zillow's detail pages are publicly accessible; the actor reads the same data anyone can see in a browser.
Does it need my Zillow login or cookies? No. This scraper never asks for user credentials.
What is the difference between this and Cirkit/zillow-search-scraper? The search scraper finds listings by location and returns 61 listing-card fields per result (lightweight). This detail scraper takes a specific property URL or zpid and returns up to 141 fields including price history, schools, RESO facts.
Can I run it via the Apify API or schedule it? Yes, like any Apify actor. Use the standard Run actor API or attach a schedule in the Apify Console.
Changelog
- 0.1.5 (2026-05-14): post-QA hardening. Fixed
maxItemsconcurrency race (claimed-count pattern); pinned all 4 dependencies to exact versions to immunize against upstream breakage; updated README with measured per-bucket field coverage from extensive QA (65 records across 7 cities). - 0.1 (2026-05-14): initial release. HDP HTML extraction returns up to 141 fields per regular listing. Showcase (premium) listings return ~97-99 fields with the GraphQL enrichment attempt as a best-effort path. Building / apartment / community URLs accepted with a warning record.