Zillow Search Scraper
Pricing
$19.99/month + usage
Zillow Search Scraper
π Zillow Search Scraper extracts data from Zillow search results β listings, prices, beds/baths, addresses, for sale/rent, photos & URLs. π Supports cities, ZIPs, filters & pagination. π Export CSV/JSON for comps, market analysis, lead gen & research. β‘ Fast & reliable.
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
Scraply
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Zillow Search Scraper
Zillow Search Scraper is a fast, reliable Zillow scraper that collects structured property data from Zillow search results at scale. It solves the challenge of extracting clean Zillow listing data (prices, beds/baths, addresses, images, links, and more) by combining an API-based dynamic zoom method with an HTML pagination fallback β ideal for developers, analysts, marketers, and researchers who need a Zillow search results scraper, Zillow listing scraper, or Zillow property data extractor for repeatable workflows. Built for automation on Apify, it enables bulk Zillow data scraping software operations and a practical Zillow API alternative for exporting insights to CSV or JSON.
What data / output can you get?
Below are key fields the actor pushes to the dataset as it scrapes. Values reflect the real JSON keys produced by the actor.
| Data type | Description | Example value |
|---|---|---|
| zpid | Zillow Property ID (string) | "55826232" |
| price | Formatted price string | "$1,000,000" |
| unformattedPrice | Numeric price parsed from price | 1000000 |
| address | Full address | "3810 Hawthorne Ave, Dallas, TX 75219" |
| addressStreet | Street address only | "3810 Hawthorne Ave" |
| addressCity | City | "Dallas" |
| addressState | State abbreviation | "TX" |
| addressZipcode | ZIP code | "75219" |
| beds | Number of bedrooms | 3 |
| baths | Number of bathrooms | 3 |
| area | Living area (sqft) | 2622 |
| detailUrl | Link to property detail page | "https://www.zillow.com/homedetails/β¦/" |
| statusType | Listing status type | "FOR_SALE" |
| statusText | Human-readable status | "House for sale" |
| imgSrc | Primary image URL | "https://photos.zillowstatic.com/fp/abc123-p_e.jpg" |
| latLong | Geographic coordinates | {"latitude": 32.822216, "longitude": -96.811325} |
| zestimate | Zillowβs estimated value (if present) | 994000 |
Bonus metadata pushed to the dataset includes fields like rawHomeStatusCd, marketingStatusSimplifiedCd, hasImage, countryCurrency, isZillowOwned, contentType, hdpData, and carouselPhotosComposable (with photo keys), plus context such as foundFromSearchUrl and zoomQuadrantSequence. Export your dataset to CSV or JSON directly from Apify.
Key features
-
β‘ Bold-scale extraction modes
- PAGINATION_WITH_DYNAMIC_ZOOM_INCREASE dynamically splits map bounds to go beyond typical pagination caps on large result sets, acting as a robust Zillow homes for sale scraper or Zillow rental listings scraper.
- PAGINATION_WITHOUT_ZOOMING_IN parses HTML pagination for reliability when API-based calls arenβt available.
- MAP_MARKERS mode safely caps results (roughly up to 500 per search URL).
-
π§ Automatic proxy fallback
- Starts without a proxy and automatically falls back to residential proxies with up to 3 retries, then locks the working proxy for stability β boosting success for your Zillow web scraping tool.
-
πΎ Live dataset streaming
- Results are pushed to the Apify dataset in real time during pagination, minimizing data loss if a run stops unexpectedly.
-
π¦ Bulk URL and keyword support
- Accepts multiple Zillow search URLs or keywords/locations (normalized into Zillow search URLs) to scrape Zillow listings at scale β perfect for a Zillow bulk data scraper workflow.
-
π Duplicate-safe collection
- De-duplicates by zpid/id within each run to keep your Zillow data export tool clean and consistent.
-
π§βπ» Developer-friendly
- Clean JSON output with stable field names, ready for pipelines and programmatic use. Advanced users can pass sortOrder via API to adjust results when full URLs contain searchQueryState.
-
ποΈ Production-ready on Apify
- Built with robust retry/backoff and error handling for reliable, unattended runs β a practical Zillow API alternative for teams.
How to use Zillow Search Scraper - step by step
- Create or log in to your Apify account.
- Open the Zillow Search Scraper actor in Apify.
- In the INPUT tab, paste one or more values into searchUrls:
- Full Zillow search URLs including searchQueryState are recommended for the API-based dynamic zoom method.
- You may also enter keywords/locations like βdallas-txβ or βnew-york-nyβ (these are normalized into https://www.zillow.com/{keyword}/).
- Choose Items extraction method:
- PAGINATION_WITH_DYNAMIC_ZOOM_INCREASE (default) for large result sets.
- PAGINATION_WITHOUT_ZOOMING_IN for HTML pagination.
- MAP_MARKERS for a map-marker-only approach (capped ~500).
- Set Maximum Items (1β10,000) to control how many listings to collect per search URL.
- Configure Proxy Configuration if needed (defaults to no proxy; the actor can automatically fall back to residential proxies on blocks).
- Click Start to run the actor. Watch logs for progress and saved item counts.
- View your results in the OUTPUT dataset and export to CSV or JSON.
Pro Tip: For the most control over search filters and sorting, use full Zillow search URLs that include searchQueryState. Advanced users can pass sortOrder via API input (honored if present).
Use cases
| Use case name | Description |
|---|---|
| Real estate market research | Aggregate listings and pricing to analyze neighborhood or city-level trends using a dependable Zillow search scraper. |
| Investment property discovery | Filter and export candidates to evaluate potential ROI at scale with a Zillow property details scraper. |
| Competitive analysis for agents | Track active inventory and statusText changes as part of a Zillow lead scraper workflow. |
| Pricing and comps analysis | Build datasets of unformattedPrice and zestimate for comparables and data-driven pricing. |
| Rental market monitoring | Use statusType and address fields to power a Zillow rental listings scraper dataset for ongoing analysis. |
| Data pipeline ingestion (API) | Feed structured JSON output directly into ETL/data warehouses as a Zillow data scraping software building block. |
| Bulk territory scans | Run multiple searchUrls in one job to automate regional coverage with a Zillow bulk data scraper. |
| Academic and policy research | Export standardized housing indicators for studies, leveraging a Zillow data export tool in CSV/JSON. |
Why choose Zillow Search Scraper?
Zillow Search Scraper is engineered for precision, automation, and repeatable data operations on Apify.
- β Dynamic zoom pagination to handle large result sets beyond typical limits.
- β Reliable HTML pagination fallback when API-based retrieval isnβt available.
- β Live dataset writes to reduce data loss risk mid-run.
- β Bulk-friendly inputs for multi-URL/keyword jobs.
- β Developer-ready JSON output with stable keys for pipelines.
- β No login required β scrapes publicly available search result data.
- β Automatic proxy fallback with residential proxies and retries for higher success rates.
Compared to browser extensions or ad-hoc tools, this production-grade Zillow web scraping tool provides stability, scale, and structured outputs you can trust for workflows and automation.
Is it legal / ethical to use Zillow Search Scraper?
Yes β when used responsibly. This actor extracts data from publicly available Zillow search result pages and does not access private or authenticated content.
Guidelines for responsible use:
- Only collect publicly available information.
- Respect Zillowβs terms of service and applicable rate limits.
- Ensure your use complies with relevant laws and regulations (e.g., GDPR, CCPA).
- Avoid spam and misuse of contact or address information.
- Consult your legal team for edge cases and jurisdiction-specific guidance.
Input parameters & output format
Example JSON input
{"searchUrls": ["https://www.zillow.com/dallas-tx/?category=SEMANTIC&searchQueryState=%7B%22isMapVisible%22%3Atrue%2C%22mapBounds%22%3A%7B%22north%22%3A33.10483509834637%2C%22south%22%3A32.53008985410089%2C%22east%22%3A-96.3544578671875%2C%22west%22%3A-97.2004051328125%7D%2C%22filterState%22%3A%7B%22sort%22%3A%7B%22value%22%3A%22globalrelevanceex%22%7D%7D%2C%22isListVisible%22%3Atrue%2C%22usersSearchTerm%22%3A%22Dallas%2C%20TX%22%2C%22category%22%3A%22cat1%22%2C%22regionSelection%22%3A%5B%7B%22regionId%22%3A38128%2C%22regionType%22%3A6%7D%5D%7D"],"extractionMethod": "PAGINATION_WITH_DYNAMIC_ZOOM_INCREASE","maxItems": 20,"proxyConfiguration": {"useApifyProxy": false}}
Parameter reference
- searchUrls (array, required): List of Zillow search URLs (full URLs with searchQueryState) or keywords/locations to search. Supports bulk input. Default: none (must be provided).
- extractionMethod (string, optional): One of "PAGINATION_WITH_DYNAMIC_ZOOM_INCREASE", "PAGINATION_WITHOUT_ZOOMING_IN", "MAP_MARKERS". Default: "PAGINATION_WITH_DYNAMIC_ZOOM_INCREASE".
- maxItems (integer, optional): Maximum number of property listings to scrape (1β10000). Default: 20.
- proxyConfiguration (object, optional): Proxy settings. By default, requests are sent without proxy; if blocked, the actor can automatically fall back to residential proxies with retries. Default: {"useApifyProxy": false}.
Advanced (via API): If you include sortOrder in the input, it will be applied to URLs that contain searchQueryState. The actor also honors an internal delay setting if provided via API.
Example JSON output (one listing)
{"zpid": "55826232","palsId": null,"id": "55826232","rawHomeStatusCd": "for_sale","marketingStatusSimplifiedCd": "for_sale","providerListingId": "*APID55826232*","imgSrc": "https://photos.zillowstatic.com/fp/abc123-p_e.jpg","hasImage": true,"detailUrl": "https://www.zillow.com/homedetails/3810-Hawthorne-Ave-Dallas-TX-75219/55826232_zpid/","statusType": "FOR_SALE","statusText": "House for sale","countryCurrency": "$","price": "$1,000,000","unformattedPrice": 1000000,"address": "3810 Hawthorne Ave, Dallas, TX 75219","addressStreet": "3810 Hawthorne Ave","addressCity": "Dallas","addressState": "TX","addressZipcode": "75219","isUndisclosedAddress": false,"streetViewURL": null,"streetViewMetadataURL": null,"shouldShowRequestOnPrice": false,"beds": 3,"baths": 3,"area": 2622,"latLong": {"latitude": 32.822216,"longitude": -96.811325},"isZillowOwned": false,"flexFieldText": null,"contentType": "ForSale","hdpData": {},"isSaved": false,"isUserClaimingOwner": false,"isUserConfirmedClaim": false,"pgapt": null,"sgapt": null,"zestimate": 994000,"shouldShowZestimateAsPrice": false,"has3DModel": false,"hasVideo": false,"isHomeRec": false,"hasAdditionalAttributions": false,"isFeaturedListing": false,"isShowcaseListing": false,"list": true,"relaxed": false,"carouselPhotosComposable": {"baseUrl": "https://photos.zillowstatic.com/fp/{photoKey}-p_e.jpg","communityBaseUrl": null,"photoData": [{ "photoKey": "abc123" }],"communityPhotoData": null,"isStaticUrls": false},"isPaidBuilderNewConstruction": false,"foundOnSearchPage": 1,"foundFromSearchUrl": "https://www.zillow.com/dallas-tx/?category=SEMANTIC&searchQueryState=β¦","zoomQuadrantSequence": []}
Note: Some fields may be null or absent depending on Zillowβs public data for each listing. The actor normalizes both listResults and mapResults entries.
FAQ
Which extraction method should I choose?
For most large searches, use PAGINATION_WITH_DYNAMIC_ZOOM_INCREASE to split the map into smaller quadrants and collect more results beyond typical caps. If your input is a keyword/region without searchQueryState, the actor will use the HTML pagination path (PAGINATION_WITHOUT_ZOOMING_IN) automatically.
Can I scrape multiple locations or queries at once?
Yes. Provide multiple entries in searchUrls (full Zillow URLs or keywords like βdallas-txβ), and the actor will process each in sequence, collecting up to maxItems per URL.
How many results can I collect per run?
You control this with maxItems (1β10,000). PAGINATION_WITH_DYNAMIC_ZOOM_INCREASE helps go beyond typical ~820 caps for a single search URL. MAP_MARKERS mode is limited to roughly 500 results per search URL.
Do I need to log in or provide cookies?
No. The actor scrapes publicly available Zillow search results without authentication, making it a safe Zillow API alternative for public data.
How does the proxy fallback work?
The actor starts with direct requests. If it encounters blocks (e.g., 403/429), it automatically falls back to residential proxies and retries up to 3 times, then locks the working proxy for the rest of the run to maintain stability.
What data fields are included in the output?
Each item includes identifiers and listing details such as zpid, price, unformattedPrice, address components (street/city/state/ZIP), beds, baths, area, detailUrl, statusType/statusText, imgSrc, latLong, zestimate, and more metadata like rawHomeStatusCd and carouselPhotosComposable.
Can I control the sort order of results?
Yes. If your Zillow URL contains searchQueryState with sort, that order is used. Advanced users can pass sortOrder in the input via API; the actor will apply it to eligible URLs before scraping.
How do I export results?
Open the runβs dataset in Apify and export to CSV or JSON. This makes it easy to build pipelines with your Zillow data export tool.
Closing CTA / Final thoughts
Zillow Search Scraper is built for structured, scalable extraction of Zillow search results. With dynamic zoom pagination, HTML fallback, live dataset streaming, and automatic proxy handling, itβs a dependable Zillow scraper for marketers, developers, analysts, and researchers.
Run bulk jobs with multiple searchUrls, export clean JSON/CSV, and integrate results into your workflows. Developers can tap into Apifyβs API and datasets to automate pipelines end to end. Start extracting smarter real estate insights with a production-ready Zillow search scraper today.