Zillow Real Estate Scraper — Homes, Rentals & Sold Properties
Pricing
Pay per usage
Zillow Real Estate Scraper — Homes, Rentals & Sold Properties
Scrape Zillow real estate listings for any US location. Extract property prices, Zestimates, square footage, bedrooms, bathrooms, lot size, year built, property type, listing agent, photos, and more. Supports for-sale, rental, and recently-sold listings with price and bedroom filters. Parse __NEXT_D
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Ricardo Akiyoshi
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 hours ago
Last modified
Categories
Share
Zillow Real Estate Scraper
Scrape Zillow listings for any US location. Extract property prices, Zestimates, square footage, bedrooms, bathrooms, lot size, year built, property type, listing agent, broker, photos, and more.
Supports homes for sale, rentals, and recently sold properties. Filter by price range, bedrooms, and bathrooms.
Features
- Three listing types -- homes for sale, rentals, and recently sold properties
- Any US location -- search by city, zip code, neighborhood, or paste any Zillow search URL
- Deep data extraction -- prices, Zestimates, beds/baths, sqft, lot size, year built, HOA fees, tax assessments
- Three extraction strategies -- parses
__NEXT_DATA__(Next.js),hdpApolloPreloadedData(GraphQL cache), and CSS selectors as fallback - Detail page scraping -- optionally visit each listing for full descriptions, all photos, price history, tax history, and school info
- Agent and broker info -- listing agent name, brokerage, phone number, MLS ID
- Smart pagination -- automatically follows Zillow's multi-page results
- Deduplication -- tracks seen ZPIDs and addresses to avoid duplicate listings
- Anti-bot handling -- 8 rotating User-Agent strings with full realistic browser headers, CAPTCHA detection, graceful shutdown
- Price and bedroom filters -- narrow searches before scraping to reduce page loads
- Proxy support -- residential proxies strongly recommended for Zillow
- Pay-per-event -- charged per listing scraped
Use Cases
Real Estate Investment Analysis
Scrape listings across multiple cities to compare property values, identify undervalued markets, and track price trends over time. Cross-reference listing prices with Zestimates to find deals.
Rental Market Research
Monitor rental listings to analyze rent prices by neighborhood, bedroom count, and property type. Track seasonal fluctuations and identify emerging rental markets.
Property Valuation
Collect recently sold properties to build comparable sales (comps) datasets for appraisals. Include tax history, price history, and property details for thorough analysis.
Lead Generation
Extract broker and agent contact information alongside property data for real estate marketing, outreach, and CRM enrichment.
Market Analytics
Build datasets of property listings with geolocation data for mapping, heatmaps, and spatial analysis of real estate markets.
Academic Research
Collect structured housing data for economics research, urban planning studies, and demographic analysis.
Input
| Field | Type | Default | Description |
|---|---|---|---|
searchUrl | String | (empty) | Full Zillow search URL (overrides location/listingType) |
location | String | los-angeles-ca | City, zip, or neighborhood slug |
listingType | String | for_sale | for_sale, for_rent, or sold |
maxResults | Integer | 25 | Maximum listings to scrape (0 = unlimited) |
minPrice | Integer | 0 | Minimum price filter |
maxPrice | Integer | 0 | Maximum price filter |
minBeds | Integer | 0 | Minimum bedrooms |
minBaths | Integer | 0 | Minimum bathrooms |
scrapeDetails | Boolean | false | Visit detail pages for full data |
maxConcurrency | Integer | 2 | Parallel requests (keep low for Zillow) |
proxyConfiguration | Object | (none) | Apify proxy settings (residential recommended) |
Location Format
Use Zillow's URL-friendly slug format:
| Location | Slug |
|---|---|
| Los Angeles, CA | los-angeles-ca |
| New York, NY | new-york-ny |
| Miami, FL | miami-fl |
| Chicago, IL | chicago-il |
| San Francisco, CA | san-francisco-ca |
| Austin, TX | austin-tx |
| Seattle, WA | seattle-wa |
| Denver, CO | denver-co |
| Manhattan, New York | manhattan-new-york-ny |
| Beverly Hills, CA | beverly-hills-ca |
| ZIP code 90210 | 90210 |
| ZIP code 10001 | 10001 |
Input Examples
Homes for sale in Los Angeles under $1M
{"location": "los-angeles-ca","listingType": "for_sale","maxResults": 100,"maxPrice": 1000000}
Rentals in Manhattan, 2+ bedrooms
{"location": "manhattan-new-york-ny","listingType": "for_rent","maxResults": 50,"minBeds": 2}
Recently sold homes in ZIP 90210
{"location": "90210","listingType": "sold","maxResults": 200,"scrapeDetails": true}
Custom Zillow search URL
{"searchUrl": "https://www.zillow.com/san-francisco-ca/houses/?searchQueryState=%7B%22pagination%22%3A%7B%7D%7D","maxResults": 50}
Investment analysis: cheap homes in Detroit with details
{"location": "detroit-mi","listingType": "for_sale","maxResults": 300,"maxPrice": 100000,"minBeds": 3,"scrapeDetails": true,"maxConcurrency": 1,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output
Each listing is saved to the default dataset. Output varies depending on whether detail page scraping is enabled.
Standard output (search page only)
{"zpid": "20485713","address": "123 Main St, Los Angeles, CA 90001","streetAddress": "123 Main St","city": "Los Angeles","state": "CA","zipcode": "90001","price": 850000,"priceFormatted": "$850,000","currency": "USD","zestimate": 875000,"zestimateFormatted": "$875,000","rentZestimate": 3200,"bedrooms": 3,"bathrooms": 2,"sqft": 1650,"lotSize": "5,500 sqft","yearBuilt": 1972,"propertyType": "SINGLE_FAMILY","listingStatus": "FOR_SALE","daysOnZillow": 14,"listingUrl": "https://www.zillow.com/homedetails/123-Main-St-Los-Angeles-CA-90001/20485713_zpid/","imageUrl": "https://photos.zillowstatic.com/fp/abc123-p_e.jpg","allImages": ["https://photos.zillowstatic.com/fp/abc123-p_e.jpg","https://photos.zillowstatic.com/fp/def456-p_e.jpg"],"latitude": 34.0522,"longitude": -118.2437,"listingAgent": "Jane Smith","broker": "Keller Williams Realty","brokerPhone": "(310) 555-0123","mlsId": "SR26012345","taxAssessedValue": 720000,"annualHomeownerInsurance": 1800,"monthlyHoaFee": null,"description": null,"scrapedAt": "2026-03-01T12:00:00.000Z","source": "zillow","searchPage": 1}
Extended output (with detail page scraping)
When scrapeDetails is enabled, listings also include:
{"description": "Beautifully renovated 3-bedroom home in prime Los Angeles location. Features updated kitchen with granite countertops, hardwood floors throughout, spacious backyard...","priceHistory": [{ "date": "2026-01-15", "price": 870000, "event": "Listed for sale" },{ "date": "2026-02-01", "price": 850000, "event": "Price change" }],"taxHistory": [{ "year": 2025, "taxPaid": 8640, "value": 720000 },{ "year": 2024, "taxPaid": 8200, "value": 685000 }],"schools": [{ "name": "Lincoln Elementary", "rating": 7, "distance": "0.3 mi", "type": "public", "grades": "K-5" },{ "name": "Roosevelt Middle", "rating": 6, "distance": "0.8 mi", "type": "public", "grades": "6-8" }],"detailPageScraped": true}
Performance Tips
- Always use residential proxies -- Zillow is one of the most aggressive anti-bot sites. Datacenter IPs are almost always blocked. Use
RESIDENTIALproxy group. - Start with a small test -- run with
maxResults: 5first to verify your location and proxy setup work before scaling. - Keep concurrency low --
maxConcurrency: 1-2is safest. Zillow rate-limits aggressively. - Disable details for speed -- set
scrapeDetails: falsefor 5-10x faster scraping when you only need basic listing data. - Use location filters -- narrow by price and bedrooms to reduce the number of pages scraped.
- Custom URLs for complex searches -- for advanced Zillow filters (pool, garage, year built range), perform the search in your browser and paste the full URL into
searchUrl.
Anti-Bot Protection
Zillow uses sophisticated anti-bot measures including:
- IP fingerprinting and datacenter IP blocking
- Browser fingerprint detection
- Rate limiting with progressive blocking
- CAPTCHA challenges (reCAPTCHA)
- JavaScript challenge pages
This actor handles these by:
- Rotating 8 realistic User-Agent strings per request
- Sending full browser-like headers (Sec-Ch-Ua, Sec-Fetch-*, etc.)
- Limiting to 15 requests/minute by default
- Detecting CAPTCHA/block pages and stopping gracefully to preserve collected data
- Supporting Apify residential proxy rotation
If you see "CAPTCHA or anti-bot block detected" in logs, all data collected before the block is saved. Switch to residential proxies for reliable results.
Pricing (Pay Per Event)
This actor uses Apify's pay-per-event model. You are charged for each listing successfully scraped and saved to the dataset. Detail page scraping counts as one charge per listing (not two).
Legal Notice
This actor is provided as a technical tool for data collection. Users are responsible for ensuring their use complies with Zillow's Terms of Use and all applicable laws, including the Computer Fraud and Abuse Act. This tool is intended for personal research, market analysis, and educational purposes. Do not use scraped data for purposes that violate Zillow's terms or applicable law.
Integration — Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("sovereigntaylor/zillow-scraper").call(run_input={"location": "austin-tx","listingType": "for_sale","maxResults": 100,"maxPrice": 500000,"minBeds": 3,"proxyConfiguration": {"useApifyProxy": True,"apifyProxyGroups": ["RESIDENTIAL"]}})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['address']}: {item['priceFormatted']} | {item['bedrooms']}bd/{item['bathrooms']}ba | {item['sqft']} sqft")
Integration — JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('sovereigntaylor/zillow-scraper').call({location: 'austin-tx',listingType: 'for_sale',maxResults: 100,maxPrice: 500000,minBeds: 3,proxyConfiguration: {useApifyProxy: true,apifyProxyGroups: ['RESIDENTIAL']}});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(p => {console.log(`${p.address}: ${p.priceFormatted} | ${p.bedrooms}bd/${p.bathrooms}ba`);});
Related Actors
- Zillow Sold Homes Scraper — Recently sold homes and sales data
- Zillow Rentals Scraper — Rental listings and prices
- Zillow FSBO Scraper — For Sale By Owner listings
- Zillow Home Values Scraper — Home value estimates and Zestimates
- Airbnb Scraper — Short-term rental market data