The Zillow Scraper collects real estate listings from Zillow — including price, address, home details, and optional contact emails. You can search by keyword and refine results using filters like price, square footage, or lot size. Results are returned in JSON, CSV, or Excel format.

This scraper job is asynchronous. You’ll receive a jobId, and can fetch results via polling or webhook delivery.

Example Request

curl --request POST \
  --url 'https://api.hasdata.com/scrapers/zillow/jobs' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <your-api-key>' \
  --data '{
    "type": "forSale",
    "keyword": "Los Angeles, CA",
    "homeTypes": "house",
    "price": { "min": 500000, "max": 1000000 },
    "beds": { "min": 3 },
    "extractEmails": true
  }'

Job Parameters

type
string
required

One of: forSale, forRent, or sold

keyword
string
required

Location, e.g. “Seattle, WA”

keywords
string

MLS #, yard, etc.

homeTypes
string

One of: all, house, townhome, multiFamily, condo, lot, apartment, manufactured

price
object

Supports min and/or max in USD

beds
object

Minimum and/or maximum number of bedrooms

baths
object

Minimum and/or maximum number of bathrooms

yearBuilt
object

Filter by year built (min/max)

lotSize
object

Filter by lot size in square feet (min/max)

squareFeet
object

Filter by interior square footage (min/max)

daysOnZillow
string

Limit results by listing age. One of: all, 1, 7, 14, 30, 90, 6m, 12m, 24m, 36m

detailedInformation
boolean

Include detailed listing information

extractEmails
boolean

Extract agents emails (+5 credits per row)

Getting Results

Webhooks

Receive real-time updates when your scraper job starts, completes, or collects data.

Results API

Use the Results API to fetch your data using the jobId, with support for polling and pagination.

Stopping a Job

Cancel an active scraper job early if it’s no longer needed or you want to save credits.