
Zillow Search Scraper
7 days trial then $20.00/month - No credit card required now

Zillow Search Scraper
7 days trial then $20.00/month - No credit card required now
Zillow Search Scraper Scrapes Zillow property listings by location. Supports For Sale, For Rent, and Sold searches. Inputs: - query: Location ("New York, NY") - searchType: "For Sale", "For Rent", or "Sold" Outputs property data in JSON including price, address, beds/baths, status, and listing ID.
This Apify Actor scrapes property listings from Zillow based on a location search query. It supports searching properties that are For Sale, For Rent, or have been Sold.
Features
- Search properties by location query (e.g. city names, addresses)
- Filter by listing type (For Sale, For Rent, Sold)
- Get detailed property information
- Handles pagination automatically
- Robust error handling and retry mechanisms
- Bypasses Zillow's anti-scraping protections
Installation
Prerequisites
- Python 3.9+
- Apify CLI (optional, for local development)
Local Setup
- Clone this repository
- Create a virtual environment:
1python -m venv .venv 2source .venv/bin/activate # On Windows: .venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
Deployment to Apify
- Log in to your Apify account
- Create a new Actor
- Deploy this code to the Actor
- Configure the Actor's input
Input Parameters
The Actor accepts the following input parameters:
Parameter | Type | Description | Default |
---|---|---|---|
query | String | Location to search for (e.g. "New York, NY") | "New York, NY" |
searchType | String | Type of property search ("For Sale", "For Rent", "Sold") | "For Sale" |
Output
The Actor outputs JSON objects containing property listing data with fields like:
- Price
- Address
- Property details (beds, baths, sqft)
- Listing status
- Zillow listing ID
- Additional property information
Note: The exact data fields available may vary depending on the listing type and what information Zillow provides.
Usage
Running Locally
1# Activate virtual environment 2source .venv/bin/activate # On Windows: .venv\Scripts\activate 3 4# Run the Actor locally 5apify run 6 7# Or run directly with Python 8python -m src
API Usage Example
1const Apify = require('apify'); 2 3Apify.main(async () => { 4 const input = { 5 query: "San Francisco, CA", 6 searchType: "For Rent" 7 }; 8 9 const client = Apify.newClient(); 10 const run = await client.actor("your-username/zillow-search-scraper").call(input); 11 12 // Process results 13 const dataset = await client.dataset(run.defaultDatasetId).listItems(); 14 console.log(`Found ${dataset.items.length} listings`); 15});
Code Structure
src/main.py
- Main entry point and orchestration logicsrc/zillow.py
- Zillow API client implementationsrc/pxutils.py
- Utilities for handling PerimeterX protectionsrc/__main__.py
- Script entry point
Limitations
- Zillow limits search results to 1000 listings per search
- Some listing details may be incomplete depending on Zillow's data availability
- Rate limiting may occur with excessive usage
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgements
Actor Metrics
2 monthly users
-
1 bookmark
>99% runs succeeded
Created in Feb 2025
Modified 2 days ago