
Zillow Scraper
hipersoft/zillow-scraper
Scrape Zillow listings by city, ZIP or search URL: price, address, beds, baths, size, home type, days listed, Zestimate, tax value, coordinates and photo. For sale, for rent and recently sold, with price, bed and type filters.
Total users
2Monthly users
1Total runs
10Per listing scraped
$0.002Last rebuilt
Nov 4, 2026Overview
Zillow Scraper extracts property listings from Zillow by city, ZIP code or search link: price, address, beds, baths, square feet, home type, days on Zillow, Zestimate, rent Zestimate, tax value, coordinates, broker and photo. Collect homes for sale, for rent or recently sold, with price, bed, bath, size and type filters.

What does Zillow Scraper do?
Give it locations such as Chicago, IL or 60614, or paste Zillow search links, and get one clean row per listing. Export to JSON, CSV or Excel. A test run collected 1,087 unique listings across three searches in under three minutes.
What data can you scrape from Zillow?
| Data | Fields |
|---|---|
| Price | price, priceText, zestimate, rentZestimate, taxAssessedValue, priceChange |
| Location | address, street, city, state, zipcode, latitude, longitude |
| Home | beds, baths, livingAreaSqft, lotSize, lotSizeUnit, homeType |
| Listing | zpid, url, status, statusText, daysOnZillow, soldDate, brokerName, imageUrl |
| Rentals | buildingName, units (price and beds per unit type) |
Not every listing has every field. Zillow doesn't show a Zestimate on all homes, for example.
Use cases
- Real estate investing: compare asking prices with Zestimates and tax values.
- Market research: track prices and inventory by city or ZIP code.
- Comparable sales: pull recently sold homes for an area.
- Rental analysis: compare rents across neighborhoods.
- Lead lists for property services: find active listings and brokers in your area.
How to scrape Zillow
- Open Zillow Scraper.
- Add locations or Zillow search URLs.
- Choose for sale, for rent or recently sold, and any filters.
- Click Start.
- Export to JSON, CSV, Excel or XML.
Input
{
"locations": ["Seattle, WA"],
"listingType": "forSale",
"minPrice": 500000,
"maxPrice": 800000,
"minBeds": 3,
"homeTypes": ["house"],
"sort": "newest",
"maxResultsPerSearch": 40
}
| Field | Description |
|---|---|
locations |
Cities, ZIP codes or neighborhoods. |
searchUrls |
Zillow search result links. |
listingType |
forSale, forRent or sold. Applies to locations. |
maxResultsPerSearch |
Listings per search (default 200, about 800 at most). |
minPrice / maxPrice |
Price, or monthly rent for rentals. |
minBeds / minBaths / minSqft |
Minimum size. |
homeTypes |
house, townhouse, multifamily, condo, land, apartment, manufactured. |
sort |
relevant, newest, price_low, price_high, beds, baths, size, lot. |
Output
A real row from a test run, with the image link shortened.

{
"zpid": "48909161",
"url": "https://www.zillow.com/homedetails/3932-S-Cloverdale-St-Seattle-WA-98118/48909161_zpid/",
"status": "FOR_SALE",
"statusText": "Active",
"price": 598000,
"priceText": "$598,000",
"address": "3932 S Cloverdale Street, Seattle, WA 98118",
"street": "3932 S Cloverdale Street",
"city": "Seattle",
"state": "WA",
"zipcode": "98118",
"latitude": 47.526325,
"longitude": -122.282295,
"beds": 5,
"baths": 2,
"livingAreaSqft": 2320,
"lotSize": 5501.628,
"lotSizeUnit": "sqft",
"homeType": "SINGLE_FAMILY",
"daysOnZillow": null,
"zestimate": 698700,
"rentZestimate": 4139,
"taxAssessedValue": 621000,
"priceChange": null,
"soldDate": null,
"brokerName": null,
"buildingName": null,
"units": null,
"imageUrl": "https://photos.zillowstatic.com/fp/8f55a2eeea2c11a0c0352ede8…",
"source": "https://www.zillow.com/seattle-wa/",
"collectedAt": "2026-11-04T22:01:20.875995+00:00"
}
Output schema
| Field | Type | Description |
|---|---|---|
zpid |
string | Zillow property ID. |
url |
string (URL) | Listing link. |
status / statusText |
string | For sale, for rent or sold, as shown. |
price |
number | Price in USD. For rental buildings, the lowest unit price. |
priceText |
string | Price as shown. |
address, street, city, state, zipcode |
string | Location. |
latitude / longitude |
number | Coordinates. |
beds / baths |
number | Rooms. Rental buildings list these under units. |
livingAreaSqft |
number | Living area. |
lotSize / lotSizeUnit |
number / string | Lot size. |
homeType |
string | Such as SINGLE_FAMILY or CONDO. |
daysOnZillow |
integer | Days listed, when shown. |
zestimate / rentZestimate |
number | Zillow's estimates, when shown. |
taxAssessedValue |
number | Assessed value, when shown. |
priceChange |
number | Latest price change, when shown. |
soldDate |
string (date) | Sale date for sold homes. |
brokerName |
string | Listing brokerage, when shown. |
buildingName / units |
string / array | Rental buildings and their unit types. |
imageUrl |
string (URL) | Main photo. |
source |
string (URL) | The search that found it. |
collectedAt |
string (ISO date) | When the row was collected. |
Need more property data?
- Rightmove Scraper: UK property listings.
- Google Maps Scraper: local businesses around a property.
FAQ
How much does it cost? You pay per listing delivered, shown on the Pricing tab. A listing found by two searches is charged once. Set a maximum cost per run and it stops cleanly at that limit, storing only what you paid for.
How many listings can I get? Each search reaches about 800 listings. For a bigger area, split it into ZIP codes or use filters, and add each as its own search.
Can I get recently sold homes? Yes. Set Listing type to Recently sold.
Why are some fields empty? Zillow doesn't show every field on every listing. Rental buildings show unit types and prices rather than one price and bed count.
Can I connect this to other tools? Yes, through integrations on the Apify platform: Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API and webhooks.
Is it legal to scrape Zillow? It returns publicly listed information. You are responsible for how you use it, including Zillow's terms and privacy law.
Notes
Independent tool, not affiliated with Zillow. Returns only public data; you are responsible for how you use it.
Feedback
How did it go? Good or bad, a review helps other users decide and tells us what to improve. Something broken or missing? Open an issue and we'll look at it.
Input
| Field | Type | Description |
|---|---|---|
locationsLocations | array | Cities, ZIP codes or neighborhoods, one per line. Example: Chicago, IL or 60614. |
searchUrlsZillow search URLs | array | Or paste Zillow search result links. |
listingTypeListing type | string · forSale, forRent, sold | Which listings to collect from locations. Default: "forSale" |
maxResultsPerSearchMax listings per search | integer | How many listings to collect per location or URL. Each search reaches about 800. Default: 200 |
minPriceMin price | integer | Minimum price, or monthly rent for rentals (USD). |
maxPriceMax price | integer | Maximum price, or monthly rent for rentals (USD). |
minBedsMin beds | integer | Minimum bedrooms. |
minBathsMin baths | integer | Minimum bathrooms. |
minSqftMin square feet | integer | Minimum living area. |
homeTypesHome types | array | Empty keeps all. |
sortSort | string · relevant, newest, price_low, price_high, beds, baths… | Result order. Default: "relevant" |
proxyConfigurationProxy | object | Optional. Leave the default. Default: {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~zillow-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"locations": [
"Chicago, IL"
]
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/zillow-scraper").call(run_input={
"locations": [
"Chicago, IL"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/zillow-scraper').call({
"locations": [
"Chicago, IL"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Listing scraped One property listing delivered. | $0.002 | $0.001 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
CNN Fear & Greed Index Scraper
Scrape the CNN Fear & Greed Index: current market-sentiment score and rating, a full historical timeline, and all seven component indicators. Clean structured JSON, CSV or Excel for trading signals, backtesting, dashboards and alerting.
591 runs · 6 users · $0.003 / item scrapedDivar Scraper
Scrape classified ads from Divar, Iran's largest marketplace: title, price (Toman), category, city, district, images and the listing URL. Search any Iranian city with an optional keyword and export one clean row per ad as JSON, CSV or Excel. For market research, price tracking and n8n.
233 runs · 23 users · $0.003 / listing scrapedAirbnb Scraper
Search Airbnb by location and scrape listings: name, property type, price, rating, reviews, coordinates, photos, badges and link. For short-term rental, pricing and market research.
124 runs · 2 users · $0.005 / listing scrapedPropertyGuru Singapore Scraper
Scrape PropertyGuru Singapore property listings: price, beds, baths, size, address, property type, agent and URL. For property research and lead generation.
120 runs · 3 users · $0.004 / listing scrapedSingapore HDB Property Information Scraper
Export master data for every HDB block in Singapore (~13,300 blocks): address, town, year completed, max floor, total units, unit mix by flat type (sold & rental) and amenities (market/hawker, carpark, commercial, pavilion). Filter by town, street, year. Public open data, no setup.
116 runs · 1 users · $0.002 / block scrapedEdgeProp Singapore Property Scraper
Scrape EdgeProp Singapore property listings for sale and rent: price, address, beds, baths, size, PSF and URL.
116 runs · 1 users · $0.004 / listing scrapedSend the site and the fields. We build it and you get it first.