Skip to content

Zillow Detail Scraper

Try for free

Get public Zillow property details from a home URL, street address, or search.

🏠 Zillow Detail Scraper

Turn Zillow home pages into clean, structured records. Paste home URLs, street addresses, or a city to search, and get price, address, beds and baths, living area, Zestimate, photos, MLS details, and listing agent when Zillow shows one. No Zillow account and no browser to manage.

✨ Why use Zillow Detail Scraper?

  • 🏡 Rich listing records — price, status, home type, beds, baths, living area, lot size, year built, Zestimate, rent Zestimate, and a full description.
  • 📸 Photos included — a main image plus the listing photo set in several sizes.
  • 🔎 Three ways in — home URLs, search URLs, street addresses, or a location such as Greenville, SC.
  • 🏢 Agent and MLS fields — listing agent, broker, and MLS name and id when the page includes them.
  • ✅ Safe on bad input — an unreadable URL becomes a row with isValid: false, and the rest of the run finishes.
  • 💸 Cheap — $1 per 1,000 listings, plus platform usage.

🎯 Use cases

  • 📋 Portfolio checks — track current price, status, and photos for a list of homes.
  • 🗺️ Market snapshots — turn a Zillow search into a short table of listings.
  • 🤝 Agent research — collect agent and brokerage names shown on listings.
  • 📊 Valuation work — feed Zestimates, living area, and price per square foot into a spreadsheet or model.
  • 🔄 Pipelines — pass property URLs from another scraper's dataset to get full details for each home.

🚀 How to use

  1. Paste Property or search URLs, add Street addresses, or type a Location search such as Greenville, SC.
  2. Set Maximum homes (default 10).
  3. For searches, pick a Listing status: for sale, recently sold, or for rent.
  4. Click Start.
  5. Open the dataset and export it as JSON, CSV, or Excel, or read it through the API.

📥 Input

FieldTypeWhat it does
startUrlsarrayZillow home URLs (/homedetails/), search URLs, or building pages.
addressesarrayUS street addresses, for example 18 Zelma Dr, Greenville, SC 29617.
searchQueriesarrayCities or neighborhoods, as you would type them into Zillow search.
maxItemsintegerMaximum listings to return. Default 10 (0 = no limit).
propertyStatusstringFOR_SALE, RECENTLY_SOLD, or FOR_RENT, applied to location searches.
extractBuildingUnitsstringOn a building URL: disabled (one summary), all, or for_rent units, one row each.
searchResultsDatasetIdstringA dataset whose rows have propertyUrl, detailUrl, or address; they are scraped like pasted URLs.
proxyConfigurationobjectDatacenter proxy by default.
{
  "startUrls": [
    { "url": "https://www.zillow.com/homedetails/17-Zelma-Dr-Greenville-SC-29617/11026031_zpid/" }
  ],
  "maxItems": 10,
  "propertyStatus": "FOR_SALE"
}

Location search:

{ "searchQueries": ["Greenville, SC"], "maxItems": 5, "propertyStatus": "FOR_SALE" }

📤 Output

Each row is one listing. The dataset table shows address, price, beds, baths, type, status, Zestimate, and the property URL.

FieldDescription
zpid, propertyUrl, addressOrUrlFromInputZillow id, listing URL, and what you gave.
address, listingAddress, coordinatesAddress parts and latitude / longitude.
price, listingPrice, lastSoldPrice, pricePerSquareFootPrice fields.
bedrooms, bathrooms, livingArea, lotArea, yearBuilt, homeTypeProperty facts.
listingStatus, listingType, daysOnZillow, datePostedStatus and timing.
zestimate, rentZestimate, monthlyHoaFee, propertyTaxRateZillow estimates and costs when shown.
description, mainImage, listingPhotos, photoCountText and images.
agent, broker, mls, attributionInfoListing agent, broker, and MLS details when present.
resoFacts, parkingStructured property facts and parking.
isValid, scrapedAtRow status and timestamp.

Real item from a test run (trimmed):

{
  "zpid": 12345678,
  "homeType": "SINGLE_FAMILY",
  "bedrooms": 3,
  "bathrooms": 2,
  "livingArea": 1498,
  "yearBuilt": 1953,
  "zestimate": 267000,
  "rentZestimate": 1772,
  "photoCount": 27,
  "listingPrice": { "amount": 275000, "currency": "USD", "formatted": "$275,000" },
  "price": 275000,
  "address": "123 Example St, Greenville, SC 29601",
  "coordinates": { "latitude": 34.897034, "longitude": -82.44892 },
  "listingStatus": "forSale",
  "propertyUrl": "https://www.zillow.com/homedetails/123-Example-St-Greenville-SC-29601/12345678_zpid/",
  "lotArea": { "value": 0.64, "unit": "Acres", "formatted": "0.64 Acres" },
  "pricePerSquareFoot": 184,
  "agent": null,
  "mls": { "id": "1606268", "name": "Greater Greenville AOR" },
  "mainImage": {
    "thumbnail": "https://photos.zillowstatic.com/fp/0123456789abcdef0123456789abcdef-p_a.jpg",
    "hiRes": "https://photos.zillowstatic.com/fp/0123456789abcdef0123456789abcdef-p_f.jpg"
  },
  "isValid": true
}

A URL or address that cannot be found saves no row and is not charged. It is listed in the run's status message and in failedInputs of the OUTPUT record, and the rest of the run completes.

💰 Pricing

$1 per 1,000 listings, which is $0.001 per result. A result is one listing saved. Inputs that could not be read are not charged.

Worked example: 5 homes cost $0.005 in result fees. Compute and datacenter proxy traffic are billed separately at standard rates; our measured total for a 5-home search at 2048 MB was about $0.0094, including the result fees.

❓ FAQ

Is it legal to scrape Zillow? The actor reads publicly visible listing pages only. You are responsible for using the data in line with Zillow's terms and local law.

Do I need a Zillow login or my own proxy? No. Datacenter proxy is built in and is the default.

Can I pass a Zillow search URL? Yes. A city, neighborhood, or filtered search URL is expanded into home pages, up to Maximum homes.

What if a home URL is wrong? The run stays successful, saves no row for that URL and lists it under failedInputs in the OUTPUT record. Other homes in the run are still saved.

Are sold and rental listings supported? Set Listing status to recently sold or for rent for a location search. A pasted home URL is read as Zillow published it.

Why is a field empty? Zillow does not show every field on every listing, for example agent contact details or days on Zillow, so those come back as null.

⚠️ Limits

  • Public pages only. Listings behind a login are not available.
  • A search returns the first results page Zillow shows for that query (about 40 homes), so add more searches or paste home URLs for bigger jobs.
  • Price history, tax history, nearby schools, and nearby homes are not filled; those blocks are loaded by a separate request that this actor does not make. Those fields are returned empty.
  • Parcel id, tax amounts, school districts, and the long property-features list are not included.
  • If a later page fails, homes already saved stay in the dataset.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.