Zillow Search Scraper
Pricing
from $1.00 / 1,000 results
Zillow Search Scraper
Scrape Zillow real-estate listings by location or search URL. Extracts zpid, address, price, beds/baths, photos, status, broker, lat/lon, and 40+ more fields from Zillow Search Results Pages.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(1)
Developer
Crikit
Maintained by CommunityActor stats
3
Bookmarked
12
Total users
2
Monthly active users
10 days ago
Last modified
Categories
Share
Scrape Zillow real-estate listings by location name or search URL. This Zillow scraper pulls every home off a Zillow Search Results Page with zpid, full address, price, bedrooms, bathrooms, photos, listing status, broker, coordinates, and 40+ further fields.
No Zillow API key, no login, and no headless browser. Results land in a structured dataset you can export to JSON, CSV, Excel, or XML, or pull straight from the Apify API.
What is Zillow Search Scraper?
Zillow Search Scraper is an Apify Actor that extracts real-estate search results from Zillow and returns them as clean, structured records. Point it at a city, a ZIP code, or a Zillow URL you have already filtered in the browser, and every filter in that URL is honoured. slimOutput trims the payload when you only need the core columns.
What data can this Zillow scraper extract?
Every run writes one row per property. The full schema carries 73 fields; the most-used ones are below.
| Field | Type | Description |
|---|---|---|
zpid | string | Zillow property identifier. |
id | string | Zillow internal listing id (often equal to zpid for active listings). |
palsId | string | Provider-and-listing-source identifier. |
imgSrc | string | Hero image for the listing. |
hasImage | boolean | True if Zillow has at least one photo for this listing. |
carouselPhotosComposable | array | Carousel photo data (responsive sources for srcset). Shape varies: array of source objects, or a single object... |
detailUrl | string | Absolute URL of the property's HDP page on Zillow. |
statusType | string | Machine status code (FOR_SALE | RECENTLY_SOLD | FOR_RENT | COMING_SOON | PENDING). |
statusText | string | Human-readable status label. |
rawHomeStatusCd | string | Zillow's internal raw status code. |
marketingStatusSimplifiedCd | string | Simplified marketing-status code (for_sale, sold, for_rent, etc.). |
countryCurrency | string | Currency code (USD, CAD). |
price | string | Listing price as displayed (e.g. "$500,000"). Populated for for-sale and coming-soon listings; rental listings use... |
unformattedPrice | number | Listing price as a number in the listing's currency. See price for status-specific alternatives. |
soldPrice | number | Final sold price. Populated only on RECENTLY_SOLD listings. |
baseRent | number | Monthly base rent. Populated only on FOR_RENT listings. |
minBaseRent | number | Minimum monthly rent across units. Populated on apartment-building FOR_RENT listings. |
maxBaseRent | number | Maximum monthly rent across units. Populated on apartment-building FOR_RENT listings. |
units | array | Per-unit roster on apartment-building listings (each entry has bedrooms, bathrooms, area, price). |
isBuilding | boolean | True when this listing is an apartment community / multi-unit building rather than a single property. Building... |
buildingName | string | Building name |
builderName | string | Builder name |
See the Output tab in Apify Console for all 73 fields.
How to scrape Zillow search results
- Open Zillow Search Scraper and click Try for free.
- Paste a Zillow search URL into
searchUrls, or type a place intolocationQueries. - Set
maxItemsandmaxPagesPerSearchto bound the run. - Turn on
slimOutputif you want a compact row rather than all 70+ fields. - Adjust
maxConcurrencyfor large multi-region pulls. - Click Start and watch rows appear live in the Output tab.
- Export the dataset as JSON, CSV, Excel, or XML — or fetch it from the Apify API once the run finishes.
Zillow Search Scraper input options
| Input | Type | What it does | Default |
|---|---|---|---|
searchUrls | array | URLs of Zillow search queries. Each URL must point to a Zillow search results page; including... | see schema |
locationQueries | array | Convenience input: provide locations as strings (austin-tx, 90210, Seattle, WA). Each will be converted to a... | |
extractionMethod | string | How to enumerate listings. PAGINATION walks the /page_p/ URLs and returns up to ~820 listings per search URL —... | "PAGINATION" |
maxConcurrency | integer | Parallel requests in flight. 16 is a good balance of speed and proxy pressure; raise it for very large multi-city... | 16 |
slimOutput | boolean | Drop the bulky carouselPhotosComposable photo-srcset blob (and a few other rarely-queried fields) from each... | false |
maxItems | integer | Hard cap on the number of listings to return. Enforced exactly — the run stops on the item that reaches the cap, so... | 50 |
maxPagesPerSearch | integer | Cap on pages walked per search URL. Zillow itself caps at 20 pages (~820 listings) per region/filter combination. | 5 |
Proxy is configured through the standard proxyConfiguration object; the defaults shipped with this Actor are already tuned for the target site.
Example output
{"searchUrls": [{ "url": "https://www.zillow.com/austin-tx/" },{ "url": "https://www.zillow.com/seattle-wa/condos/" }],"locationQueries": ["90210"],"extractionMethod": "PAGINATION","maxItems": 200,"maxPagesPerSearch": 20,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
How much does it cost to scrape Zillow?
This Actor runs on pay per result pricing: $0.001 per listing ($1 per 1,000). A one-time start fee of $0.005 applies per run.
| Results | Approximate cost |
|---|---|
| 1,000 | $1.00 |
| 10,000 | $10.01 |
| 100,000 | $100.00 |
You pay for rows you actually receive, so a search that returns nothing costs nothing beyond the start fee. Every Apify account includes free monthly usage credit, so you can trial Zillow Search Scraper at no cost.
What can you build with Zillow data?
Build a market inventory feed
Pull every active listing in a metro daily and diff it to detect new listings, price cuts, and pendings the morning they happen rather than a week later.
Generate seller and investor lead lists
Filter to listings with long days-on-market or repeated price reductions — the clearest public signal of a motivated seller.
Feed an automated valuation model
zpid, coordinates, beds, baths, square footage, and price across a whole market is the training frame most AVMs start from.
Monitor rental supply and asking rents
Rental rows carry base rent ranges and unit counts, so you can track how much rental inventory a submarket is absorbing month over month.
Power a real-estate search product
Photos, status, address, and price come back structured enough to render a listings UI directly off the dataset.
Zillow scraping tips and limits
- Zillow's own search caps how deep it paginates. For full coverage of a large metro, split by ZIP code or draw several smaller map regions rather than one broad query.
- Use a filtered Zillow URL from your browser — price, beds, home type, and sold-status filters all carry through.
- Pair with Zillow Detail Scraper using the
zpidfield to enrich only the homes worth the extra cost. - Sold and off-market rows behave differently from active ones. Check
statusTypebefore treating every row as for-sale inventory.
Integrations and automation
Run Zillow Search Scraper on a schedule to keep a Zillow dataset fresh, or trigger it from your own stack through the Apify API and the official JavaScript and Python clients. Native integrations push results into Google Sheets, Slack, Airtable, Zapier, Make, GitHub, or any webhook endpoint. The Actor also works as an MCP tool, so an AI agent can call it directly.
Related scrapers
| Actor | What it does |
|---|---|
| Zillow Detail Scraper | 99+ fields per home: price history, tax history, schools, broker. |
| Redfin Property Scraper - Homes for Sale, Rent, and Sold Data | The same market on Redfin, including sold and coming-soon homes. |
| Realtor.com Property Scraper (Search + Detail) | Realtor.com listings with MLS data and price history. |
| Apartments.com Listings Scraper | Rental inventory from Apartments.com. |
Frequently asked questions
Can I scrape Zillow without getting blocked?
This Actor handles the request shaping and proxy rotation for you, and the default proxy configuration is already tuned for Zillow. Very aggressive concurrency is the usual cause of trouble, so raise maxConcurrency gradually.
How do I get full property details, not just search rows?
Take the zpid from any search row and feed it to Zillow Detail Scraper, which returns 99 to 141 fields per home including price history, tax history, and schools.
Do I need a Zillow API key?
No. Zillow Search Scraper reads publicly available Zillow pages and endpoints directly, so there is no key to obtain, no OAuth app to register, and no account to connect.
Can I export Zillow data to CSV, Excel, or Google Sheets?
Yes. Every run stores results in an Apify dataset that exports to JSON, JSONL, CSV, Excel, XML, or HTML with one click, and the Google Sheets integration writes rows straight into a spreadsheet.
Can I run Zillow Search Scraper on a schedule?
Yes. Apify schedules run the Actor hourly, daily, weekly, or on any cron expression, and webhooks can notify your systems the moment a run finishes.
Is it legal to scrape Zillow?
Scraping publicly available data is broadly lawful in the US and EU, but the answer depends on what you collect and how you use it. This Actor is built to gather public property listing information Zillow publishes publicly, including agent and broker names. Personal data carries extra obligations under GDPR and CCPA. Read Apify's guide on whether web scraping is legal and take your own legal advice for your use case.
Support and feedback
Found a bug, a missing field, or a Zillow page shape this Actor does not handle yet? Open an issue from the Issues tab on the Actor page. Feature requests and custom-scraper enquiries are welcome there too.