Zillow ZIP Code Property Scraper
Pricing
Pay per event
Zillow ZIP Code Property Scraper
Extract Zillow real estate listings by ZIP code with 70+ filters and 70+ output fields including agent contacts, price history, 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
8 days ago
Last modified
Categories
Share
Find homes for sale, rent, and sold across the US by ZIP code — get listing details, photos, and agent contacts in one structured row per property. From $0.05 per property on paid plans, $0.08 on Free.
Zillow's public API doesn't expose ZIP-level discovery with filters. This actor reads anything Zillow shows in the browser for a given ZIP — full filter set, agent emails and phones, photo galleries, price-history arrays, school ratings, and 70+ output columns per row.
🎯 What it does
You point the actor at a list of US ZIP codes and get one structured row per property in the dataset. 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
- Optional enrichment — Walk Score, Transit Score, Bike Score, full photo gallery URLs
Filter the output with 70+ knobs: status, price range, beds/baths, square footage, lot size, year built, home type (single family / townhouse / condo / multi-family / manufactured / lot-land), days on Zillow, keyword search, school ratings, listing type (FSBO / agent / new construction / auction / foreclosure), property features (pool, garage, view, basement, 3D tour, waterfront, accessibility), and rental-specific filters (pets, parking, furnished, in-unit laundry, lease length, utilities).
📦 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, full photo gallery, neighborhood, lot size, garage spaces, view, heating/cooling, last tax assessed value, etc. See .actor/dataset_schema.json for every column.
⚡ Quick start
- Paste this input into the Input tab in the Apify Console.
- Click Run — the first run takes 30–60 seconds.
- Open the Output tab — preview the dataset, export as JSON / CSV / Excel.
{"zipCodes": ["78704"],"status_type": "ForSale","maxPropertiesPerZip": 5}
That's a single ZIP, capped at 5 properties — under $0.50 to test.
🧭 When to use it
- Real-estate lead generation — collect agent emails + phones across a target metro by ZIP-code coverage.
- Market research — pull all For Sale / Recently Sold properties in a geo for a price/sqft analysis.
- Brokerage outreach — segment by listing type (FSBO, new construction, auction, foreclosure) and contact the listing agent.
- Rental sourcing — find For Rent listings with specific filters (pet policy, parking, furnished).
- Price tracking — re-run weekly across the same ZIPs to track new listings, price changes, and days on market.
🛠 Input
The actor accepts 70+ input fields. The most-used:
zipCodes(required, array of strings) — US ZIP codes to search. Up to 5 ZIPs are bundled per upstream search batch automatically. Free plan: up to 20 ZIPs per run.maxPropertiesPerZip(integer, default 0=unlimited) — cap properties returned per search batch.status_type(enum, default ForSale) —ForSale/ForRent/RecentlySold.- Price —
price_min,price_max,rentMinPrice,rentMaxPrice. - Property dimensions —
beds_min/max,baths_min/max,sqft_min/max,lotSize_min/max,built_min/max. doz— days on Zillow (1,7,14,30,90).sort—Newest,Highest_Price,Lowest_Price,Bedrooms,Square_Feet,Lot_Size,Year_Built,Days_on_Zillow.keywords— free-text keyword filter (e.g."pool, hardwood floors").- Home types —
isSingleFamily,isTownhouse,isMultiFamily,isCondo,isLotLand,isApartment,isManufactured. - Listing types —
isForSaleByOwner,isForSaleByAgent,isNewConstruction,isAuction,isForSaleForeclosure(tri-state where applicable). - Property features —
hasGarage,hoa_max,hasPool,hasAirConditioning,isWaterfront,isBasementFinished, view filters,is3dHome,isOpenHousesOnly. - Rental features — pet policies, parking, furnished, in-unit laundry, utilities, lease length, accessibility.
- Schools —
schools(Public/Private/Charter),schoolsRating(1–10),includeUnratedSchools. - Enrichment —
enrichWalkScore(Walk/Transit/Bike scores),enrichPhotos(full photo gallery URLs).
See the Input tab in Apify Console for the full list with descriptions, types, defaults, and examples.
💰 How much will scraping Zillow cost?
Pay-per-event. You pay only when the actor finishes enriching a property — properties filtered out by your input filters before enrichment 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 — covers all events.
🆓 Free vs paid plan
| Free plan | Paid plan | |
|---|---|---|
| Properties per run | up to 15 | unlimited |
| ZIP codes per run | up to 20 | unlimited |
| Per-run budget ceiling | $1.20 | unlimited |
| Agent email visibility | domain masked (name@xxx) | full email |
| All filters + features | ✅ | ✅ |
The first paid run unlocks unlimited properties + ZIPs + budgets + full agent emails immediately — no waiting period.
🧪 Filter recipes
Single-family For Sale homes in Austin TX, $400k–$900k:
{"zipCodes": ["78704", "78745", "78751"],"status_type": "ForSale","isSingleFamily": true,"isCondo": false,"isTownhouse": false,"price_min": 400000,"price_max": 900000,"beds_min": 3,"doz": "30","sort": "Newest"}
Recently sold luxury condos in Miami FL:
{"zipCodes": ["33139", "33140", "33141"],"status_type": "RecentlySold","isCondo": true,"isSingleFamily": false,"price_min": 1500000,"sort": "Highest_Price"}
Pet-friendly furnished rentals in Brooklyn NY:
{"zipCodes": ["11201", "11215", "11217"],"status_type": "ForRent","rentMaxPrice": 4500,"largeDogsAllowed": true,"catsAllowed": true,"furnished": true,"inUnitLaundry": true}
📡 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. View via the Live View tab. |
SKIPPED_ITEMS | Per-item list of every ZIP / property skipped, with reason and category (filter, not_found, error, free_limit, not_resolvable). |
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 the actor's schema (e.g. mode, zpids — fields from the parent multi-mode actor). |
🤖 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-zip-search/run-sync-get-dataset-items?token=$TOKEN" \-H 'Content-Type: application/json' \-d '{"zipCodes":["78704"],"status_type":"ForSale","maxPropertiesPerZip":20}'
The actor exposes its schema for MCP / agent consumption — dataset_schema.json declares every output column with type and description, and input_schema.json declares every input field. For a dedicated MCP wrapper with narrow tools per mode, see zillow-mcp-server.
💡 Tips & Best Practices
Getting maximum results
- Validate before scaling. Start with one ZIP and
maxPropertiesPerZip: 5, spot-check the first row, then expand. - Layer filters that drop matches pre-enrichment. Tri-state listing-type filters, school rating, and home-type checkboxes narrow the candidate set before paid events fire.
- For sold-listing runs, set at least one home-type filter — sold queries return zero with no home types selected (the actor sets defaults if you forget).
Cost optimization
- Use Apify's Maximum cost per run Run option for a hard ceiling — covers all events.
- Toggle enrichments on demand.
enrichWalkScoreandenrichPhotosare off by default — turn on only when downstream consumers need those columns. - Schedule, then re-process offline. Pull once, transform repeatedly in Excel / SQL / pandas — don't re-run the actor for filter tweaks.
Performance
- ZIP searches batch up to 5 ZIPs per upstream call. Resolved-city overlaps across batches are skipped automatically — no double-charging.
- Avoid huge nationwide ZIP lists in a single run — split into smaller scheduled runs and aggregate downstream for predictable cost and latency.
- ZIPs that resolve to small towns may return zero results; the actor pre-resolves ZIP → City, ST and reports
not_resolvablefor unrecognized ZIPs.
Data quality
- Know what's nullable. FSBO listings often omit agent details; rentals may omit
priceHistory; year-built is missing on some new construction. - Trace email confidence via
agentEmailSource—property_detailsis the strongest source,agent_search_fallbackis name-match heuristic. - Walk Score / photos require their toggles — they don't fire by default to keep the dataset lean.
❓ 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 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 ZIP cohort to track new listings + 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). For checkpointed runs use the parent multi-mode actor.
How do I avoid the test-mode property cap on demo input?
Don't use the default ZIP 90210 with no filters. Any ZIP other than 90210 (or 90210 with at least one filter set) runs at the normal property cap for your plan.
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 ZPID lookups or paste a Zillow search URL? Not in this actor. This is the single-mode ZIP search version. For ZPID or URL inputs, use zillow-property-agent-data-scraper (multi-mode) or zillow-url-search.
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.
How fast is one run? A 50-property ZIP run finishes in 60–120 seconds. Larger runs scale roughly linearly: 1,000 properties ≈ 15–25 minutes.
Can I cap the per-run cost? Yes — set Apify's Maximum cost per run in the Run options panel. The free-plan budget ceiling ($1.20) acts as another belt-and-suspenders cap.
🔗 Related actors
| Actor | Description |
|---|---|
| zillow-zip-search | This actor — ZIP-code-only, simpler input for discovery runs. |
| zillow-property-agent-data-scraper | Parent — multi-mode (ZIP + ZPID + URL), full filter control. |
| zillow-url-search | URL-only — paste any Zillow search page. |
| 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.
