Zillow Scraper — Property Listings & Agent Leads
Pricing
from $4.00 / 1,000 property scrapeds
Zillow Scraper — Property Listings & Agent Leads
Scrape Zillow listings with 40+ fields: address, price, Zestimate, price history, agent contact info, school ratings, walk score & more MCP-ready. $4.00/1K.
Pricing
from $4.00 / 1,000 property scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
1
Bookmarked
19
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Share
Zillow Scraper — Properties, Prices, Zestimate & Agent Leads
Zillow Scraper is an Apify Actor for real estate data collection through Apify MCP. It accepts a search query, direct Zillow listing URLs, Zillow Property IDs (ZPIDs), or ZIP codes, with optional filters for listing type, property type, price, and bedrooms. Each output record represents one Zillow property listing, and the dataset can include core market fields such as price, Zestimate, rent Zestimate, agent contact info, school ratings, walk score, price history, and location details. The result is CRM-ready JSON for lead generation, comps, and market research workflows.
Best fit and connected workflows
Use this Actor when your workflow starts with Zillow and ends with structured property records.
It fits well when you need to:
- Discover listings from a city, neighborhood, keyword, or ZIP code and then enrich them with detail fields.
- Enrich known Zillow listings by pasting direct URLs or ZPIDs.
- Build real estate lead lists from agent contact fields.
- Compare active, rented, or recently sold listings using status-based filtering.
- Feed Zillow records into CRM, spreadsheet, enrichment, or analysis pipelines.
A connected workflow often starts with Zillow Search Scraper to discover Zillow records, then passes the verified public URL or ZPID into this Actor for full listing detail extraction.
Practical scenario
Maya, a real estate analyst, starts with a list of ZPIDs from her CRM. She runs this Actor with those IDs and a FOR_SALE filter. The returned dataset gives her the listing URL, current price, Zestimate, days on market, agent name, agent phone, and walk score for each property. She uses the ZPID as the stable key to match the new records to her existing pipeline, then sends the enriched rows to her outreach list for follow-up.
Input fields
Use one input mode at a time, or combine startUrls with searchQuery.
| Field | Type | Purpose |
|---|---|---|
searchQuery | string | Search by location, neighborhood, or keyword, such as Austin, TX or 3BR homes in Austin TX. |
startUrls | array | Direct Zillow property listing URLs for full detail scraping. |
zpids | array | Zillow Property IDs for CRM enrichment workflows. |
zipCodes | array | ZIP codes for geographic market sweeps. |
listingType | string | FOR_SALE, FOR_RENT, or RECENTLY_SOLD. |
propertyTypes | array | Property type filters such as SINGLE_FAMILY, CONDO, or TOWNHOUSE. |
minPrice | integer | Minimum listing price in USD. |
maxPrice | integer | Maximum listing price in USD. |
minBeds | integer | Minimum bedroom count. |
minBaths | string | Minimum bathroom count, including partial baths. |
maxResults | integer | Maximum number of property listings to scrape. |
proxyConfiguration | object | Proxy settings for the run. |
Focused input example
{"searchQuery": "Austin, TX","listingType": "FOR_SALE","propertyTypes": ["SINGLE_FAMILY"],"minBeds": 3,"maxPrice": 600000,"maxResults": 10,"proxyConfiguration": {"useApifyProxy": true}}
Output fields
Each dataset item is one Zillow property record.
| Field | Type | Purpose |
|---|---|---|
zpid | string | Zillow property identifier and stable key. |
url | string | Full Zillow listing URL. |
address | object | Structured address with street, city, state, ZIP, and neighborhood. |
latitude | number | Latitude coordinate. |
longitude | number | Longitude coordinate. |
price | number | Current listing price or monthly rent. |
currency | string | Currency code, such as USD. |
price_per_sqft | number | Price per square foot. |
zestimate | number | Zillow automated estimate. |
rent_zestimate | number | Zillow rent estimate. |
listing_status | string | Current Zillow status. |
listing_type | string | Search or marketing listing type. |
property_type | string | Property classification. |
days_on_market | number | Days active on Zillow. |
listing_date | string | ISO 8601 listing date. |
bedrooms | number | Bedroom count. |
bathrooms | number | Bathroom count. |
living_area_sqft | number | Finished living area. |
lot_size_sqft | number | Lot size in square feet. |
year_built | number | Construction year. |
floors | number | Stories when available. |
garage_spaces | number | Garage parking spaces. |
has_pool | boolean | Pool indicator. |
description | string | Listing description text. |
features | array | Property features and amenities. |
photos | array | Photo URLs. |
virtual_tour_url | string | Virtual tour link if available. |
open_house_dates | array | Upcoming open house date/time strings. |
hoa_fee | number | Monthly HOA fee. |
annual_tax | number | Estimated annual property tax. |
price_history | array | Historical price events. |
tax_history | array | Annual tax records. |
agent_name | string | Listing agent name. |
agent_phone | string | Listing agent phone number. |
agent_email | string | Listing agent email address if displayed. |
agent_license | string | Agent license number. |
broker_name | string | Listing brokerage. |
mls_id | string | MLS identifier. |
walk_score | number | Walk score. |
transit_score | number | Transit score. |
bike_score | number | Bike score. |
nearby_schools | array | Nearby schools with rating and distance. |
scraped_at | string | Extraction timestamp. |
source_url | string | Exact Zillow URL scraped. |
data_source | string | search_result or detail_page. |
Illustrative output record
{"zpid": "87802938","url": "https://www.zillow.com/homedetails/123-Main-St-Austin-TX-78701/87802938_zpid/","address": {"street": "123 Main St","city": "Austin","state": "TX","zip": "78701","neighborhood": "Downtown","subdivision": null},"latitude": 30.2672,"longitude": -97.7431,"price": 450000,"currency": "USD","price_per_sqft": 281,"zestimate": 448000,"rent_zestimate": 2350,"listing_status": "FOR_SALE","listing_type": "FOR_SALE","property_type": "SINGLE_FAMILY","days_on_market": 12,"listing_date": "2026-03-28","bedrooms": 3,"bathrooms": 2.5,"living_area_sqft": 1600,"lot_size_sqft": 6500,"year_built": 2005,"floors": 2,"garage_spaces": 2,"has_pool": false,"description": "Beautiful 3/2.5 home in the heart of Austin...","features": ["Central Air", "Hardwood Floors", "Stainless Appliances"],"photos": ["https://photos.zillowstatic.com/fp/abc123.jpg"],"virtual_tour_url": "https://www.zillow.com/view-3d-home/abc123/","open_house_dates": ["2026-04-12T14:00:00"],"hoa_fee": 125,"annual_tax": 8200,"price_history": [{ "date": "2026-03-28", "price": 465000, "event": "Listed" },{ "date": "2026-04-01", "price": 450000, "event": "Price Cut" }],"tax_history": [{ "year": 2025, "amount": 8100 },{ "year": 2024, "amount": 7800 }],"agent_name": "Jane Smith","agent_phone": "(512) 555-0123","agent_email": "jane.smith@realty.com","agent_license": "TX-12345678","broker_name": "Austin Premier Realty","mls_id": "1234567","walk_score": 72,"transit_score": 45,"bike_score": 58,"nearby_schools": [{"name": "Austin Elementary","type": "Elementary","rating": 8,"distance": 0.4}],"scraped_at": "2026-04-09T14:32:00.000Z","source_url": "https://www.zillow.com/homedetails/123-Main-St-Austin-TX-78701/87802938_zpid/","data_source": "detail_page"}
How it works
This Actor accepts one of four entry modes:
searchQueryfor location and keyword searches.startUrlsfor direct Zillow listing URLs.zpidsfor numeric Zillow property IDs.zipCodesfor ZIP-based sweeps.
The live contract also supports combining startUrls with searchQuery. Results are written to the default dataset, with one primary event charged per fully extracted property listing. The output schema includes results, runOutput, and runSummary links for dataset access and automation.
Pricing
This Actor uses Pay per event pricing plus Apify platform usage. Each fully extracted property listing is charged as one property-scraped event, and the run also includes the standard Apify platform costs such as proxy usage when enabled.
For current pricing details, open the live Pricing tab on the Actor page.
Example: if your run scrapes ten properties, the event charge is based on ten property records, plus any Apify platform usage that applies to the run.
Use with AI agents (MCP)
This Actor is usable through Apify MCP and is designed to return structured Zillow listing records for agent-driven workflows.
Tool description: Search or enrich Zillow properties by query, URL, ZPID, or ZIP code, then read the resulting dataset for property details, valuation signals, location scores, and agent contacts.
Actor identity: khadinakbar/zillow-all-in-one-scraper
Search Zillow listings for Austin, TX. Return the dataset items and summarize the top matches using price, Zestimate, agent contact, and walk score. If a record includes
data_source = detail_page, treat it as full property detail. Usezpidas the stable key, and read the dataset after the execution completes.
Output interpretation is straightforward:
zpididentifies the property record.source_urlshows the exact Zillow page used to generate the item.data_sourceindicates whether the record came from a search result card or a full detail page.price_history,tax_history,walk_score,transit_score, andnearby_schoolsprovide structured context for analysis.resultslinks to the dataset items endpoint, andrunSummaryandrunOutputsupport automation and agent routing.
Pagination and cost guidance are governed by the input you set. maxResults caps the number of listings scraped, and each property listing is one charge event.
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/zillow-all-in-one-scraper').call({searchQuery: 'Austin, TX',listingType: 'FOR_SALE',minBeds: 3,maxResults: 5,proxyConfiguration: {useApifyProxy: true,},});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log('Items:', dataset.items.length);console.log(dataset.items[0]);
Best results and outcome guidance
Choose the input mode that matches the data you already have:
- Use
searchQueryfor broad discovery by place or keyword. - Use
startUrlswhen you already have Zillow listing pages. - Use
zpidsfor CRM enrichment and deduplication. - Use
zipCodesfor market sweeps by geography.
Helpful filters include listingType, propertyTypes, minPrice, maxPrice, minBeds, and minBaths. maxResults is the main control for output volume. For downstream analysis, zpid and source_url are the most useful record keys.
Continue the workflow
- Then use Zillow Search Scraper — ZIP, City & Map Bounds to extend Zillow Scraper — Properties, Prices, Zestimate & Agent Leads research with a complementary discovery contract.
- Then use Zumper Scraper — Apartments & Houses for Rent Data to extend Zillow Scraper — Properties, Prices, Zestimate & Agent Leads with a neighboring property research source when the brief calls for Zumper data.
Design note
I found that the live dataset contract exposes both results and runSummary, which makes it practical to separate record retrieval from run-status handling in automation.
FAQ
How should I choose between search queries and direct URLs?
Use searchQuery for discovery by city, neighborhood, or keyword. Use startUrls for known Zillow listing pages.
When is ZPID mode the right choice?
Use zpids when you already store Zillow IDs in a CRM or spreadsheet and want stable record matching.
What does ZIP code mode return?
It sweeps each ZIP code for active listings, which is useful for market analysis by geography.
How do I get just rentals or sold comps?
Set listingType to FOR_RENT or RECENTLY_SOLD.
Which field is suited to joining records across runs?
Use zpid as the stable key, and pair it with source_url when you need provenance.
Responsible use
Use this Actor for lawful data collection from publicly accessible Zillow pages and review your use case against applicable laws, Zillow terms, and data protection requirements. If you store or distribute agent contact details or other property data, make sure your handling, retention, and outreach practices follow the policies that apply to your workflow.