Zillow Property Data Scraper avatar

Zillow Property Data Scraper

Pricing

$25.00/month + usage

Go to Apify Store
Zillow Property Data Scraper

Zillow Property Data Scraper

Scrape Zillow listings into structured data: price, beds/baths, Zestimate, rent estimate, days on Zillow, photos, agent & MLS info + 50 more fields. Paste any search URL, or just pick a location and set filters like on Zillow. Fast API-based scraping. Free trial.

Pricing

$25.00/month + usage

Rating

5.0

(28)

Developer

ВAH

ВAH

Maintained by Community

Actor stats

45

Bookmarked

134

Total users

1

Monthly active users

24 minutes ago

Last modified

Share

Zillow Property Data Scraper turns any Zillow search page into a clean, structured feed of every listing on it — 57 fields per home, from a plain search URL. Rated ⭐ 4.98 by users.

What does Zillow Property Data Scraper do?

Zillow Property Data Scraper extracts every listing from a Zillow search or filtered results page. It works as an unofficial Zillow API alternative: paste any search URL — for sale, for rent, sold, or a filtered search — and get back structured JSON with price, beds/baths, Zestimate® & Rent Zestimate®, home type, days on Zillow, lot size, tax value, the full photo gallery, agent & MLS info, and more for each listing.

It paginates automatically and uses direct API-style scraping — no browser — so runs are fast and cheap. Pair it with the Zillow Property Details Scraper to then pull deep details (price/tax history, schools, comparable homes) for any listing you find here.

Why use Zillow Property Data Scraper?

  • No URL needed — just type a location ("Miami, FL") and set filters right in the input form: listing type, price, beds & baths, home type, square feet, year built, days on Zillow, keywords, sort — the same filters as on zillow.com. (Pasting search URLs still works too.)
  • Any search page — for sale, for rent, sold, new construction, or any filtered search URL (with searchQueryState).
  • 57 fields per listing — core facts promoted out of Zillow's nested blob so you don't have to dig; the full raw home_info is kept too.
  • Full photo gallery — not just the cover image: every photo URL for each listing is reconstructed.
  • Agent & MLS info — listing agent (with license # where available) and MLS source, useful for lead-gen and de-duplication.
  • Apartment buildings handled — rental buildings return unit-level rents, availability, fees, and a contact phone.
  • maxItems cap — control exactly how many listings you collect from each search URL (and your cost).
  • Fast, API-based — no headless browser; fault-tolerant (one bad page never kills the run).
FeatureThis ActorTypical alternatives
Search by location + filters (no URL)❌ URL only
Fields per listing57, incl. Zestimate/tax/lot10–30
Full photo gallery✅ every photoUsually cover only
Agent + MLS infoRarely
Rental building details (units/rents/fees)Rarely
MethodDirect API (fast)Often browser-based

Use cases: market research · lead generation for agents/investors · price & inventory monitoring · building an MLS-style dataset · feeding a valuation model.

What data can you extract from Zillow?

FieldTypeDescription
zillow_idstringZillow property ID (ZPID). Rental buildings have no numeric ZPID — Zillow keys them as "lat--long" (e.g. 25.768639--80.198494), kept as-is
status_type / statusstringFOR_SALE/FOR_RENT/SOLD + page text ("House for sale")
price / price_valuestring/numberDisplay price and numeric price
sold_price / date_soldstringSale price and date (sold listings)
bedrooms / bathrooms / living_areanumberCore home facts
lot_area_value / lot_area_unitnumber/stringLot size
home_type / home_statusstringSINGLE_FAMILY / CONDO…, FOR_SALE / SOLD…
zestimate / rent_zestimatenumberZillow's value and rent estimates
tax_assessed_valuenumberTax-assessed value
days_on_zillow / time_on_zillownumberTime on market
price_change / price_reduction / date_price_changedmixedRecent price cut info
marketing_status / listing_sub_typemixed"For Sale by Agent"; FSBA/FSBO/newHome/comingSoon/openHouse flags
new_construction_type / builder_namestringNew-construction listings
open_house / open_house_start / open_house_endstringOpen-house schedule
address / street / city / state / zipcodestringFull address parts
latitude / longitudenumberCoordinates
broker_name / listing_agent / mls_infostringBroker, agent (+license # in some states), MLS source
provider_listing_idstringListing provider ID — the MLS number for new-construction listings, the rental listing ID for rentals
image / photosstring/arrayCover image + full photo gallery URLs
building_name / units / min_rent / max_rent / available_units / monthly_fee_min / monthly_fee_max / contact_phonemixedRental-building fields
home_infoobjectFull raw home_info blob (all remaining fields)

How to scrape Zillow search results

  1. Open the Actor on Apify Store and click Try for free.
  2. Choose your input — either paste search URLs (any https://www.zillow.com/homes/... page), or type locations and set filters (listing type, price, beds & baths, home type, and more) right in the form — no URL required.
  3. Set maxItems (optional) — cap how many listings to collect from each URL or location.
  4. Click Start — the Actor paginates through the results automatically.
  5. Export as JSON, CSV, Excel, XML, or via API / integrations.

How much does it cost to scrape Zillow?

See the Pricing tab for current rates — every plan includes a free trial. Because this Actor scrapes Zillow's data directly instead of rendering pages in a browser, runs finish quickly and platform usage stays minimal. Use maxItems to cap cost precisely, and schedule it to monitor a market over time.

Input

Option 1 — paste search URLs (if provided, the filter options are ignored):

ParameterTypeDescription
searchLinksarrayOne or more Zillow search / listing page URLs. Filtered URLs (with searchQueryState) work too.

Option 2 — build a search with filters, exactly like on zillow.com:

ParameterTypeDescription
locationsarrayAddress, neighborhood, city, or ZIP — same as Zillow's search box (e.g. "Miami, FL", "90210").
listingTypeselectFor sale (default) / For rent / Sold.
priceMin / priceMaxintegerPrice range in USD. For rentals this is the monthly rent.
bedroomsMin / bathroomsMinselectAny / 1+ / 2+ … — same options as Zillow's "Beds & baths".
homeTypesmulti-selectHouses / Townhomes / Multi-family / Condos/Co-ops / Lots/Land / Apartments / Manufactured. All selected by default.
squareFeetMin/Max, lotSizeMin/Max, yearBuiltMin/MaxintegerSame as Zillow's Filters panel (lot size in sqft).
daysOnZillowselectAny / 1 day / 7 / 14 / 30 / 90 days / 6–36 months — only recently posted listings.
mustHaveOpenHouse / mustHave3DTourbooleanSame as Zillow's Tours filters.
keywordsstring"MLS #, yard, etc." — matches words in listing descriptions.
sortByselectHomes for You (default) / Newest / Price / Bedrooms / Bathrooms / Square Feet / Lot Size.

Both options:

ParameterTypeDescription
maxItemsintegerOptional. Max listings collected from each search URL or location. Empty = scrape everything (up to ~20 pages / ~800 listings per search, a Zillow-side limit).
{
"locations": ["Miami, FL"],
"listingType": "forSale",
"priceMax": 600000,
"bedroomsMin": "3",
"daysOnZillow": "30",
"sortBy": "days",
"maxItems": 200
}

Output

One dataset item per listing. Real example (for-sale home, arrays truncated with ...):

{
"search_term": "https://www.zillow.com/homes/for_sale/Greenville, SC/",
"address": "26 Macdee Way, Greenville, SC 29607",
"status_type": "FOR_SALE",
"status": "House for sale",
"price": "$515,000",
"price_value": 515000,
"sold_price": "",
"date_sold": "",
"bedrooms": 4,
"bathrooms": 3,
"living_area": 2400,
"lot_area_value": 9147.6,
"lot_area_unit": "sqft",
"home_type": "SINGLE_FAMILY",
"home_status": "FOR_SALE",
"zestimate": 503400,
"rent_zestimate": 2800,
"tax_assessed_value": 285000,
"days_on_zillow": 1,
"time_on_zillow": 86400000,
"marketing_status": "For Sale by Agent",
"price_change": "", // filled only when the price recently changed
"price_reduction": "",
"listing_sub_type": { "is_FSBA": true },
"street": "26 Macdee Way",
"city": "Greenville",
"state": "SC",
"zipcode": "29607",
"latitude": 34.79,
"longitude": -82.33,
"zillow_id": "12345678",
"detail_url": "https://www.zillow.com/homedetails/26-Macdee-Way-Greenville-SC-29607/12345678_zpid/",
"broker_name": "Example Realty",
"mls_info": "", // "Listing provided by X MLS" in some regions
"listing_agent": "Jennifer Winton", // agent name; adds "DRE # ..." in CA
"provider_listing_id": "30031448", // MLS number (new construction) / rental listing ID
"has_3d_model": true,
"has_video": false,
"image": "https://photos.zillowstatic.com/fp/....jpg",
"photos": [
"https://photos.zillowstatic.com/fp/<key1>-p_e.jpg",
"https://photos.zillowstatic.com/fp/<key2>-p_e.jpg"
// ... full gallery, ~39 photos
],
"home_info": { "zpid": 12345678, "homeType": "SINGLE_FAMILY", "priceForHDP": 515000 /* ... all raw fields */ }
}

Rental apartment buildings return building-level fields instead:

{
"status_type": "FOR_RENT",
"zillow_id": "30.2653--97.7112", // buildings have no numeric ZPID — Zillow keys them by "lat--long"
"building_name": "Cabbage Row Apartments",
"address": "... Austin, TX",
"units": [ { "price": "$1,326+", "beds": "1", "roomForRent": false } /* ... */ ],
"min_rent": 1188,
"max_rent": 1709,
"available_units": 107,
"contact_phone": "(512) 649-6511",
"photos": [ "https://photos.zillowstatic.com/fp/....jpg" ]
// beds/baths/zestimate are empty for buildings — Zillow serves those per-unit, not per-building
}

Tips and known limitations

  • Pages per search: Zillow caps a search at ~20 pages (~800 listings). To get more, split your area into smaller searches (by city, ZIP, or price band) and pass multiple searchLinks.
  • Rentals are buildings: for-rent searches mostly return apartment buildings, so per-home fields (beds/baths/zestimate) are empty — use units, min_rent/max_rent, available_units instead. Buildings also have no numeric ZPID: zillow_id holds Zillow's own "lat--long" building key.
  • Some fields are conditional: mls_info, sold_price, open_house, price_reduction, new_construction_type only appear for the relevant listing types.
  • Clean output: nulls and empty blocks are stripped; top-level fields are always present. Need deep per-property data (tax/price history, schools, comps)? Feed the detail_urls into Zillow Property Details Scraper.

FAQ and support

Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

How do I get more than ~800 results for an area?

That's a Zillow-side pagination limit per search. Split the area into smaller searches (city → ZIP codes, or by price range) and pass them all in searchLinks.

Something broke or you need an extra field?

Zillow changes its site regularly; this Actor is actively maintained. Report issues in the Issues tab on the Actor page — feature requests are welcome.