Zillow Detail Scraper: Property Details by URL, ZPID, Address
Pricing
from $4.25 / 1,000 properties
Zillow Detail Scraper: Property Details by URL, ZPID, Address
Zillow property details for any US home by link, ZPID or street address: price, Zestimate, rent Zestimate, price and tax history, listing agent name and phone, schools, facts, climate risk and photos. No login or cookies, bulk lookup, sold and off-market homes. Optional comps and Zestimate history.
Pricing
from $4.25 / 1,000 properties
Rating
0.0
(0)
Developer
Ben
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
🏡 Zillow Detail Scraper: Property Details by URL, ZPID, Address
Get Zillow property details for any US home. Paste Zillow links, ZPIDs or plain street addresses and receive one row per home with price, Zestimate, rent Zestimate, price and tax history, listing agent with phone, schools, home facts, climate risk and photo links. No login, no cookies, no Zillow account. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.
Price: $5.00 per 1,000 homes on the Free plan, down to $4.25 on Business and above. An address Zillow does not know is skipped and not charged. Comparables, Zestimate history and Walk Score cost nothing extra.
Why this Zillow property details scraper
| What users report on other Zillow detail Actors | What this Actor does |
|---|---|
| Tax history not filled in | taxHistory[] with year, tax paid and assessed value, plus taxAssessedValue and taxAnnualAmount |
| Total bathrooms dropped from the output | bathrooms is a top-level field next to bedrooms |
| Wrong home returned for an address | input repeats what you typed and address, zpid and url show what Zillow matched, so every row can be checked |
| No way to limit what a run returns or costs | One row per entry you give; Maximum cost per run stops the run at that amount |
| Only URLs accepted | Links, ZPIDs and street addresses in one list |
🔎 What is the Zillow Detail Scraper?
It is an Apify Actor that looks up each home you name on Zillow and saves everything Zillow publishes about it. It works for homes that are for sale, for rent, recently sold or off the market, because Zillow keeps a record for almost every US address.
You can mix three kinds of input in one list:
- a Zillow home link such as
https://www.zillow.com/homedetails/5718-Highland-Hills-Dr-Austin-TX-78731/29345631_zpid/ - a ZPID, the number in that link (
29345631) - a street address (
3750 N Pittsburgh Ave, Chicago, IL 60634)
No browser is started and no third-party unblocker is used. Each home takes one request to Zillow: in our tests 100 homes took 18 seconds and 400 homes took one minute.
What data does it extract?
- Identity:
zpid,url,homeStatus(FOR_SALE, PENDING, RECENTLY_SOLD, FOR_RENT, OTHER),homeType,listingTags - Location:
address,street,city,state,zip,neighborhood,subdivision,county,countyFips,parcelId,latitude,longitude - Value:
price,zestimate,rentZestimate,pricePerSqft,lastSoldPrice,lastSoldDate,monthlyHoaFee,taxAssessedValue,taxAnnualAmount - Size:
bedrooms,bathrooms,livingArea,lotSize(both in square feet),yearBuilt,stories - Listing agent:
agentName,agentPhone,agentEmail,agentLicense,coAgentName,coAgentPhone,brokerName,brokerPhone,mlsId,mlsName, and for sold homesbuyerAgentNameandbuyerBrokerName - History:
priceHistory[](date, event, price, price per sqft, change, source) andtaxHistory[](year, tax paid, assessed value) - Schools:
schools[]with name, rating, grades, level, type, distance, district and enrollment - Facts:
facts, Zillow's "Facts & features" block: heating, cooling, appliances, flooring, parking, roof, lot features, rooms, utilities, listing terms and more - Risk:
climateRiskwith flood, fire, wind, heat and air scores from 1 to 10, plus the FEMA flood zone - Demand:
daysOnZillow,pageViews,favorites - Media and extras:
photos[],photoCount,virtualTourUrl,floorPlanUrl,description,highlights,openHouses[],nearbyHomes[] - Optional, at no extra charge:
comparables[](the homes Zillow compared this one with for its Zestimate, with distance in miles),zestimateHistory[](the Zestimate for each month of the last ten years) andwalkScore,transitScore,bikeScorewith their descriptions
input repeats the value you entered, so you can join the result back to your own list.
⬇️ Input
| Field | Type | What it does |
|---|---|---|
homes | array | Zillow home links, ZPIDs or street addresses. One per line, in any mix |
maxComparables | integer | 0 to 10. Adds that many of Zillow's Zestimate comparables, nearest first. Default 0 (off) |
includeZestimateHistory | boolean | Adds the monthly Zestimate of the last ten years. Default off |
includeLocationScores | boolean | Adds Walk Score, Transit Score and Bike Score. Default off |
Example input
{"homes": ["https://www.zillow.com/homedetails/5718-Highland-Hills-Dr-Austin-TX-78731/29345631_zpid/","3595611","8901 Tronewood Dr, Austin, TX"],"maxComparables": 5,"includeZestimateHistory": true,"includeLocationScores": true}
Each option is one extra small request per home and leaves every other field as it was. In a cloud run, three homes with all three options took 5 seconds.
Write addresses the way you would type them into Zillow's search box, with city and state. A ZIP code helps when a street name exists in several towns.
⬆️ Output
One row per home. This is a real row with the long lists shortened:
{"input": "https://www.zillow.com/homedetails/5718-Highland-Hills-Dr-Austin-TX-78731/29345631_zpid/","zpid": "29345631","url": "https://www.zillow.com/homedetails/5718-Highland-Hills-Dr-Austin-TX-78731/29345631_zpid/","homeStatus": "FOR_SALE","homeType": "SINGLE_FAMILY","listingTags": ["agent listing", "open house"],"address": "5718 Highland Hills Dr, Austin, TX 78731","neighborhood": "Northwest Hills","county": "Travis County","countyFips": "48453","parcelId": "128020","latitude": 30.339848,"longitude": -97.758835,"price": 1185000,"pricePerSqft": 499,"lastSoldDate": "2013-04-13","taxAssessedValue": 939974,"taxAnnualAmount": 22189,"bedrooms": 4,"bathrooms": 3,"livingArea": 2376,"lotSize": 9931,"yearBuilt": 1958,"daysOnZillow": 1,"pageViews": 703,"favorites": 51,"agentName": "Atoosa Ponsford","agentPhone": "(512) 480-0848","brokerName": "Moreland Properties","mlsId": "2986990","mlsName": "Unlock MLS","highlights": ["Large lot", "Private greenbelt setting", "New european hardwood flooring"],"priceHistory": [{"date": "2026-09-30", "event": "Listed for sale", "price": 1185000, "pricePerSqft": 499, "changeRate": 0.1296, "source": "Unlock MLS"},{"date": "2024-11-23", "event": "Listing removed", "price": 1049000, "pricePerSqft": 441, "changeRate": 0, "source": "Unlock MLS"}],"taxHistory": [{"year": 2025, "taxPaid": 19236.43, "assessedValue": 939974}],"schools": [{"name": "Highland Park Elementary School", "rating": 10, "grades": "PK-5", "level": "Primary", "type": "Public", "distance": 0.6, "district": "Austin Independent School District", "enrollment": 648}],"facts": {"heating": ["Central", "Natural Gas"],"cooling": ["Central Air", "Electric"],"flooring": ["Tile", "Wood"],"parkingFeatures": ["Driveway"],"roofType": "Composition, Shingle","listingTerms": "Cash,Conventional,FHA,VA Loan","onMarketDate": "2026-09-30"},"climateRisk": {"flood": {"score": 1, "label": "MINIMAL"}, "femaZone": "X_UNSHADED", "wind": {"score": 8, "label": "SEVERE"}, "heat": {"score": 8, "label": "SEVERE"}},"openHouses": [{"start": "2026-10-03 11:00:00", "end": "2026-10-03 13:00:00"}],"nearbyHomes": [{"zpid": "29345689", "address": "5716 Highland Hills Dr", "price": 915800, "bedrooms": 3, "bathrooms": 2, "livingArea": 2033, "homeStatus": "OTHER"}],"photos": ["https://photos.zillowstatic.com/fp/12c1fde4a1a03e5f9dd1cf0d2179da3d-uncropped_scaled_within_1536_1152.jpg"],"photoCount": 40,"virtualTourUrl": "https://www.zillow.com/view-3d-home/bcd68007-0e50-475d-9320-045a2de5f712","detailsLevel": "full","scrapedAt": "2026-10-02T16:00:00+00:00"}
With the three options switched on, the same row also carries:
{"walkScore": 59, "walkScoreDescription": "Somewhat Walkable","transitScore": 37, "transitScoreDescription": "Some Transit","zestimateHistory": [{"date": "2016-10-31", "zestimate": 645386}, {"date": "2026-10-24", "zestimate": 1142300}],"comparables": [{"zpid": "29345667", "address": "5706 Highland Hills Cir, Austin, TX 78731", "homeStatus": "OTHER", "homeType": "SINGLE_FAMILY","price": 1137400, "bedrooms": 3, "livingArea": 2491, "distanceMiles": 0.07, "url": "https://www.zillow.com/homedetails/..."}]}
This home had 28 price events, 22 tax years and 40 photos in the full row. A sold home adds values such as "lastSoldPrice": 305000, "zestimate": 308700 and "rentZestimate": 2495.
💰 How much does it cost?
You pay per home found, plus a tiny start fee per run. Inputs that Zillow does not know are not charged.
| Apify plan | Price per 1,000 homes |
|---|---|
| Free | $5.00 |
| Starter | $4.75 |
| Scale | $4.50 |
| Business and above | $4.25 |
A list of 200 homes costs $1.00 on the Free plan. Set Maximum cost per run in the run options and the Actor stops at that amount. History, agent contact, schools and photos are all included in the price.
🤖 For AI agents
One input, nothing else required:
{"homes": ["3750 N Pittsburgh Ave, Chicago, IL 60634", "29345631"]}
homes is an array of Zillow home links, ZPIDs or US street addresses. No credential is needed. Each found home is one row; entries Zillow does not know produce no row and no charge.
⚠️ Limits
- US homes on Zillow only. Apartment buildings (
/apartments/or/b/links) are not single homes; use the Zillow Rentals Scraper. - This Actor looks up homes you name. To find homes by city or ZIP code, use the Zillow Search Scraper first.
- Sale prices are empty in states that do not disclose them (Texas among them).
- Agent fields are filled only while a listing exists or shortly after a sale.
💡 Use cases
- 📊 Valuation and comps: pull price history, tax history, ten years of Zestimates and Zillow's comparable homes for a list of addresses before an appraisal or an offer.
- 📞 Agent and broker leads: collect the listing agent, phone, brokerage and MLS number for every active listing in your farm area.
- 🏦 Portfolio monitoring: run the same ZPID list every week and track
price,zestimateandhomeStatusover time. - 🧾 Data enrichment: turn a CRM export of street addresses into parcel IDs, lot sizes, year built and school ratings.
❓ FAQ
What can I use as input? Zillow home links, ZPIDs and street addresses, mixed freely. Links to apartment buildings (/apartments/ or /b/) are not single homes; use the Zillow Rentals Scraper for those.
Does it work for homes that are not for sale? Yes. Off-market and sold homes return their record too, usually with a Zestimate and a rent Zestimate. Agent fields are filled only while a listing exists or shortly after a sale.
What does price mean for each status? For an active listing it is the asking price, for a sold home the sale price, and for an off-market home Zillow reports its own estimate in that field. Check homeStatus before comparing prices.
Why is lastSoldPrice empty when lastSoldDate is filled? Some states, Texas among them, do not disclose sale prices. Zillow then shows the sale date without an amount.
How do I get the homes to look up? Use the Zillow Search Scraper for a city or ZIP code and pass its zpid or url column to this Actor, or paste your own address list.
What happens when an address is not found? The Actor logs a warning, skips the entry and continues. You are not charged for it.
Where do the comparables come from, and why is a sold comparable's price sometimes empty? They are the homes Zillow itself used for the Zestimate, usually five. For a recent sale price is the sale price, except in states that do not disclose sale prices (Texas among them), where it is empty; for an off-market home it is Zillow's estimate. Check homeStatus before comparing.
Can I look up many homes in one call? Yes. homes takes any number of links, ZPIDs and addresses; five are read at a time.
What is detailsLevel? full means the complete record. If Zillow changes its site and the complete record is temporarily unavailable, the Actor falls back to the smaller record on the home page and marks the row basic (no history or schools) instead of failing.
How fresh is the data? Every run reads Zillow live. Nothing is cached between runs.
Is it legal to scrape Zillow property data? The Actor collects information Zillow shows publicly to any visitor and does not log in or bypass a paywall. You are responsible for how you use the data. Agent names and phone numbers are business contact details, but privacy and marketing rules such as GDPR, CCPA, CAN-SPAM and the TCPA still apply to outreach, and Zillow's terms of use apply to you as well. If in doubt, ask a lawyer.
Something is missing or broken? Open an issue on the Actor's Issues tab with the run ID. Issues are answered within one business day.
🧩 Need this as a managed feed?
If you would rather receive a weekly file for your markets than run the Actor yourself, request a quote at https://benthepythondev00.github.io/custom.html.
🔗 You might also like
- Zillow Search Scraper
- Zillow Rentals Scraper
- Apartments.com Rent & Availability Monitor
- Zumper Rental Scraper & Price Change Monitor
- Real Estate Agent & Agency Lead Scraper
- Craigslist Real Estate Scraper
Keywords: zillow detail scraper, zillow property details scraper, zillow details scraper, zillow property data, zillow scraper by address, zillow lookup, zillow api, zillow property details, zillow api alternative, zillow zpid lookup, zillow address lookup, zestimate api, zestimate history, zillow comps, walk score api, zillow price history, zillow tax history, property data api, real estate data enrichment, listing agent phone numbers, real estate agent leads, home value data, parcel data, school ratings data, flood risk data, zillow csv export, zillow property scraper