Zillow Scraper
Pricing
Pay per event
Zillow Scraper
π Extract Zillow property data: prices, Zestimates, beds/baths, sqft, tax records, agent info, photos, schools, and price history. Search by city, ZIP code, or address. Export as JSON, CSV, or Excel.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Actor stats
1
Bookmarked
3
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
π Scrape Zillow property listings at scale. Search by city, ZIP code, or address β extract prices, Zestimates, photos, tax data, school ratings, and 30+ fields from any Zillow listing.
What does Zillow Scraper do?
Zillow Scraper extracts property listing data from Zillow.com β the largest real estate marketplace in the US. Provide a search query (city, ZIP code, or address), paste Zillow search URLs, or supply direct property page links. The scraper returns structured data including price, Zestimate, bedrooms, bathrooms, square footage, lot size, year built, property type, agent info, tax records, nearby schools, price history, and photos.
No API key or Zillow account needed. Works with residential proxies for reliable extraction.
Who is Zillow Scraper for?
π‘ Real estate investors & analysts
- Track property prices across target markets and ZIP codes
- Compare listing prices vs. Zestimates to find undervalued properties
- Monitor days-on-market trends to spot cooling or heating neighborhoods
π Market researchers & data scientists
- Build datasets of property characteristics by city, state, or region
- Analyze pricing patterns across property types (single-family, condo, townhouse)
- Study correlations between school ratings, HOA fees, and property values
ποΈ Real estate agents & brokerages
- Generate comparable listings (comps) for client presentations
- Track competitor listings in your farm area
- Export data to CRM or Google Sheets for lead nurturing
πΌ PropTech startups & developers
- Feed property data into valuation models or rental yield calculators
- Power home search features with up-to-date listing data
- Enrich address databases with Zillow's property attributes
Why use Zillow Scraper?
- π No Zillow account or API key needed β uses public guest access
- π Unified actor β search + detail pages in one tool (competitors need 2-3 separate actors)
- π° Pay-per-result pricing β only pay for listings you extract, no monthly subscription
- πΊοΈ Flexible input β city names, ZIP codes, addresses, or raw Zillow URLs
- π 30+ fields per listing β price, Zestimate, beds/baths, sqft, tax data, photos, schools, agent info
- π Structured output β clean JSON/CSV/Excel ready for analysis
- β‘ API access β integrate with Node.js, Python, or any HTTP client
- π Schedule runs β monitor price changes daily, weekly, or monthly
- π 5,000+ integrations β connect to Google Sheets, Slack, Zapier, Make, and more
What data can you extract?
| Category | Fields |
|---|---|
| π Location | address, city, state, ZIP code, latitude, longitude |
| π΅ Pricing | listing price, Zestimate, rent Zestimate, price history |
| π Property | bedrooms, bathrooms, living area (sqft), lot size, year built, property type |
| π Listing | status (for sale/rent/sold), days on Zillow, page views, favorites count |
| π€ Agent | broker name, agent name, agent phone, MLS ID |
| π° Financials | tax assessed value, annual property tax, monthly HOA fee |
| πΈ Media | photo URLs (all listing photos) |
| π« Schools | nearby schools with ratings, distance, and grade levels |
How much does it cost to scrape Zillow listings?
Zillow Scraper uses pay-per-result pricing. You only pay for listings you actually extract.
| Event | FREE plan | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
|---|---|---|---|---|---|---|
| Run started | $0.02 | $0.02 | $0.02 | $0.02 | $0.02 | $0.02 |
| Per listing | $0.00575 | $0.005 | $0.0039 | $0.003 | $0.002 | $0.0014 |
Example costs (FREE plan):
- 10 listings from one city: ~$0.08
- 50 listings across 2 cities: ~$0.33
- 200 listings from multiple ZIP codes: ~$1.19
With the free $5 monthly credit on Apify's free plan, you can scrape ~800 listings per month at no cost.
How to scrape Zillow listings
- Go to Zillow Scraper on Apify Store
- Enter a search query β city name (e.g., "Miami, FL"), ZIP code (e.g., "90210"), or full address
- Set filters: listing type, price range, bedrooms, property type
- Set the maximum number of listings to extract
- Click Start and wait for results
- Download your data as JSON, CSV, or Excel
Example input β search by city:
{"searchQueries": ["San Francisco, CA"],"maxListings": 50,"listingType": "for_sale"}
Example input β search by ZIP code with filters:
{"searchQueries": ["90210"],"minBeds": 3,"minPrice": 500000,"maxPrice": 2000000,"maxListings": 25}
Example input β direct Zillow URLs:
{"searchUrls": ["https://www.zillow.com/austin-tx/"],"maxListings": 100}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| searchUrls | array | - | Zillow search page URLs to scrape |
| propertyUrls | array | - | Direct property detail page URLs |
| searchQueries | array | - | City names, ZIP codes, or addresses |
| listingType | string | for_sale | for_sale, for_rent, sold, or all |
| minPrice | integer | - | Minimum price filter (USD) |
| maxPrice | integer | - | Maximum price filter (USD) |
| minBeds | integer | - | Minimum bedrooms filter |
| minBaths | integer | - | Minimum bathrooms filter |
| propertyType | string | all | house, condo, townhouse, apartment, land, multi_family, manufactured |
| maxListings | integer | 100 | Maximum listings to extract (0 = unlimited) |
Output example
{"zpid": "95547747","url": "https://www.zillow.com/homedetails/1261-Angelo-Dr-Beverly-Hills-CA-90210/95547747_zpid/","address": "1261 Angelo Dr","city": "Beverly Hills","state": "CA","zipcode": "90210","price": 135000000,"currency": "USD","homeStatus": "FOR_SALE","propertyType": "SINGLE_FAMILY","bedrooms": 16,"bathrooms": 27,"livingArea": 50000,"zestimate": null,"rentZestimate": 4183,"daysOnZillow": null,"brokerName": "Westside Estate Agency Inc.","latitude": 34.09164,"longitude": -118.436676,"photos": ["https://photos.zillowstatic.com/fp/..."],"priceHistory": [],"schools": [],"scrapedAt": "2026-03-17T22:03:31.000Z"}
Tips for best results
- π Start small β test with 5-10 listings first to verify the data matches your needs
- πΊοΈ Use specific locations β "Miami Beach, FL" returns better results than just "Miami"
- π° Use price filters β narrow your search to reduce run time and costs
- π Schedule weekly runs β track price changes over time by scheduling recurring scrapes
- π’ ZIP codes work great β entering a ZIP code gives highly targeted results
- π Export to Sheets β connect the Apify Google Sheets integration for live property databases
Integrations
- π Zillow Scraper β Google Sheets β auto-populate a spreadsheet with new listings from your target ZIP codes for real-time market tracking
- π Zillow Scraper β Slack β get notified when new listings appear under your price threshold in specific neighborhoods
- β‘ Zillow Scraper β Make/Zapier β trigger CRM updates or email alerts when properties matching your investment criteria hit the market
- π Scheduled monitoring β run daily or weekly to track price drops, new listings, or days-on-market changes
- π Webhooks β process new listings in real-time as they're scraped for instant pipeline ingestion
Using the Apify API
Node.js:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/zillow-scraper').call({searchQueries: ['Denver, CO'],maxListings: 50,listingType: 'for_sale',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python:
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('automation-lab/zillow-scraper').call(run_input={'searchQueries': ['Denver, CO'],'maxListings': 50,'listingType': 'for_sale',})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL:
curl "https://api.apify.com/v2/acts/automation-lab~zillow-scraper/runs" \-X POST \-H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"searchQueries": ["Denver, CO"],"maxListings": 50,"listingType": "for_sale"}'
Use with AI agents via MCP
Zillow Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).
Add the Apify MCP server to your AI client β this gives you access to all Apify actors, including this one:
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com"
Setup for Claude Desktop, Cursor, or VS Code
Add this to your MCP config file:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com"}}}
Your AI assistant will use OAuth to authenticate with your Apify account on first use.
Example prompts
Once connected, try asking your AI assistant:
- "Use automation-lab/zillow-scraper to find homes for sale in Austin, TX under $500k with 3+ bedrooms"
- "Scrape Zillow listings in ZIP code 90210 and export to a spreadsheet"
- "Get the 20 most recent listings in Miami Beach and show me average price per sqft"
Learn more in the Apify MCP documentation.
Is it legal to scrape Zillow?
Zillow Scraper only accesses publicly available data on Zillow.com β the same information visible to any visitor without logging in. Web scraping of public data is generally legal, as supported by the US Ninth Circuit ruling in HiQ Labs v. LinkedIn.
You should always:
- Comply with Zillow's Terms of Service
- Respect rate limits and avoid overloading servers
- Handle personal data (agent contacts) in accordance with GDPR and applicable privacy laws
- Use the data responsibly and ethically
FAQ
How fast is Zillow Scraper? A typical search returns 10-40 listings in 15-40 seconds. The scraper uses browser automation with residential proxies for reliable access, which is slower than pure HTTP but necessary for Zillow's anti-bot protections.
How much does it cost to scrape 100 Zillow listings? On the FREE plan: $0.02 (start) + 100 Γ $0.00575 = $0.60. On BRONZE: $0.52. On GOLD: $0.32.
Why are some fields null?
Search result pages return fewer fields than detail pages. Fields like yearBuilt, description, priceHistory, schools, and taxAssessedValue are only available on detail pages. If you provide direct property URLs, these fields will be populated.
Why did my run return 0 results? This usually means Zillow's anti-bot protection blocked the request. Try again β the scraper uses session rotation and retries automatically. If the issue persists, the search query might not match any Zillow location.
Does it work for rentals and sold properties?
Yes β set listingType to for_rent or sold to search those categories.
Other real estate and data scrapers
- π Redfin Scraper β scrape Redfin property listings
- π¨ Airbnb Scraper β extract Airbnb rental listings and pricing
- β Airbnb Reviews Scraper β scrape guest reviews from Airbnb
- π¨ Booking.com Scraper β extract hotel listings and prices
- πΊοΈ Google Maps Lead Finder β find businesses with contact info
- β Google Maps Reviews Scraper β extract Google Maps reviews
- β Trustpilot Scraper β scrape business reviews from Trustpilot
- π Website Contact Finder β extract emails and phone numbers from websites