Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A Zillow scraper offering a free tool for small-scale data collection and an enterprise-grade API for large-scale, reliable property data extraction.

Notifications You must be signed in to change notification settings

luminati-io/zillow-scraper

Repository files navigation

Zillow Scraper

Promo

This repository provides two distinct methods for scraping Zillow data:

  1. A free, small-scale scraper for basic data collection
  2. An enterprise-grade API solution for large-scale data extraction

Table of Contents

Free Zillow Data Scraper

The free scraper allows you to collect property data from Zillow search pages on a small scale.

Input Requirements

Parameter Required Description
coords Yes Boundary coordinates [west, east, south, north]
pages Yes Number of pages to scrape

Implementation

To use the scraper, modify the coordinates and page count in the following code according to your location and data requirements:

# free_zillow_scraper/property_data.py
def get_search_params():
 return (
 -118.668176, # West longitude
 -118.155289, # East longitude
 33.703652, # South latitude
 34.337306, # North latitude
 5 # Number of pages to scrape
 )

Hint: Geographical coordinates can be found in the <script> tag of Zillow's search page for any location. Look for the following tag:

<script id="__NEXT_DATA__" type="application/json">

Sample Output

{
 "id": "20595672",
 "price": "1,599,900ドル",
 "zestimate": 1605500,
 "location": {
 "address": "2215 Wellington Rd, Los Angeles, CA 90016",
 "city": "Los Angeles",
 "state": "CA",
 "zip": "90016",
 "coordinates": {"lat": 34.036064, "lon": -118.33622},
 },
 "details": {
 "beds": 4,
 "baths": 3.0,
 "area_sqft": 1886,
 "lot_acres": 8577.0,
 "property_type": "SINGLE_FAMILY",
 },
 "listing": {
 "status": "House for sale",
 "days_on_zillow": 5,
 "broker": "ehomes",
 "url": "https://www.zillow.com/homedetails/2215-Wellington-Rd-Los-Angeles-CA-90016/20595672_zpid/",
 },
},

Limitations of Free Scraper

The free Zillow scraper works well for small-scale data extraction but has the following limitations:

  • Rate Limiting: Zillow blocks requests after a few scrapes.
  • IP Blocking: Frequent scraping from the same IP can lead to bans.
  • Limited Scalability: Not suitable for high-volume data collection.
  • Captcha: Zillow may present CAPTCHAs to block automated requests.
  • Honeypots: Zillow uses honeypot traps to detect and block bots.

For large-scale scraping, consider using the Zillow Scraper API described below.

Zillow Scraper API

The Bright Data Zillow Scraper API provides a scalable, reliable, and hassle-free solution for extracting large-scale Zillow data without the need to build or maintain your own infrastructure.

Key Features

  • Scalable & Reliable: Optimized for high-volume and real-time data collection.
  • Anti-Blocking: Built-in proxy rotation and CAPTCHA solving.
  • Legal Compliance: Fully GDPR and CCPA compliant.
  • Global Coverage: Access data from any region or language.
  • Real-Time Data: Fresh data with minimal latency.
  • Advanced Filtering: Customize data extraction with precise filters.
  • Pay-as-You-Go: Only pay for successful responses.
  • Free Trial: Includes 20 free API calls to get started.
  • Dedicated Support: 24/7 technical assistance.
  • No-Code Option: Scrape Zillow data via API or no-code scrapers.

Quick Start Guide

  • Sign Up: Create a Bright Data account.
  • Get API Token: Obtain your API key from the dashboard.
  • Choose Endpoint: Select from the available API endpoints below.

1. Zillow Property Details by URL

Collect property details by providing the property URL.

zillow-properties-listing-information

Input Parameters

Parameter Required Description
url Yes Zillow property URL

Example Request

Python Code:

properties = [
 {"url": "https://www.zillow.com/homedetails/73-Beverly-Park-Ln-Beverly-Hills-CA-90210/20533547_zpid/"},
 {"url": "https://www.zillow.com/homedetails/1945-N-Edgemont-St-Los-Angeles-CA-90027/20809871_zpid/"}
]

πŸ‘‰ Complete Python script: zillow_properties.py

cURL Command:

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
 -H "Content-Type: application/json" \
 -d '[
 {
 "url": "https://www.zillow.com/homedetails/2506-Gordon-Cir-South-Bend-IN-46635/77050198_zpid/?t=for_sale"
 }
 ]' \
 "https://api.brightdata.com/datasets/v3/trigger?dataset_id=gd_lfqkr8wm13ixtbd8f5&include_errors=true"

Response Schema

{
 "property_overview": {
 "address": "73 Beverly Park Ln, Beverly Hills, CA 90210",
 "price": "89,900,000ドル",
 "status": "FOR_SALE",
 "living_area": "28,500 sq ft",
 "lot_size": "2.68 acres",
 "bedrooms": 9,
 "bathrooms": 22,
 },
 "key_features": {
 "highlights": [
 "85-foot infinity lap pool",
 "Two kitchens (including commercial-grade)",
 "5,000 sq ft primary suite",
 "Screening room",
 "Gated community with guard",
 ],
 "views": ["City", "Ocean", "Mountain", "Canyon"],
 },
 "financial": {
 "last_sold": "2021εΉ΄04月08ζ—₯ for 28,500,000ドル",
 "property_tax_rate": "1.18%",
 "monthly_hoa": "6,216ドル",
 },
}

πŸ‘‰ This is a partial response. See the full JSON response for complete property details.

2. Zillow Properties Listing by Filters

Search properties using location and other criteria.

zillow-properties-listing-by-input

πŸ’‘ Note: Some properties may have multiple units, which can result in several records. To limit results, use the Limit per input.

Input Parameters

Parameter Required Description
location Yes Can be a zip code, city, or state.
listingCategory Yes Options: Sold, House for rent, House for sale.
HomeType Yes Home type from Zillow (e.g., Houses, Apartments, Townhomes).

Example Request

Python Code:

filters = [
 {"location": "92027", "listingCategory": "Sold", "HomeType": "Houses"},
 {"location": "New York", "listingCategory": "House for rent", "HomeType": "Condos"},
 {"location": "Colorado", "listingCategory": "", "HomeType": ""},
]

πŸ‘‰ Complete Python script: zillow_discovered_properties.py

cURL Command:

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
 -H "Content-Type: application/json" \
 -d '[{"location": "New York", "listingCategory": "House for rent", "HomeType": "Houses"},
 {"location": "02118", "listingCategory": "House for sale", "HomeType": "Condos"},
 {"location": "Colorado", "listingCategory": "", "HomeType": ""}]' \
 "https://api.brightdata.com/datasets/v3/trigger?dataset_id=gd_lfqkr8wm13ixtbd8f5&include_errors=true&type=discover_new&discover_by=input_filters"

Response Schema

{
 "address": {
 "streetAddress": "569 Hayward Pl",
 "city": "Escondido",
 "state": "CA",
 "zipcode": "92027",
 },
 "homeStatus": "SOLD",
 "bedrooms": 4,
 "bathrooms": 2,
 "livingArea": 1446,
 "livingAreaUnits": "Square Feet",
 "lotSize": 5933,
 "lotAreaUnits": "Square Feet",
 "homeType": "SINGLE_FAMILY",
 "yearBuilt": 1987,
 "lastSoldPrice": 689000,
 "dateSoldString": "2022εΉ΄08月11ζ—₯",
 "zestimate": 818100,
 "rentZestimate": 3752,
 "schools": [
 {
 "name": "Glen View Elementary School",
 "distance": 0.6,
 "rating": 5,
 "grades": "K-5",
 },
 {
 "name": "Hidden Valley Middle School",
 "distance": 1.2,
 "rating": 5,
 "grades": "6-8",
 },
 {
 "name": "Orange Glen High School",
 "distance": 1.4,
 "rating": 5,
 "grades": "9-12",
 },
 ],
 "url": "https://www.zillow.com/homedetails/569-Hayward-Pl-Escondido-CA-92027/16696746_zpid/",
}

πŸ‘‰ This is a partial response. See the full JSON response for complete property details.

3. Zillow Properties Listing by URL

Search for properties directly using Zillow search page URLs.

zillow-properties-listing-by-url

πŸ’‘ Note: Some properties may have multiple units, which can result in several records. To limit results, use the Limit per input.

Input Parameters:

Parameter Required Description
url Yes Direct Zillow search URL with complete search parameters

Example Request

Python Code:

urls = [
 {"url": "https://www.zillow.com/south-bend-in/?searchQueryState=%7B%22pagination%22%3A..."},
 {"url": "https://www.zillow.com/new-york-ny/rentals/?searchQueryState=%7B%22isMapVisible%22%3A..."},
 {"url": "https://www.zillow.com/sands-point-ny/rentals/?searchQueryState=%7B%22isMapVisible%22%3A..."},
]

πŸ‘‰ Complete Python script: zillow_discovered_properties_by_url.py

cURL Command:

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
 -H "Content-Type: application/json" \
 -d '[{"url": "https://www.zillow.com/south-bend-in/?searchQueryState=%7B%22pagination%22%3A..."}]' \
 "https://api.brightdata.com/datasets/v3/trigger?dataset_id=gd_lfqkr8wm13ixtbd8f5&include_errors=true&type=discover_new&discover_by=url"

Response Schema:

{
 "zpid": 77029580,
 "address": {
 "streetAddress": "1937 Churchill Dr",
 "city": "South Bend",
 "state": "IN",
 "zipcode": "46617",
 },
 "price": 435000,
 "bedrooms": 4,
 "bathrooms": 4,
 "livingArea": 3197,
 "lotAreaValue": 0.46,
 "lotAreaUnits": "Acres",
 "yearBuilt": 1968,
 "homeStatus": "FOR_SALE",
 "zestimate": 420400,
 "lastSoldPrice": 134000,
 "dateSold": "2013εΉ΄05月20ζ—₯",
 "schools": [
 {"name": "McKinley Elementary School", "rating": 4},
 {"name": "Edison Intermediate Center", "rating": 2},
 {"name": "Rise Up Academy At Eggleston", "rating": 1},
 ],
 "mortgageRates": {"thirtyYearFixedRate": 6.536},
 "listingProvidedBy": {"name": "Eric M Bomkamp", "phoneNumber": "574-360-2569"},
 "url": "https://www.zillow.com/homedetails/1937-Churchill-Dr-South-Bend-IN-46617/77029580_zpid/",
}

πŸ‘‰ This is a partial response. See the full JSON response for complete property details.

4. Zillow Price History

Collect pricing history for a property.

zillow-price-history

Input Parameters

Parameter Required Description
url Yes Zillow property URL.

Example Request

Python Code:

urls = [
 {"url": "https://www.zillow.com/homedetails/8305-Blue-Heron-Way-Raleigh-NC-27615/6468808_zpid/"},
 {"url": "https://www.zillow.com/homedetails/930-3rd-St-SE-Hickory-NC-28602/71557289_zpid/"},
]

πŸ‘‰ Complete Python script: zillow_price_history.py

cURL Command:

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
 -H "Content-Type: application/json" \
 -d '[{"url": "https://www.zillow.com/homedetails/8305-Blue-Heron-Way-Raleigh-NC-27615/6468808_zpid/"},
 {"url": "https://www.zillow.com/homedetails/930-3rd-St-SE-Hickory-NC-28602/71557289_zpid/"}]' \
 "https://api.brightdata.com/datasets/v3/trigger?dataset_id=gd_lxu1cz9r88uiqsosl&include_errors=true"

Response Schema:

{
 "url": "https://www.zillow.com/homedetails/8305-Blue-Heron-Way-Raleigh-NC-27615/6468808_zpid/",
 "zpid": "6468808",
 "date": "2020εΉ΄11月13ζ—₯T00:00:00.000Z",
 "event": "Sold",
 "price": 440000,
 "price_per_squarefoot": 127,
 "source": "Doorify MLS",
 "timestamp": "2025εΉ΄02月09ζ—₯T16:56:42.074Z",
}

πŸ‘‰ This is a partial response. See the full JSON response for complete property details.

No-Code Scraper Option

Bright Data No-Code Scraper offers a user-friendly way to collect Zillow data without programming.

  • Configure scrapers in minutes.
  • Automate the entire data collection process.
  • Download results directly in multiple formats.

For detailed instructions, visit our Getting Started guide.

Additional Options

Fine-tune your data collection with these parameters:

Parameter Type Description Example
limit integer Max results per input limit=10
include_errors boolean Get error reports for troubleshooting include_errors=true
notify url Webhook notification URL to be notified upon completion notify=https://notify-me.com/
format enum Output format (e.g., JSON, NDJSON, JSONL, CSV) format=json

πŸ’‘ Pro Tip: You can deliver data to an external storage or a webhook.

Support & Resources

About

A Zillow scraper offering a free tool for small-scale data collection and an enterprise-grade API for large-scale, reliable property data extraction.

Topics

Resources

Stars

Watchers

Forks

Languages

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /