Zillow URL Search Property Scraper
Pricing
Pay per event
Zillow URL Search Property Scraper
Extract Zillow real estate listings by pasting any Zillow search URL — filters baked into the URL are honored. 74 output fields including agent contacts, price history, Zestimate, and property details. Pay-per-event pricing — only pay for properties enriched. Free plan: up to 15 properties per run.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Andrey Afanasenko
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
Paste any Zillow search URL — get one structured row per property with agent contacts, price history, and 70+ output fields. From $0.05 per property on paid plans, $0.08 on Free.
Zillow's public API doesn't accept search URLs at all. This actor reads the same listings any browser visitor sees — full filter set baked into the URL, agent emails and phone numbers, photo galleries, price-history arrays, school ratings, and 70+ output columns per row.
🎯 What it does
You paste a Zillow search URL (with whatever filters you've already set up on the Zillow website) and get one structured row per property in the dataset. Filters baked into the URL's searchQueryState (price range, beds/baths, status, home type, school rating, 50+ property features) are honored automatically — no need to re-enter them in the actor's input.
Each row includes:
- Address & location — street, city, state, ZIP, county, neighborhood, lat/lng
- Listing data — price, status (For Sale / For Rent / Recently Sold), days on Zillow, page views, favorites, listing type
- Property details — beds, baths, square footage, lot size, year built, home type, architectural style, flooring, heating/cooling, roof, appliances, fireplaces, garage, pool, basement, view types
- Financial data — Zestimate, Rent Zestimate, price per sqft, HOA fees, property tax, price history, last sold date
- Agent contacts — agent name, email, phone, license number, broker name, broker phone
The actor handles three URL shapes automatically: search URLs with searchQueryState, /recently_sold/<Location>_rb/ URLs, and single-property /homedetails/.../12345_zpid/ URLs (ZPID auto-extracted, that one property enriched directly).
📦 Output sample
A real row from a single-family Austin TX listing — 25 most-used columns shown:
{"zpid": "119617641","hdpUrl": "https://www.zillow.com/homedetails/10124-Pinnacle-Crest-Loop-Austin-TX-78747/119617641_zpid/","price": 375000,"status": "FOR_SALE","homeType": "SINGLE_FAMILY","streetAddress": "10124 Pinnacle Crest Loop","city": "Austin","state": "TX","zipcode": "78747","county": "Travis County","bedrooms": 5,"bathrooms": 3,"livingArea": 2385,"yearBuilt": 2014,"agentName": "Hillary Smith","agentEmail": "hillary@homesmithatx.com","agentEmailSource": "agent_profile_direct","cellPhone": "512-585-1947","brokerName": "HOMESMITH REALTY, LLC","pricePerSqft": 157,"hoaFee": 47,"propertyTax": 7749,"hasPool": true,"daysOnZillow": "6 days","schools": [{"name": "Blazier Elementary School", "level": "Primary", "rating": 5, "distance": 1.3}]}
+49 more columns in the dataset — full price-history array, photo gallery, neighborhood, lot size, garage, view, heating/cooling, last tax assessed value, etc. See .actor/dataset_schema.json for every column.
⚡ Quick start
- Apply filters at zillow.com in your browser (price, beds, home type, school rating — whatever you need).
- Copy the full address-bar URL with its
searchQueryState=…query string and paste it aszillowUrlin the Apify Console. - Click Run — the first run takes 30–60 seconds, then preview the dataset and export as JSON / CSV / Excel.
{"zillowUrl": "https://www.zillow.com/austin-tx/houses/?searchQueryState=%7B%22filterState%22%3A%7B%22price%22%3A%7B%22min%22%3A400000%2C%22max%22%3A900000%7D%2C%22beds%22%3A%7B%22min%22%3A3%7D%7D%7D","maxProperties": 5}
That's a filtered Austin TX search, capped at 5 properties — under $0.50 to test.
🧭 When to use it
- You already use Zillow's filter UI — copy the URL and let the actor do the rest. No need to translate filters into JSON.
- Saved-search delivery — re-run the same URL on a schedule to capture new listings and price changes.
- Complex filter combos — when filters are layered (foreclosures + minimum school rating + finished basement + 3D tour), encoding them in the URL is faster than re-entering each in input.
- Sold listings by region — paste a
/recently_sold/<Location>_rb/URL to pull every recent sale in a state, county, or city. - Single-property lookup — paste a Zillow property page URL (
/homedetails/.../12345_zpid/) and enrich just that one listing.
🛠 Input
Two input fields, only one required:
zillowUrl(required, string) — paste any Zillow search URL or single-property URL. Filters baked into the URL are honored.maxProperties(integer, default 0=unlimited) — per-run property cap. Free plan: maximum 15 regardless.
Per-run cost ceilings are set via Apify's built-in "Maximum cost per run" option in the Run options panel — no input field needed.
How to construct your Zillow URL
The fastest workflow: open Zillow in your browser, apply the filters you want using the on-site UI, and copy the resulting URL straight from the address bar. Three URL shapes are supported:
- Shape 1 — Search URL with filters (most common):
https://www.zillow.com/austin-tx/houses/?searchQueryState=…. ThesearchQueryStateparameter encodes filters as JSON — price, beds/baths, home type, listing status. Use this for any complex combo, including sold listings (Zillow's "Sold" tab embedsrs:true). - Shape 2 — Recently sold listings:
https://www.zillow.com/homes/recently_sold/Indiana_rb/. Pulls every recent sale in the named region. - Shape 3 — Single-property page:
https://www.zillow.com/homedetails/.../119617641_zpid/. ZPID auto-detected, that property enriched directly (search skipped).
💰 How much will scraping Zillow cost?
Pay-per-event. You only pay for properties that are successfully enriched — discoveries that fail (no upstream match for the URL) are free.
| Plan | Price per PROPERTY_ENRICHED |
|---|---|
| Free | $0.08 |
| Bronze | $0.07 |
| Silver | $0.06 |
| Gold / Platinum / Diamond | $0.05 |
Cost math (Diamond tier): 100 properties = $5, 1,000 properties = $50.
A small apify-actor-start fee ($0.00005 × memory GB, minimum 1 event per run) covers platform startup — usually $0.0001–$0.001 per run.
Cap costs hard with Apify's "Maximum cost per run" Run option in the right panel.
🆓 Free vs paid plan
| Free plan | Paid plan | |
|---|---|---|
| Properties per run | up to 15 | unlimited |
| Per-run budget ceiling | $1.20 | set via Apify Run options |
| Agent email visibility | domain masked (name@xxx) | full email |
| Filters & URL types supported | ✅ | ✅ |
The first paid run unlocks unlimited properties + full agent emails immediately — no waiting period.
🧪 URL recipes
Search URL — Austin TX, $400k–$900k, 3+ beds:
{"zillowUrl": "https://www.zillow.com/austin-tx/houses/?searchQueryState=%7B%22filterState%22%3A%7B%22price%22%3A%7B%22min%22%3A400000%2C%22max%22%3A900000%7D%2C%22beds%22%3A%7B%22min%22%3A3%7D%7D%7D","maxProperties": 50}
Recently sold listings in Indiana:
{"zillowUrl": "https://www.zillow.com/homes/recently_sold/Indiana_rb/","maxProperties": 100}
Single-property lookup:
{"zillowUrl": "https://www.zillow.com/homedetails/10124-Pinnacle-Crest-Loop-Austin-TX-78747/119617641_zpid/"}
📡 Live status & storage records
Every run writes records to the run's Storage tab:
| Key | What it holds |
|---|---|
RUN_SUMMARY | Full run statistics — input, properties (found / enriched / skipped), email yield, billing, plan tier, error info. |
status.html | Auto-refreshing status page rendered live during the run. |
SKIPPED_ITEMS | Per-item list of every URL / property skipped, with reason and category (not_found, error, free_limit, test_run_cap). |
FREE_LIMITS_APPLIED | Free-tier ceilings hit during the run. Empty on paid runs. |
USER_MESSAGE | Onboarding banner shown on a paid user's 1st and 3rd paid run. |
UNKNOWN_INPUT_KEYS | Lists any input field names not part of this actor's schema (e.g. zipCodes, zpids — fields from sibling actors). |
🤖 Programmatic API
Start a synchronous run + read the dataset directly:
TOKEN="<your-apify-token>"curl -X POST "https://api.apify.com/v2/acts/afanasenko~zillow-url-search/run-sync-get-dataset-items?token=$TOKEN" \-H 'Content-Type: application/json' \-d '{"zillowUrl":"https://www.zillow.com/austin-tx/houses/","maxProperties":20}'
The actor exposes its schema for MCP / agent consumption — dataset_schema.json declares every output column with type and description. For a dedicated MCP wrapper with narrow tools per mode, see zillow-mcp-server.
💡 Tips & Best Practices
Getting maximum results
- Use Zillow's filter UI on the website, then copy the URL — it's faster than typing filters in JSON and supports things the schema can't (polygon-drawn map searches, school-radius filters).
- For sold listings, click the "Sold" tab on Zillow before copying —
rs:truewill be embedded insearchQueryStateautomatically. - Single-property URLs skip discovery — paste
/homedetails/.../zpid/URLs for fastest one-off lookups.
Cost optimization
maxPropertiesis your spend cap — set realistically. Big metros like NYC / LA can resolve to thousands of listings.- Use Apify's Maximum cost per run Run option for a hard ceiling.
- Test URLs with
maxProperties: 5first — confirm the URL resolves and returns the listings you expect before scaling up.
Performance
- Pagination is bounded at 15 s per page, so transient Zillow slowdowns surface as a normal retry, not a 12-minute hang.
- Single-property URLs are fastest (~5–10 s per call) because they skip the search step entirely.
- Sold-listings URLs are slower than for-sale — Zillow paginates sold-search results in smaller chunks.
Data quality
- Know what's nullable. FSBO listings often omit agent details; new construction often omits year-built; condos often omit lot size.
- Trace email confidence via
agentEmailSource—property_detailsis strongest,agent_search_fallbackis name-match heuristic. - Walk Score / photo gallery enrichment is NOT available on this URL-only actor — switch to the multi-mode parent for those toggles.
❓ FAQ
Is it legal to scrape Zillow? Scraping public data is legal in most jurisdictions — see § Is it legal to scrape Zillow? below. The actor only reads what's already public on the listing page; private user data is never touched.
Can I get banned for using this actor? No. The actor is the one making requests, not your account. Apify proxies rotate IPs upstream so individual users aren't fingerprinted.
Why a URL-input actor instead of typed filters? Zillow's filter UI is rich (price, beds, school rating, 50+ property features, sold-in-last, days-on-Zillow, etc.). Encoding all of that in JSON input is tedious. URL input lets you set up the search visually on Zillow once, then re-run on any schedule.
Why are some fields null? Not every Zillow listing has every field populated — agent emails are missing on some listings, year-built is missing on new construction, lot size is missing on condos. Null in the dataset means the source listing didn't expose that data.
Can I schedule runs? Yes — use Apify's built-in Schedules feature in the Console. Common pattern: run weekly on the same Zillow URL to track new listings and price changes.
What happens when a run is aborted mid-way? Properties already enriched and pushed to the dataset are persisted. The next run starts from scratch (this single-mode actor doesn't checkpoint between runs).
How do I avoid the test-mode property cap on the demo URL?
Don't use the default Zillow URL (Beverly Hills, CA listings). Replace zillowUrl with your own URL and the cap is restored to your plan's normal limit (paid: unlimited; free: 15 per run).
Why does my paid run still show free-plan limits?
Confirm the run was started under your paid plan (the RUN_SUMMARY.plan field will say paid). API-origin runs sometimes hit a stale auth context — re-running through Console should resolve.
Can I do ZIP code or ZPID lookups? Not in this actor. This is the single-mode URL search version. For ZIP code input, use zillow-zip-search. For ZPID lookups (or any-mode flexibility), use zillow-property-agent-data-scraper.
Does this actor enrich Walk Score and full photo galleries?
Not in this version. Per-property enrichment toggles (enrichWalkScore, enrichPhotos) are only available on the multi-mode parent actor.
How fresh is the data? Each run hits live Zillow listing pages, so data is as fresh as Zillow itself — typically within minutes for new listings and price changes.
🔗 Related actors
| Actor | Description |
|---|---|
| zillow-url-search | This actor — paste any Zillow search URL or property page. |
| zillow-property-agent-data-scraper | Parent — multi-mode (ZIP + ZPID + URL), full filter control + per-property enrichment toggles. |
| zillow-zip-search | ZIP-code-only — simpler input for discovery runs. |
| zillow-mcp-server | MCP server — connect Claude Desktop, Cursor, or ChatGPT to Zillow data with narrow tools per mode. |
🛟 Support & feedback
Found something useful, broken, or worth improving? Three ways to help and stay in the loop:
- ⭐ Leave a review on the Apify Store — if this actor saved you time, a quick review helps other users find it and helps the author prioritize.
- 🔖 Bookmark the actor — open Apify Console → click the ★ Save icon on the actor page so it shows up in your sidebar for the next run.
- 🐞 Open an issue on the actor's Apify Store page — bug reports, feature requests, and edge cases all welcome via the Issues tab.
⚖️ Is it legal to scrape Zillow?
Scraping publicly available data — including Zillow listings — is legal in the United States and most other jurisdictions. The seminal case is hiQ Labs v. LinkedIn (9th Cir. 2019, reaffirmed 2022), which held that scraping public web data does not violate the Computer Fraud and Abuse Act. See Apify's overview of web-scraping legality for a deeper read.
That said, three responsibilities sit with you:
- Zillow's Terms of Service — review them and use the data in line with what they permit.
- Personal data laws (GDPR / CCPA / CAN-SPAM / similar) — listings include personal information for licensed agents (a public role), which still falls under data-protection regimes. Make sure you have a legitimate basis to process it, especially for outreach.
- Downstream use — the data is provided as-is. The author makes no representation about Zillow's underlying accuracy or fitness for any specific purpose.
If unsure about a specific use case, consult legal counsel.
