Zillow Property Detail Scraper
Pricing
from $1.50 / 1,000 property scrapeds
Zillow Property Detail Scraper
Get the full Zillow property record from a listing link, street address or Zillow ID: price, Zestimate, rent estimate, beds, baths, sqft, year built, HOA, tax rate, MLS ID, listing agent and phone, brokerage and every photo. Works for apartment buildings and new-build communities too.
Pricing
from $1.50 / 1,000 property scrapeds
Rating
0.0
(0)
Developer
Kamil Ertekin
Maintained by CommunityActor stats
0
Bookmarked
15
Total users
13
Monthly active users
15 hours ago
Last modified
Categories
Share
Paste a Zillow link, a street address or a Zillow ID and get the full property record in one row: price, Zestimate, rent estimate, beds, baths, size, year built, HOA, tax rate, MLS ID, listing agent and phone, brokerage and every photo URL. It also handles apartment buildings and new-build communities. Agents, investors and analysts use it for comps, lead lists and watchlists. It costs $2.40 per 1,000 properties with no start fee.
What you get
72 fields per home. The ones people use most:
| Field | Example | Notes |
|---|---|---|
zpid · url | 8134236 · listing URL | Zillow's property ID and page |
homeStatus · homeType | "FOR_SALE" · "SINGLE_FAMILY" | OTHER means the home isn't listed right now |
price | 749000 | Asking price, or monthly rent on rentals. Empty for homes that aren't listed |
zestimate · rentZestimate | 730300 · 4137 | Zillow's estimates, when published |
lastSoldPrice · dateSold | 410000 · "2017-11-14" | Last recorded sale |
priceChange · priceChangeDate | -50000 · "2026-06-24" | Most recent price cut or raise |
propertyTaxRate · monthlyHoaFee · totalMonthlyCost | 0.41 · 51 · 4514 | Tax rate in %, HOA per month, Zillow's monthly cost estimate |
pricePerSqft · taxAssessedValue | 502 · 473270 | Asking price per sq ft of living area, and the county's assessed value where Zillow shows it (mostly on homes that aren't listed) |
bedrooms · bathrooms · bathroomsFull · bathroomsHalf | 5 · 3 · 3 · 0 | |
livingArea · lotSize | 2839 · 8594 | Both in sq ft |
lotAreaValue · lotAreaUnits | 0.2607 · "Acres" | Lot size in the unit Zillow shows (Acres or Square Feet) |
yearBuilt · parkingCapacity | 1993 · 3 | |
garageCapacity · hasGarage · parkingFeatures | 2 · true · ["Garage Door Opener", "Detached"] | Garage spaces and Zillow's parking notes |
streetAddress · city · state · zipcode · county | "16210 S 14TH Drive" · "Phoenix" · "AZ" · "85045" · county name | |
latitude · longitude | 33.29913 · -112.09028 | |
daysOnZillow · datePosted | 4 · listing date | Empty for homes that aren't listed. All dates are YYYY-MM-DD |
mlsId · mlsName | "7071822" · "ARMLS" | |
agentName · agentPhone · brokerName | "Kevin Houston" · "602-370-8106" · "West USA Realty" | Listing agent and brokerage |
isForSaleByOwner · isNewConstruction · isComingSoon · isForAuction · isBankOwned · isPreforeclosure · isForeclosure · isPending · isOpenHouse | false | Listing flags |
pageViewCount · favoriteCount | 299 · 36 | Zillow views and saves |
photoCount · photos | 43 · list of URLs | Every photo, at the width you choose |
virtualTourUrl | tour link | The listing's 3D or video tour, when it has one |
highlights | ["Woodburning fireplace", "Stainless appliances"] | Zillow's short feature tags for the home, when it shows them |
description | listing text | Full listing description |
isPartial · partialReason | true · "showcase-listing" | Zillow's page for a Showcase listing leaves out the agent, agent phone, days on Zillow and listing date. Those rows are marked and not charged. About one home in seven |
How often each field is filled
Measured on 745 properties in Austin, Chicago, Denver, Greenville, Miami and Phoenix:
| Filled on | Fields |
|---|---|
| 100% | address, zpid, url, price, homeStatus, homeType, currency, photoCount |
| 99% | coordinates, description, beds, baths, living area, at least one photo |
| 95-96% | mlsId, mlsName |
| 81-88% | lot size, agent phone, broker, days on Zillow, last sold price, tax rate, agent name |
| 70-79% | year built, parking, date sold |
| 36% | monthly HOA fee |
| 28% | price change and its date |
| 21% | rentZestimate |
| 19% | zestimate |
county was filled on only 4% of that sample. Since October 2026 it's also read from another part of Zillow's page, and it was filled on all three homes in our latest test.
The 745 homes had 26,519 photo URLs between them, 36 per home on average.
Columns added in October 2026 haven't been measured at that scale yet. On our three test homes: garage and parking details on all three, highlights and virtualTourUrl on one, taxAssessedValue on the one that isn't listed.
Buildings and communities
- Apartment building (
/apartments/…): one row with building name, unit count, rent and bedroom ranges, leasing phone and photos. Turn on Expand buildings into individual units to get one row per unit instead. One tested building gave 24 unit rows with rents from $810 to $1,200. - Builder community (
/community/…): builder name and phone, price range, spec homes and floor plans, photos.
A row's pageType (property, building or community) tells you which shape it is.
How to use it
- Add your homes: paste Zillow links, type street addresses or Zillow IDs, or pick the dataset from a Zillow Search Scraper run.
- Set Maximum properties as your spend cap.
- Click Start, then download the results as CSV, JSON or Excel, or read them through the API.
Minimal input that works as-is:
{"startUrls": [{ "url": "https://www.zillow.com/homedetails/2114-S-Trumbull-Ave-Chicago-IL-60623/2146999031_zpid/" }],"addresses": ["21386 Sunnyside Rd, Los Gatos, CA 95033", "24996529"],"maxItems": 10}
Search first, then details
The cheapest way to cover an area. Run Zillow Search Scraper with your filters, then pick its dataset in Search results dataset here. Every home the search found gets its full record. A Phoenix search of 445 homes came back in full here in about two minutes.
{"searchResultsDatasetId": "aBcD1234EfGh5678","maxItems": 500,"photoMaxWidth": "768"}
Watch a list of homes for changes
Turn on Only new or changed properties, keep the same Memory store name and schedule the run daily. Each run returns only homes that are new or whose price, Zestimate, rent estimate, status or description changed. Changed rows carry changeDetected: true. Unchanged homes are skipped and not charged.
Input reference
| Field | What it does |
|---|---|
| Property URLs | Zillow /homedetails/, /apartments/ or /community/ links |
| Street addresses or Zillow IDs | For example 21386 Sunnyside Rd, Los Gatos, CA 95033 or 24996529 |
| Search results dataset | A finished Zillow Search Scraper run. Every home in it is scraped |
| Maximum properties | Your spend cap. 0 means no cap. API callers can send limit or maxResults instead |
| Photo width | 192 to 1536 px. Changes the photo URLs, not the price |
| Expand buildings into individual units | One row per unit instead of one per building. Each unit is a charged row |
| Merge re-listed properties | Re-listed homes get a new Zillow ID. On by default, so the same house isn't returned (or charged) twice |
| Only new or changed properties and Memory store name | Monitoring, see above |
Output example
A real row from a Phoenix run, with the photo list and description shortened:
{"pageType": "property","zpid": 8134236,"url": "https://www.zillow.com/homedetails/16210-S-14th-Dr-Phoenix-AZ-85045/8134236_zpid/","homeStatus": "FOR_SALE","homeType": "SINGLE_FAMILY","price": 749000,"zestimate": 730300,"rentZestimate": 4137,"lastSoldPrice": 410000,"dateSold": "2017-11-14","propertyTaxRate": 0.41,"monthlyHoaFee": 51,"totalMonthlyCost": 4514,"bedrooms": 5,"bathrooms": 3,"livingArea": 2839,"lotSize": 8594,"yearBuilt": 1993,"parkingCapacity": 3,"streetAddress": "16210 S 14TH Drive","city": "Phoenix","state": "AZ","zipcode": "85045","latitude": 33.29913,"longitude": -112.09028,"daysOnZillow": 4,"mlsId": "7071822","mlsName": "ARMLS","pageViewCount": 299,"favoriteCount": 36,"agentName": "Kevin Houston","agentPhone": "602-370-8106","brokerName": "West USA Realty","photoCount": 43,"photos": ["https://photos.zillowstatic.com/fp/8ff578e47e35892a7842ea9fc38ec734-cc_ft_1536.jpg","https://photos.zillowstatic.com/fp/0d9f91d5e83ea8bc9b39def2c1d42a00-cc_ft_1536.jpg","... 41 more"],"hasVirtualTour": false,"description": "Gorgeous 5 bed, 3 bath in Club West located on a very quiet, low traffic street! ..."}
Photos come back as a list on the same row. CSV and Excel exports turn it into numbered columns (photos/0, photos/1, …).
Pricing
You pay per property, building or community delivered to your dataset. There's no start fee, platform usage is included, and every field (photos too) comes in that one price. Rows marked isPartial (Showcase listings without agent details) are delivered free.
| Your Apify plan | Price per property | Per 1,000 properties |
|---|---|---|
| Free | $0.0024 | $2.40 |
| Starter (Bronze) | $0.0020 | $2.00 |
| Scale (Silver) | $0.0016 | $1.60 |
| Business (Gold and above) | $0.0015 | $1.50 |
You're not charged for retries, links that no longer exist, addresses that can't be matched, merged re-listings, or homes skipped as unchanged in monitoring mode.
Worked example. Search 5,000 Phoenix listings with Zillow Search Scraper ($7.50 on Free), keep the 500 that fit your criteria and get full records here: 500 × $0.0024 = $1.20. That's $8.70 in total. A daily watchlist of 200 homes where 15 change costs $0.036 a day.
With Expand buildings into individual units on, each unit is its own row, so a 200-unit building costs the same as 200 homes. Use Maximum properties to cap it.
FAQ
Why is the Zestimate empty on most rows?
Zillow only publishes a Zestimate on about one home in five (19% across our 745-home sample). The value is passed through as Zillow shows it. Nothing is estimated on our side.
What happens with a link that no longer works?
It's listed in the run log and not charged. An address that can't be matched to a Zillow home is also logged and skipped, and the rest of the run carries on.
How do off-market homes look?
homeStatus is OTHER, price and daysOnZillow are empty, and there's no listing agent, MLS ID or photos. zestimate still carries Zillow's estimate, and lastSoldPrice the last recorded sale.
Can I get one row per photo?
Photos come as a list on the property row. CSV and Excel exports spread them into numbered columns. You don't pay extra for photos.
Can I schedule it or connect it to other tools?
Yes. Use Apify Schedules with monitoring on for a daily watchlist, and send results to Google Sheets, Airtable, HubSpot, Slack, Zapier, Make, n8n or a webhook. You can also call it from the Apify API or MCP server.
Does it return agent email?
No. Zillow doesn't show agent email on property pages. You get the listing agent's name and phone (on about 84% of listings) and the brokerage.
Limits
- US homes on Zillow only.
- On homes sold in the last few weeks, Zillow's page gives no sale date, only how many days ago the sale was.
dateSoldis worked out from that and can be a day off;daysOnZillowis empty on those homes. Zillow Search Scraper on recently sold homes gives the exact date. - No price history, tax history, school ratings or the longer fact list (heating, cooling, flooring, roof, parcel number) yet.
- Off-market homes have no asking price, and some have a
lastSoldPricewithout adateSoldbecause Zillow doesn't publish the date. lotSizeis always in sq ft.lotAreaValuefollowslotAreaUnits./b/…building pages return very little data and aren't recommended.
Missing a field? Open an issue on the Issues tab. If Zillow publishes it, it can usually be added.
Related: Zillow Search Scraper to find homes by area, and Zillow Agent Scraper for the real estate agents working an area.
