Zillow Property Detail API — Address · URL · ZPID Lookup
Pricing
from $9.00 / 1,000 property dossier extracteds
Zillow Property Detail API — Address · URL · ZPID Lookup
Paste Zillow URLs, ZPIDs, or street addresses and get a full property dossier: price, Zestimate, listing agent and broker phone numbers, 10-year tax history, price history, schools, and all photos. Optional comps, climate risk, and Zestimate history add-ons. Bulk-ready Zillow API replacement.
Pricing
from $9.00 / 1,000 property dossier extracteds
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Zillow Property Detail Scraper — Full Dossiers by URL, ZPID or Address 🚀
🎉 Paste property URLs, ZPIDs, or street addresses — get a 40+ field dossier per home, including listing agent & broker phone numbers
The Zillow API replacement built for lead-gen teams, investors, and PropTech data pipelines
📋 Overview
Stop stitching together three scrapers to profile one house — this actor turns any Zillow home URL, ZPID, or plain street address into a single, complete property dossier: price, Zestimate, rent Zestimate, listing agent and broker phone numbers, 10-year tax history, full price history, assigned schools, and every listing photo — in one row.
Why professionals choose this scraper:
- ✅ Three input modes, auto-routed: Zillow URLs, numeric ZPIDs, or raw street addresses — mix them freely, duplicates are removed automatically
- 📞 Agent & broker contacts included: listing agent name + phone, broker name + phone, co-agent, MLS ID, and license data on actively listed homes
- 🧾 History bundled, not sold as extras: 10-year tax history, full price-event history, schools, and all photo URLs ship inside the base row — data other tools charge add-ons for
- 💰 Never billed for dead lookups: homes that can't be found are skipped free of charge
- 💎 Real add-ons where they count: comparable homes, flood/fire/heat/wind/air climate risk with FEMA zones, and the full 100+ point Zestimate value history
- ⚡ Bulk-ready: feed hundreds of addresses from a CSV and enrich your whole lead list in one run
✨ Features
- 🏡 Full property dossier — 40+ curated fields per home from a 180+ field source payload
- 📞 Listing agent & broker phones — direct contact data for actively listed properties
- 🧾 10-year tax history — tax paid, assessed value, and year-over-year change rates
- 📈 Complete price history — every listing, price-cut, and sale event with $/sqft
- 🏫 Assigned schools — ratings, levels, grades, and distance
- 🖼 All listing photos — highest-resolution URL for every photo, plus the hero image
- 🏘 Comps add-on — comparable homes with price, size, and status
- 🌊 Climate risk add-on — flood, fire, heat, wind, and air scores with FEMA zone + insurance guidance
- 📉 Zestimate history add-on — chart-ready
{date, value}series with 100+ monthly points - 🔁 Cross-mode deduplication — the same home entered as URL and address counts once
🎬 Quick Start
Provide any mix of Zillow URLs, ZPIDs, or addresses. The actor looks each one up, builds one dossier row per home, and saves everything to the dataset.
curl -X POST "https://api.apify.com/v2/acts/sian.agency~zillow-property-detail-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"addresses": ["10411 Turnbull Loop, Austin, TX 78717"]}'
🚀 Getting Started (3 Simple Steps)
Step 1: Paste your properties
Add Zillow home URLs, ZPIDs, or street addresses — one per line, in any combination.
Step 2: Toggle add-ons (optional)
Switch on comparable homes, climate risk, or Zestimate history for extra intelligence per home.
Step 3: Run and export
Click Start. Export your dossiers as JSON, CSV, or Excel straight from the dataset.
That's it! In under a minute, you'll have:
- One complete dossier row per property
- Agent and broker phone numbers for active listings
- Tax history, price history, schools, and photos ready for your CRM or warehouse
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| propertyUrls | array | No | Zillow home-details URLs (zillow.com/homedetails/...) |
| zpids | array | No | Numeric Zillow property IDs (digits before _zpid) |
| addresses | array | No | Full US street addresses (street, city, state ZIP) |
| includeComparableHomes | boolean | No | Add comparable homes per property (paid plans) |
| includeClimateRisk | boolean | No | Add flood/fire/heat/wind/air risk per property (paid plans) |
| includeZestimateHistory | boolean | No | Add the Zestimate value time series per property (paid plans) |
At least one of propertyUrls, zpids, or addresses should be provided — a run without input performs a single demo lookup so you can inspect the output shape.
Example:
{"propertyUrls": ["https://www.zillow.com/homedetails/243335909_zpid/"],"zpids": ["29502980"],"addresses": ["10411 Turnbull Loop, Austin, TX 78717"],"includeComparableHomes": true,"includeClimateRisk": true,"includeZestimateHistory": true}
📤 Output
One row per property with 40+ fields, including:
| Field | Type | Description |
|---|---|---|
| zpid | number | Zillow property ID |
| streetAddress / city / state / zipcode | string | Resolved address |
| price / zestimate / rentZestimate / lastSoldPrice | number | Valuations (USD) |
| homeStatus / homeType | string | FOR_SALE, RECENTLY_SOLD, OTHER · SINGLE_FAMILY, CONDO, … |
| bedrooms / bathrooms / livingArea / yearBuilt | number | Home facts |
| agentName / agentPhoneNumber | string | Listing agent contact (active listings) |
| brokerName / brokerPhoneNumber / mlsId | string | Broker + MLS attribution |
| monthlyHoaFee / propertyTaxRate / annualHomeownersInsurance | number | Carrying costs |
| priceHistory | array | Listing/price-cut/sale events with $/sqft |
| taxHistory | array | Up to 10 years of tax paid + assessed values |
| schools | array | Assigned schools with ratings and distance |
| photoUrls | array | Every listing photo (highest resolution) |
| comparableHomes | array | Comps add-on (when toggled) |
| climateRisk | object | Climate add-on: 5 hazard blocks + FEMA zone (when toggled) |
| zestimateHistory | array | Value-history add-on: {date, value} points (when toggled) |
Example (trimmed):
{"zpid": 243335909,"zillowUrl": "https://www.zillow.com/homedetails/243335909_zpid/","streetAddress": "10411 Turnbull Loop","city": "Austin","state": "TX","zipcode": "78717","price": 460000,"homeStatus": "FOR_SALE","bedrooms": 4,"bathrooms": 3,"livingArea": 2163,"agentName": "Clay Byrne","agentPhoneNumber": "(512) 942-7880","brokerName": "Keller Williams Realty","mlsId": "5013986","taxHistory": [{ "year": 2025, "taxPaid": 9318.03, "assessedValue": 465600 }],"priceHistory": [{ "date": "2026-06-19", "event": "Listed for sale", "price": 460000 }],"photoUrls": ["https://photos.zillowstatic.com/fp/....jpg"],"enrichmentsApplied": ["comparableHomes", "climateRisk", "zestimateHistory"]}
💼 Use Cases & Examples
1. Lead-list enrichment for wholesalers & ISAs
Turn a plain address list into a call sheet with listing agent and broker phone numbers.
Input: CSV column of street addresses Output: Dossiers with agent/broker contacts, valuations, and days on market Use: Prioritize outreach by equity, list age, and price cuts
2. Investor underwriting in one pass
Underwrite acquisitions with tax burden, price trajectory, and comps in a single row.
Input: ZPIDs from your deal pipeline Output: 10-year tax history, price events, HOA + insurance costs, comps add-on Use: Feed your underwriting model without visiting a single listing page
3. Zillow API replacement for PropTech ETL
Zillow retired its public API — this is the drop-in data feed.
Input: URLs or ZPIDs from your product database Output: Clean, stable JSON dossiers ready for BigQuery, Snowflake, or pandas Use: Nightly refresh of property facts and valuations at pay-per-result pricing
4. Climate & insurance risk screening
Score portfolios for flood, fire, heat, wind, and air risk before you lend or buy.
Input: Addresses + includeClimateRisk: true
Output: Risk scores, growth trends, FEMA zones, insurance recommendations per home
Use: Flag high-risk collateral and estimate insurance exposure
5. Home-value tracking & CMAs
Chart any home's value trajectory with 100+ monthly Zestimate points.
Input: URLs + includeZestimateHistory: true
Output: Chart-ready {date, value} series per property
Use: CMAs, tax-appeal evidence, market-timing dashboards
6. CRM hygiene for brokerages
Keep listing status, price, and attribution fresh across thousands of records.
Input: Bulk ZPIDs synced from your CRM Output: Current status, price, agent-of-record per property Use: Automated weekly refresh with per-result billing
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/zillow-property-detail-scraper').call({addresses: ['10411 Turnbull Loop, Austin, TX 78717'],includeComparableHomes: true});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0].agentPhoneNumber);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/zillow-property-detail-scraper').call(run_input={'zpids': ['243335909'], 'includeClimateRisk': True})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item['streetAddress'], item['price'], item['agentPhoneNumber'])
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~zillow-property-detail-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"propertyUrls": ["https://www.zillow.com/homedetails/243335909_zpid/"]}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: New row in your CRM or a nightly schedule
- HTTP Request: Call the actor API with the address batch
- Process: Map dossier fields to your pipeline
- Action: Update records, alert on price cuts, or route hot leads
📊 Performance & Pricing
FREE Tier (Try It Now)
- 5 properties per run — full dossier quality, same fields
- No credit card required
- Perfect for testing the output on your own listings
PAID Tier (Production Ready)
- Unlimited properties per run
- Enrichment add-ons unlocked: comps, climate risk, Zestimate history
- Pay-per-result: dossiers are only charged when a home is found; add-ons only when they return data
💰 One dossier here replaces three separate tools — details, photos, and history are bundled in a single per-property price.
❓ Frequently Asked Questions
Q: How many properties can I process? A: FREE tier: 5 per run. PAID tier: unlimited — thousands per run is normal.
Q: Do I always get agent phone numbers? A: Agent and broker contact fields are populated for actively listed homes (FOR_SALE). Off-market homes still return the full dossier — valuations, tax history, photos — but attribution may be empty.
Q: What happens if an address doesn't match a home? A: The lookup is skipped and you are not charged. Failed lookups are listed in a retry-helper row and the HTML report.
Q: Can I mix URLs, ZPIDs, and addresses in one run? A: Yes — all three inputs can be used together. The actor dedupes them by resolved property, so the same home never bills twice.
Q: What output formats are available? A: JSON, CSV, Excel, XML — export directly from the Apify dataset or pull via API.
Q: Does it work for off-market homes? A: Yes. Off-market dossiers include valuations, tax history, photos, schools, and facts — everything except active-listing attribution.
Q: Is this legal? A: The actor only extracts publicly accessible listing data. See the legal section below.
🐛 Troubleshooting
"Property not found" for an address
- Use the full form:
street, city, state ZIP(e.g.10411 Turnbull Loop, Austin, TX 78717) - Check the address exists on the consumer site; new constructions can lag
Invalid URL error
- Only home-details pages are supported:
zillow.com/homedetails/... - Search-result URLs (
zillow.com/austin-tx/) belong in a search scraper, not a detail scraper
Agent fields are empty
- Contact attribution is only published for actively listed homes — off-market rows legitimately have empty agent fields
Add-on fields are null
- Enrichment toggles require a paying Apify plan; on FREE runs they are skipped with a log notice
- Add-ons are only charged when they return data — null means no data was available for that home
⚠️ Trademark Disclaimer
Zillow is a registered trademark of Zillow Group, Inc. This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Zillow Group. It extracts only publicly available information for legitimate research, analytics, and lead-generation purposes. Users are responsible for complying with applicable laws and the terms of service of the websites they access.
⚖️ Is it legal to scrape data?
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.
You can also read Apify's blog post on the legality of web scraping.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's repository
- Check SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools