Zillow Listings Scraper -- No Login Required
Pricing
from $1.60 / 1,000 property extracteds
Zillow Listings Scraper -- No Login Required
Extract Zillow property listings, Zestimates, price labels, and optional detail data. No login or cookies needed. Supports city/ZIP search, Zillow URL mode, and address or ZPID lookup.
Pricing
from $1.60 / 1,000 property extracteds
Rating
0.0
(0)
Developer
Crowd Pull
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Scrape property listings, Zestimates, agent contact info, price history, and tax records from Zillow. No login, no cookies. Search by location, paste a Zillow URL, or look up specific addresses -- one actor does all three.
Smart Scrape: stop re-scraping data you already have
Every other per-result Zillow scraper on the Apify Store charges you the same price whether you're pulling a property for the first time or the tenth. This one doesn't.
Turn on Smart Scrape and the actor keeps a persistent cache of every property it's seen. On the next run, anything already in the cache gets skipped. You pay $0.50/1K for the skip instead of the full extraction price.
Say you scrape Houston every week. Week 1 pulls 2,000 listings. Week 2, 1,700 of those haven't changed. Smart Scrape skips them and only extracts the 300 new ones. That's 300 extractions + 1,700 cache checks instead of 2,000 extractions -- about 60% cheaper.
No other per-result Zillow scraper does this.
Three modes, one actor
Other Zillow scrapers make you use separate actors for searching vs. looking up individual properties. This one combines them:
- Search -- find listings by city, ZIP, or neighborhood with filters applied programmatically
- URL -- paste a Zillow search URL and the actor picks up its filters directly
- Lookup -- fetch full details for specific addresses or ZPIDs
What you get
From search (41 fields per property)
Address, coordinates, price, buyer-facing price label, price explanation, listing flags, Zestimate, rent Zestimate, tax assessed value, beds, baths, sqft, lot size, home type, listing status, days on Zillow, 3D tour/video flags, broker name, primary image, detail URL.
With detail enrichment (optional)
Set includeDetails: true to hit each property's detail page. This adds:
- Agent name, phone, email
- Broker/agency name
- Year built, description, county, MLS ID
- All photo URLs (not just the thumbnail)
- Monthly HOA fee and property tax rate
- Price history -- every listing, sale, and price change with dates and agents
- Tax history -- assessed values and tax payments going back 20+ years
Filters
| Filter | Options |
|---|---|
| Listing type | For Sale, Recently Sold, For Rent, Foreclosures |
| Price range | Min/Max |
| Bedrooms | Minimum |
| Bathrooms | Minimum |
| Square feet | Min/Max |
| Lot size | Min/Max |
| Year built | Min/Max |
| Home types | Houses, Townhomes, Multi-Family, Condos, Land, Apartments, Manufactured |
| Sort by | Newest, Relevance, Price (Low/High), Bedrooms, Bathrooms, Sqft, Lot Size, Zestimate |
| Days on Zillow | 1 day to 36 months |
| Amenities | Pool, AC, Waterfront, Single Story, Garage, Basement, 3D Tour |
Search extraction
With residential proxies, search mode uses Zillow's server-rendered search result page data first: it builds a region-locked searchQueryState URL, reads the __NEXT_DATA__ payload, and paginates with Zillow's own /2_p/, /3_p/ paths. This keeps ZIP and city searches tied to Zillow's canonical region instead of an approximate map box.
If the SRP path is blocked or no proxy is available, the actor falls back to Zillow's async search API. For ZIP searches, fallback rows are post-filtered to the requested ZIP so nearby ZIP codes do not leak into the output.
Zillow caps visible SRP results at about 500 listings. When that cap applies, rows include resultsCapped: true and scrapeWarnings includes zillow_srp_result_cap. Narrow the region or filters for full coverage.
How it compares
| CrowdPull | Other PPE scrapers | |
|---|---|---|
| Smart Scrape dedup | Built-in, $0.50/1K skips | Not available |
| Modes | Search + URL + Lookup | Usually one |
| Memory | 2 GB default, HTTP-first search | 1-4 GB, often browser-based |
| Price + tax history | Included with detail enrichment | Separate actor or missing |
| Filters | Programmatic -- no URL wrangling | Most need a Zillow URL |
| Agent contact info | Name, phone, email | Varies |
Pricing
| Event | Per 1,000 | Notes |
|---|---|---|
| Property extracted | $2.00 (FREE/BRONZE tier) | Volume discounts up to 40% |
| Detail enrichment | $2.50 (FREE tier) | Only charged when enabled and successful |
| Smart Scrape skip | $0.50 | Flat rate for cached properties |
| Actor start | $0.0005 | Once per run, charged by Apify's synthetic start event |
Search + detail together runs $4.50/1K. Using two separate actors elsewhere costs $5.00+/1K.
Input examples
Search
{"mode": "search","location": "Houston, TX 77008","listingType": "for_sale","priceMin": 200000,"priceMax": 500000,"bedsMin": 3,"homeTypes": ["houses", "townhomes"],"maxResults": 100,"includeDetails": true}
URL
{"mode": "url","searchUrls": ["https://www.zillow.com/houston-tx/?searchQueryState=..."],"maxResults": 500}
Lookup
{"mode": "lookup","addresses": ["1246 Omar St, Houston, TX 77008"],"zpids": ["27886690"]}
Sample output
A single record with detail enrichment enabled:
{"zpid": "27783682","address": "1246 Omar St, Houston, TX 77008","streetAddress": "1246 Omar St","city": "Houston","state": "TX","zipcode": "77008","latitude": 29.787777,"longitude": -95.38971,"price": 1050000,"zestimate": 1010800,"rentZestimate": 3163,"taxAssessedValue": 929206,"beds": 4,"baths": 2,"sqft": 2454,"lotSize": 6272,"yearBuilt": 1930,"homeType": "MULTI_FAMILY","homeStatus": "RECENTLY_SOLD","daysOnZillow": 1,"description": "Charming duplex in the Heights with...","detailUrl": "https://www.zillow.com/homedetails/1246-Omar-St-Houston-TX-77008/27783682_zpid/","imgSrc": "https://photos.zillowstatic.com/fp/a25daf77...-p_e.jpg","photoUrls": ["https://photos.zillowstatic.com/fp/...jpg", "..."],"has3DModel": false,"hasVideo": false,"dateSold": "2026-03-10","county": "Harris County","monthlyHoaFee": null,"propertyTaxRate": 1.75,"agentName": "Nathan Mutchler","agentPhone": null,"agentEmail": null,"brokerName": "RJ Williams & Company RE LLC","mlsId": null,"priceHistory": [{ "date": "2026-03-10", "event": "Sold", "price": null, "source": "NTREIS" },{ "date": "2026-01-30", "event": "Pending sale", "price": 1050000, "source": "NTREIS" },{ "date": "2026-01-12", "event": "Listed for sale", "price": 1050000, "source": "NTREIS" }],"taxHistory": [{ "time": 1741737710674, "taxPaid": null, "value": 975432, "valueIncreaseRate": 0.0497 },{ "time": 1710201710674, "taxPaid": 19442.36, "value": 929206, "valueIncreaseRate": -0.0294 }],"scrapedAt": "2026-03-12T00:01:50.803Z"}
Without detail enrichment, fields like yearBuilt, description, photoUrls, agentName, priceHistory, and taxHistory will be null.
Rows with price: 0 or price: null can still include useful Zillow context:
priceDisplay-- buyer-facing label such asEst. $220,900,Auction, orContact for pricepriceQualifier-- normalized reason such asauction_estimate,auction,contact_for_price, orno_published_pricepriceExplanation-- short explanation when Zillow does not publish a normal list pricelistingFlags-- normalized tags such asauction,foreclosure,bank_owned,new_construction,pending,contingent, orno_published_price
Each row also includes scrape-health fields:
scrapeStatus--base,detail_enriched, orpartialdetailStatus--not_requested,enriched, orfaileddetailFailureReason-- structured reason when enrichment fails, such asperimeterx_blockorproxy_upstream_errorresultsCappedandscrapeWarnings-- set when Zillow's result cap or another guardrail affects coveragesource--async_api,srp_next_data, ordetail_lookup
Limitations
- No school or neighborhood data. Competitors like maxcopell's detail scraper extract nearby schools and neighborhoods. We don't.
- Price/tax history depends on a GraphQL hash that Zillow can rotate when they redeploy their frontend. If history stops returning data, the hash may need updating.
- Sold price is sometimes undisclosed. For recently sold properties,
pricemay be 0 or null when Zillow does not publish the sale price in search results. - Datacenter proxies don't work. Zillow's PerimeterX protection blocks them. You need residential proxies for production runs.
- Detail enrichment is intentionally marked partial on anti-bot failures. The actor still returns the base search row and records the failure reason instead of silently dropping the listing.
Tips
- Use residential proxies for production volume. Datacenter proxies get blocked by PerimeterX.
- Keep
includeDetailsoff unless you need detail-page-only fields. Search data comes from Zillow's SRP__NEXT_DATA__; detail pages are more likely to trigger anti-bot checks. - Start with
maxConcurrency: 1. Bump to 2-3 if you're not seeing blocks. More concurrency means faster enrichment but higher block risk. - Turn on Smart Scrape for any recurring job. The savings add up fast.
- URL mode is handy when you've already set up filters on Zillow's site. Just copy the URL.