Zillow Sold Homes Scraper - Recent Sales Data
Pricing
Pay per usage
Zillow Sold Homes Scraper - Recent Sales Data
Scrape recently sold homes from Zillow. Get sale prices, dates, property details, price history, and agent info. Perfect for real estate investors, market analysis, and comps research.
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Ricardo Akiyoshi
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Scrape recently sold homes from Zillow for any US location. Extract sale prices, sale dates, original list prices, price history, property details, Zestimates, tax assessments, agent info, photos, and more.
Built for real estate investors, analysts, appraisers, flippers, and agents who need reliable comparable sales (comps) data at scale.
Features
- Sold-home focus -- dedicated to recently sold properties with sale-specific fields: sold price, sold date, original list price, price change amount/percentage, days on market
- Any US location -- search by city, state, zip code, or neighborhood
- Flexible time frames -- 1 day, 7 days, 14 days, 30 days, 90 days, 6 months, 12 months, 24 months, or 36 months
- Advanced filters -- min/max price, min/max bedrooms, sort by newest/price
- 6 extraction strategies with fallbacks:
__NEXT_DATA__(Next.js server-rendered JSON)- Inline script / searchQueryState parsing
hdpApolloPreloadedData(Apollo GraphQL cache)- JSON-LD structured data (schema.org)
- Open Graph / Twitter meta tags
- CSS selector DOM parsing
- Rich data output -- sold price, sold date, original list price, price change, days on market, beds, baths, sqft, lot size, year built, price/sqft, Zestimate, tax assessment, HOA fees, full description, lat/long, price history array, agent info, photos, MLS ID
- Smart pagination -- automatically follows Zillow's multi-page results
- Deduplication -- tracks seen ZPIDs and addresses to avoid duplicates
- Anti-bot handling -- 12 rotating User-Agents with full browser-like headers, CAPTCHA detection, graceful shutdown
- Proxy support -- residential proxies strongly recommended for Zillow
- Pay-per-event pricing -- $0.005 per sold listing scraped
Use Cases
Real Estate Investors
Pull recently sold homes in target neighborhoods to identify undervalued markets. Compare sold prices against Zestimates to find areas where homes sell below estimated value. Track price-per-square-foot trends across zip codes.
Comparable Sales (Comp) Analysis
Build a comps dataset for property valuation by pulling all recent sales in a target area. Compare sold prices against original list prices to understand negotiation patterns and market dynamics.
House Flippers
Find properties that sold significantly below market value. Identify quick flips by tracking sold price vs. original list price and days on market. Spot distressed sales and below-market transactions.
Real Estate Agents
Research recent sales in your farm area. Generate CMA (Comparative Market Analysis) reports with accurate sold data. Track competitor listings and their sold prices.
Market Trend Analysis
Monitor sold home data over time to track median prices, average days on market, and price-to-list ratios. Build time series datasets for seasonal analysis and market cycle forecasting.
Appraisal Support
Collect structured comparable sales data with sold prices, sale dates, property characteristics, and location data. Export to spreadsheets for side-by-side comparison in appraisal reports.
Input
| Field | Type | Default | Description |
|---|---|---|---|
location | String | los-angeles-ca | City, zip code, or neighborhood slug (required) |
minPrice | Integer | 0 | Minimum sold price filter |
maxPrice | Integer | 0 | Maximum sold price filter |
minBeds | Integer | 0 | Minimum bedrooms |
maxBeds | Integer | 0 | Maximum bedrooms |
daysOnZillow | String | 90 | Time frame: 1, 7, 14, 30, 90, 6m, 12m, 24m, 36m |
sortBy | String | newest | Sort order: newest, price_low, price_high |
maxResults | Integer | 100 | Maximum listings to scrape (0 = unlimited) |
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 |
| Austin, TX | austin-tx |
| Phoenix, AZ | phoenix-az |
| Denver, CO | denver-co |
| Atlanta, GA | atlanta-ga |
| ZIP code 90210 | 90210 |
| ZIP code 33101 | 33101 |
Input Examples
Recently sold homes in Los Angeles (last 90 days)
{"location": "los-angeles-ca","daysOnZillow": "90","maxResults": 200}
Sold houses in Miami over $500K (last 30 days)
{"location": "miami-fl","daysOnZillow": "30","minPrice": 500000,"maxResults": 300}
Sold homes in Manhattan (last 7 days, price high to low)
{"location": "manhattan-new-york-ny","daysOnZillow": "7","sortBy": "price_high","maxResults": 100}
Comp analysis: 3-5 bed homes in ZIP 30309 under $800K
{"location": "30309","daysOnZillow": "6m","minBeds": 3,"maxBeds": 5,"maxPrice": 800000,"maxResults": 500,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Full 3 years of sales in Austin with residential proxies
{"location": "austin-tx","daysOnZillow": "36m","maxResults": 1000,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output
Each sold listing is saved to the default dataset with comprehensive property and sale data.
Example Output
{"zpid": "20485713","address": "123 Main St, Los Angeles, CA 90001","streetAddress": "123 Main St","city": "Los Angeles","state": "CA","zipcode": "90001","soldPrice": 825000,"soldPriceFormatted": "$825,000","soldDate": "2026-02-15","originalListPrice": 849000,"originalListPriceFormatted": "$849,000","priceChange": -24000,"priceChangeFormatted": "-$24,000","priceChangePercent": -2.83,"daysOnMarket": 42,"bedrooms": 3,"bathrooms": 2,"sqft": 1650,"lotSize": "5,500 sqft","yearBuilt": 1972,"homeType": "SINGLE_FAMILY","pricePerSqft": 500,"zestimate": 835000,"zestimateFormatted": "$835,000","taxAssessment": 720000,"taxAssessmentFormatted": "$720,000","monthlyHoaFee": null,"description": "Beautifully renovated 3-bedroom home in prime location with modern kitchen, hardwood floors throughout, and a spacious backyard.","latitude": 34.0522,"longitude": -118.2437,"priceHistory": [{"date": "2026-02-15","price": 825000,"priceFormatted": "$825,000","event": "Sold","source": "MLS"},{"date": "2026-01-20","price": 849000,"priceFormatted": "$849,000","event": "Price change","source": "MLS"},{"date": "2026-01-04","price": 875000,"priceFormatted": "$875,000","event": "Listed for sale","source": "MLS"}],"agentName": "Jane Smith","agentPhone": "(310) 555-0123","brokerName": "Keller Williams Realty","brokerPhone": "(310) 555-0100","mlsId": "SR26012345","photos": ["https://photos.zillowstatic.com/fp/abc123-p_e.jpg","https://photos.zillowstatic.com/fp/def456-p_e.jpg","https://photos.zillowstatic.com/fp/ghi789-p_e.jpg"],"url": "https://www.zillow.com/homedetails/123-Main-St-Los-Angeles-CA-90001/20485713_zpid/","scrapedAt": "2026-03-02T12:00:00.000Z","source": "zillow_sold","searchPage": 1,"extractionStrategy": "__NEXT_DATA__"}
Performance Tips
- Always use residential proxies -- Zillow aggressively blocks datacenter IPs. Use the
RESIDENTIALproxy group for reliable results. - Start with a small test -- run with
maxResults: 10first to verify your location and proxy setup work. - Shorter time frames are faster --
7days returns fewer pages than36m. - Use filters to narrow scope -- price ranges and bedroom counts reduce total pages to crawl.
- Expect ~40 results per page -- Zillow caps search results at about 25 pages (1,000 results) per search.
- Sort by newest for freshest data -- the default
newestsort gives you the most recent sales first.
Anti-Bot Protection
Zillow uses sophisticated anti-bot measures including IP fingerprinting, browser fingerprint detection, rate limiting, CAPTCHA challenges, and JavaScript challenge pages.
This actor handles these by:
- Rotating 12 realistic User-Agent strings per request
- Sending full browser-like headers (Sec-Ch-Ua, Sec-Fetch-*, DNT, etc.)
- Limiting to 12 requests/minute by default
- Detecting CAPTCHA/block pages and stopping gracefully to preserve collected data
- Supporting Apify residential proxy rotation
- Adding pagination delays to mimic human browsing patterns
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 pricing model. You are charged $0.005 per sold listing successfully scraped and saved to the dataset.
| Volume | Cost | Price Per Listing |
|---|---|---|
| 100 listings | $0.50 | $0.005 |
| 500 listings | $2.50 | $0.005 |
| 1,000 listings | $5.00 | $0.005 |
| 5,000 listings | $25.00 | $0.005 |
Platform usage costs (compute + proxy) are additional.
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. This tool is intended for personal research, market analysis, comparable sales analysis, and educational purposes.
Integration — Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("sovereigntaylor/zillow-sold-scraper").call(run_input={"searchTerm": "zillow sold","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-sold-scraper').call({searchTerm: 'zillow sold',maxResults: 50});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(item => console.log(item.title || item.name || 'N/A'));
Related Actors
- Zillow Scraper — Active Zillow listings
- Zillow Rentals Scraper — Rental listings
- Zillow Home Values Scraper — Home value estimates
- Realtor Scraper — Realtor.com listings
- Redfin Scraper — Redfin listings and data