Zillow Home Values & Zestimate Scraper avatar

Zillow Home Values & Zestimate Scraper

Pricing

Pay per usage

Go to Apify Store
Zillow Home Values & Zestimate Scraper

Zillow Home Values & Zestimate Scraper

Scrape Zillow home values, Zestimates, and market trends for any US area. Extract property valuations, price history, tax history, comparable sales, sqft, beds, baths, year built, lot size, and forecasted appreciation. Search by ZIP code, city, or street address. Uses __NEXT_DATA__, Zillow API, and

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Ricardo Akiyoshi

Ricardo Akiyoshi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Categories

Share

Scrape Zillow home values, Zestimates, market trends, comparable sales, price history, and tax history for any US area. Search by ZIP code, city name, or street address.

Designed for real estate investors, appraisers, analysts, and researchers who need accurate property valuation data at scale.

Features

  • Zestimate extraction -- current Zestimate value with low/high confidence range for every property
  • Market trends -- median home value, 1-year change, 5-year change, and forecasted appreciation for any area
  • Comparable sales -- recently sold properties near each location with sale prices and dates
  • Price history -- full historical price changes, listings, and sale events per property
  • Tax history -- annual tax assessments, tax paid, and year-over-year changes
  • Property details -- sqft, beds, baths, year built, lot size, home type, HOA fees, insurance
  • Multi-location -- search multiple ZIP codes, cities, or addresses in a single run
  • Property type filter -- filter by house, condo, or townhouse
  • Four extraction strategies -- parses __NEXT_DATA__ (Next.js), Apollo GraphQL cache, JSON-LD, and CSS selectors
  • Anti-bot handling -- 12 rotating User-Agent strings with full browser headers, block detection, 3-strike graceful shutdown
  • Deduplication -- tracks ZPIDs and addresses to prevent duplicate entries
  • Rent Zestimate -- estimated monthly rental value alongside the property value
  • Per-location stats -- detailed breakdown of results per location in logs
  • Pay-per-event -- charged only for each value successfully scraped

Use Cases

Real Estate Investing

Analyze property values across multiple ZIP codes to identify undervalued markets. Compare Zestimates to recent sale prices to find properties priced below market value. Track 1-year and 5-year appreciation trends to predict which neighborhoods are gaining momentum.

Property Valuation & Appraisals

Pull Zestimates with confidence ranges and comparable sales data for accurate property valuations. Cross-reference Zestimates with tax assessed values and recent sale prices. Export price history to see how a property's value has changed over time.

Market Analysis & Research

Monitor median home values and forecasted appreciation across cities and ZIP codes. Track whether a market is appreciating, flat, or declining. Compare value changes across neighborhoods within a metro area.

Comparative Market Analysis (CMA)

Generate CMA reports by collecting comparable sales near a subject property. Each comparable includes sale price, date, sqft, beds, baths, and distance. Filter by property type to ensure apples-to-apples comparisons.

Tax Assessment Review

Extract tax history to identify properties where the tax assessed value significantly differs from the Zestimate, which may indicate appeal opportunities or assessment errors.

Portfolio Monitoring

Track Zestimates for properties you own or are considering. Run the scraper periodically to build a time series of property values and detect market shifts early.

Academic & Economic Research

Collect structured housing data for urban economics research, affordability studies, gentrification analysis, and demographic studies. Data includes geolocation for spatial analysis.

Input

FieldTypeDefaultDescription
locationsString[]["90210"]List of ZIP codes, cities, or addresses to search
propertyTypeStringallFilter: all, house, condo, townhouse
includeCompsBooleantrueInclude comparable (recently sold) properties
maxResultsInteger200Max home values to scrape per location (0 = unlimited)
proxyConfigurationObject(none)Apify proxy settings (residential strongly recommended)

Location Format

Location TypeExampleNotes
ZIP code902105-digit US ZIP code
City sluglos-angeles-caZillow URL-friendly format
City, StateMiami, FLAuto-converted to slug
Street address123 Main St, Los Angeles, CASearches for specific property
Full URLhttps://www.zillow.com/home-values/90210/Paste any Zillow URL directly

Property Types

ValueDescription
allAll property types (default)
houseSingle family homes
condoCondominiums and co-ops
townhouseTownhouses and townhomes

Input Examples

Home values in Beverly Hills

{
"locations": ["90210"],
"propertyType": "all",
"includeComps": true,
"maxResults": 100
}

Compare values across multiple markets

{
"locations": [
"austin-tx",
"nashville-tn",
"boise-id",
"raleigh-nc",
"tampa-fl"
],
"propertyType": "house",
"includeComps": true,
"maxResults": 50
}

Condos in Manhattan with comps

{
"locations": ["manhattan-new-york-ny"],
"propertyType": "condo",
"includeComps": true,
"maxResults": 200,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Specific property lookup

{
"locations": ["123 Elm St, Pasadena, CA"],
"includeComps": false,
"maxResults": 1
}

Large-scale ZIP code survey

{
"locations": [
"90210", "90211", "90212",
"10001", "10002", "10003",
"60601", "60602", "60603",
"77001", "77002", "77003"
],
"propertyType": "all",
"includeComps": true,
"maxResults": 200,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Output

Each property is saved to the default dataset. Fields vary based on data availability and source page.

Home value output

{
"zpid": "20485267",
"address": "123 Elm St, Beverly Hills, CA, 90210",
"streetAddress": "123 Elm St",
"city": "Beverly Hills",
"state": "CA",
"zipcode": "90210",
"zestimate": 3450000,
"zestimateFormatted": "$3,450,000",
"zestimateRange": "$3,200,000 - $3,700,000",
"zestimateRangeLow": 3200000,
"zestimateRangeHigh": 3700000,
"rentZestimate": 12500,
"rentZestimateFormatted": "$12,500",
"lastSalePrice": 2800000,
"lastSalePriceFormatted": "$2,800,000",
"lastSaleDate": "2021-06-15",
"taxAssessedValue": 2950000,
"taxAssessedValueFormatted": "$2,950,000",
"priceHistory": [
{
"date": "2021-06-15",
"price": 2800000,
"priceFormatted": "$2,800,000",
"event": "Sold",
"source": "CRMLS"
},
{
"date": "2021-04-01",
"price": 2900000,
"priceFormatted": "$2,900,000",
"event": "Listed for sale",
"source": "CRMLS"
}
],
"taxHistory": [
{
"year": 2025,
"taxPaid": 35400,
"taxPaidFormatted": "$35,400",
"value": 2950000,
"valueFormatted": "$2,950,000"
},
{
"year": 2024,
"taxPaid": 33600,
"taxPaidFormatted": "$33,600",
"value": 2856000,
"valueFormatted": "$2,856,000"
}
],
"lotSize": "8,500 sqft",
"lotSqft": 8500,
"sqft": 3200,
"beds": 4,
"baths": 3.5,
"yearBuilt": 1985,
"homeType": "SingleFamily",
"latitude": 34.0736,
"longitude": -118.4004,
"listingUrl": "https://www.zillow.com/homedetails/123-Elm-St-Beverly-Hills-CA-90210/20485267_zpid/",
"medianValue": 3850000,
"valueChange1yr": 5.2,
"valueChange5yr": 28.7,
"forecastedChange": 3.1,
"scrapedAt": "2026-03-02T12:00:00.000Z",
"source": "zillow",
"searchLocation": "90210"
}
{
"address": "Beverly Hills, CA",
"isRegion": true,
"regionType": "city",
"medianValue": 3850000,
"medianValueFormatted": "$3,850,000",
"valueChange1yr": 5.2,
"valueChange1yrFormatted": "+5.2%",
"valueChange5yr": 28.7,
"valueChange5yrFormatted": "+28.7%",
"forecastedChange": 3.1,
"forecastedChangeFormatted": "+3.1%",
"medianListPrice": 4200000,
"medianSalePrice": 3600000,
"medianRentPrice": 8500,
"totalHomes": 4521,
"homesSold": 87,
"medianDaysOnMarket": 45,
"scrapedAt": "2026-03-02T12:00:00.000Z",
"source": "zillow",
"searchLocation": "90210"
}

Comparable sale output

{
"zpid": "20485300",
"address": "456 Oak Ave, Beverly Hills, CA, 90210",
"zestimate": 3100000,
"zestimateFormatted": "$3,100,000",
"lastSalePrice": 3050000,
"lastSalePriceFormatted": "$3,050,000",
"lastSaleDate": "2026-01-20",
"sqft": 2800,
"beds": 4,
"baths": 3,
"yearBuilt": 1990,
"homeType": "SingleFamily",
"homeStatus": "Sold",
"distanceMiles": 0.3,
"isComparable": true,
"scrapedAt": "2026-03-02T12:00:00.000Z",
"source": "zillow",
"searchLocation": "90210"
}

Performance Tips

  1. Use residential proxies -- Zillow is one of the most aggressive sites for blocking datacenter IPs. Apify's RESIDENTIAL proxy group is strongly recommended for any production use.
  2. Start small -- run with maxResults: 10 and one location first to verify your proxy setup works before scaling up.
  3. Batch locations -- pass all ZIP codes and cities in a single locations array rather than running the actor multiple times. This is more efficient and lets the crawler manage rate limiting.
  4. Limit comps -- if you only need property values and not comparable sales, set includeComps: false to reduce the number of pages crawled.
  5. Property type filter -- filtering by property type reduces noise and speeds up processing.
  6. ZIP codes are fastest -- ZIP code searches tend to return cleaner results than city-level searches, which can span thousands of properties.

Anti-Bot Protection

Zillow uses aggressive anti-bot measures including:

  • IP-based rate limiting and datacenter IP blocking
  • CAPTCHA and JavaScript challenge pages
  • Cloudflare-style DDoS protection
  • Browser fingerprinting
  • User-Agent and header validation

This actor handles these by:

  • Rotating 12 realistic User-Agent strings per request
  • Sending full browser-like headers (Sec-Ch-Ua, Sec-Fetch-*, DNT)
  • Limiting to 12 requests/minute with randomized delays between requests
  • Detecting block/CAPTCHA pages with a 3-strike shutdown policy
  • Supporting Apify residential proxy rotation
  • Preferring JSON data extraction over DOM parsing

If you see "CAPTCHA/anti-bot block detected" in logs, switch to residential proxies for reliable results.

Pricing (Pay Per Event)

This actor uses Apify's pay-per-event model. You are charged $0.005 for each home value successfully scraped and saved to the dataset. There is no charge for blocked or failed requests.

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. This tool is intended for personal research, market analysis, investment due diligence, and educational purposes. Do not use scraped data for purposes that violate Zillow's terms or applicable law.

Integration — Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("sovereigntaylor/zillow-home-values-scraper").call(run_input={
"searchTerm": "zillow home values",
"maxResults": 50
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item.get('title', item.get('name', 'N/A'))}")

Integration — JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('sovereigntaylor/zillow-home-values-scraper').call({
searchTerm: 'zillow home values',
maxResults: 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => console.log(item.title || item.name || 'N/A'));