Zillow Scraper avatar

Zillow Scraper

Pricing

Pay per event

Go to Apify Store
Zillow Scraper

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

Stas Persiianenko

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

1

Monthly active users

2 days ago

Last modified

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?

CategoryFields
πŸ“ Locationaddress, city, state, ZIP code, latitude, longitude
πŸ’΅ Pricinglisting price, Zestimate, rent Zestimate, price history
🏠 Propertybedrooms, bathrooms, living area (sqft), lot size, year built, property type
πŸ“‹ Listingstatus (for sale/rent/sold), days on Zillow, page views, favorites count
πŸ‘€ Agentbroker name, agent name, agent phone, MLS ID
πŸ’° Financialstax assessed value, annual property tax, monthly HOA fee
πŸ“Έ Mediaphoto URLs (all listing photos)
🏫 Schoolsnearby 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.

EventFREE planBRONZESILVERGOLDPLATINUMDIAMOND
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

  1. Go to Zillow Scraper on Apify Store
  2. Enter a search query β€” city name (e.g., "Miami, FL"), ZIP code (e.g., "90210"), or full address
  3. Set filters: listing type, price range, bedrooms, property type
  4. Set the maximum number of listings to extract
  5. Click Start and wait for results
  6. 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

ParameterTypeDefaultDescription
searchUrlsarray-Zillow search page URLs to scrape
propertyUrlsarray-Direct property detail page URLs
searchQueriesarray-City names, ZIP codes, or addresses
listingTypestringfor_salefor_sale, for_rent, sold, or all
minPriceinteger-Minimum price filter (USD)
maxPriceinteger-Maximum price filter (USD)
minBedsinteger-Minimum bedrooms filter
minBathsinteger-Minimum bathrooms filter
propertyTypestringallhouse, condo, townhouse, apartment, land, multi_family, manufactured
maxListingsinteger100Maximum 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 ApifyClient
client = 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().items
print(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.

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