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
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Zillow listings and agent contacts in one structured row per property — search by US ZIP codes with 70+ filters and 70+ output fields.
🎯 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).
⚡ Quick start
Minimal input — search Austin TX 78704 for For Sale listings:
{"zipCodes": ["78704"],"status_type": "ForSale","maxPropertiesPerZip": 50}
That run produces ~50 rows, one per property, with the default 70+ output columns.
📦 Output sample
A full row from a real run (Austin TX 78747, For Sale, single-family). All 74 columns shown; only the narrative propertyDescription and the long priceHistory array are condensed for readability.
{"zpid": "119617641","hdpUrl": "https://www.zillow.com/homedetails/10124-Pinnacle-Crest-Loop-Austin-TX-78747/119617641_zpid/","price": 375000,"status": "FOR_SALE","propertyDescription": "Tucked away on a quiet street in popular South Austin, this beautifully upgraded home offers ... (full description ~2000 chars)","homeType": "SINGLE_FAMILY","latitude": 30.140326,"longitude": -97.76442,"lotAreaValue": "4,843 sqft","lotAreaUnit": "sqft","priceChange": null,"datePriceChanged": null,"has3DModel": false,"hasVideo": false,"pageViewCount": 2172,"favoriteCount": 137,"listingType": "FSBA","streetAddress": "10124 Pinnacle Crest Loop","city": "Austin","state": "TX","zipcode": "78747","county": "Travis County","neighborhood": null,"agentName": "Hillary Smith","agentEmail": "hillary@homesmithatx.com","agentEmailSource": "agent_profile_direct","cellPhone": "512-585-1947","coAgentName": null,"coAgentNumber": null,"agentLicenseNumber": null,"brokerName": "HOMESMITH REALTY, LLC","brokerPhoneNumber": "(512) 585-1947","zestimate": null,"rentZestimate": null,"pricePerSqft": 157,"hoaFee": 47,"propertyTax": 7749,"bedrooms": 5,"bathrooms": 3,"bathroomsFull": 3,"bathroomsHalf": null,"livingArea": 2385,"lotSize": "4,843 sqft","yearBuilt": 2014,"stories": 2,"architecturalStyle": null,"parcelNumber": "04430309070000","view": "None","heating": "Central","cooling": "Ceiling Fan(s), Central Air","appliances": "Dishwasher, Dryer, Gas Range, Microwave, Refrigerator, Washer","flooring": "Carpet, Vinyl","roofType": "Composition, Shingle","laundryFeatures": null,"fireplaceFeatures": "None","communityFeatures": null,"hasPool": true,"hasGarage": true,"garageSpaces": null,"parking": null,"hasBasement": false,"daysOnZillow": "6 days","openHouseSchedule": "","lastSoldDate": null,"lastSoldPrice": null,"lastTaxPaid": 7749.95,"lastTaxAssessedValue": 378695,"priceHistory": [{ "date": "2026-04-30", "price": 375000, "event": "Listed for sale", "pricePerSquareFoot": 157, "source": "Unlock MLS", "postingIsRental": false },{ "date": "2022-11-16", "price": 2450, "event": "Listed for rent", "pricePerSquareFoot": 1, "source": "Zillow Rental Manager", "postingIsRental": true },{ "date": "2022-10-01", "price": 500000, "event": "Price change", "pricePerSquareFoot": 210, "source": "Unlock MLS", "postingIsRental": false }/* ... 22 more historical entries (price changes, listings, removals back to 2017) */],"schools": [{"distance": 1.3, "name": "Blazier Elementary School", "rating": 5, "level": "Primary","studentsPerTeacher": null, "assigned": null, "grades": "PK-6","link": "https://www.greatschools.org/texas/austin/10788-Blazier-Elementary-School/","type": "Public", "size": null, "totalCount": null, "isAssigned": null},{"distance": 3.3, "name": "Paredes Middle School", "rating": 2, "level": "Middle","studentsPerTeacher": null, "assigned": null, "grades": "6-8","link": "https://www.greatschools.org/texas/austin/9472-Paredes-Middle-School/","type": "Public", "size": null, "totalCount": null, "isAssigned": null},{"distance": 2.2, "name": "Akins High School", "rating": 4, "level": "High","studentsPerTeacher": null, "assigned": null, "grades": "9-12","link": "https://www.greatschools.org/texas/austin/9663-Akins-High-School/","type": "Public", "size": null, "totalCount": null, "isAssigned": null}],"mainPhoto": "https://photos.zillowstatic.com/fp/b7a661227b8e215ae7cd331817f37a34-p_d.jpg","photos": ["https://photos.zillowstatic.com/fp/b7a661227b8e215ae7cd331817f37a34-p_d.jpg"],"walkScore": null,"transitScore": null,"bikeScore": null}
Notes on the sample above:
zestimate/rentZestimatenull— Zillow doesn't always publish a Zestimate on every listing.agentLicenseNumbernull— not every brokerage exposes the license number on the listing page.photosarray has 1 entry — that's because this sample run hadenrichPhotos: false. WithenrichPhotos: trueyou get the full gallery (typically 20–60 URLs).walkScore/transitScore/bikeScorenull— those populate only when you setenrichWalkScore: true.
🧭 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 price changes + 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_min/price_max(integer) — for sale / sold listings.rentMinPrice/rentMaxPrice(integer) — for rent only.beds_min/beds_max/baths_min/baths_maxsqft_min/sqft_max/lotSize_min/lotSize_max/built_min/built_maxdoz— 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(string) — free-text keyword filter ("pool, hardwood floors").- Home types —
isSingleFamily,isTownhouse,isMultiFamily,isCondo,isLotLand,isApartment,isManufactured. - Listing types —
isForSaleByOwner,isForSaleByAgent,isNewConstruction,isAuction,isForSaleForeclosure,includeForeclosed,includePreForeclosure. - Property features —
hasGarage,hoa_max,hasPool,hasAirConditioning,isWaterfront,isBasementFinished,isCityView,isMountainView,isParkView,isWaterView,is3dHome,isOpenHousesOnly. - Rental features —
largeDogsAllowed,smallDogsAllowed,catsAllowed,noPets,parkingAvailable,inUnitLaundry,furnished,hardwoodFloor,utilitiesIncluded,disabledAccess,shortTermLease,outdoorSpace,controlledAccess,highSpeedInternet,elevator,acceptsApplications,incomeRestricted. - 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.
💰 Pricing
| Event | Tier | Price |
|---|---|---|
| Property Data Enriched (primary) | FREE | $0.08 |
| BRONZE | $0.07 | |
| SILVER | $0.06 | |
| GOLD | $0.05 | |
| PLATINUM | $0.05 | |
| DIAMOND | $0.05 | |
| Actor Start (one-time per run) | all tiers | $0.00005 / GB of memory |
You only pay for properties that were successfully enriched (full property + agent + history data fetched). Search-and-skip properties (filtered out by your input filters before enrichment) are free.
Examples (FREE tier):
- 10 properties enriched → ~$0.80
- 100 properties enriched → ~$8.00
- 1,000 properties enriched → ~$80.00
🆓 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 other filters + features | ✅ | ✅ |
The first paid run unlocks unlimited properties + ZIPs + budgets + full agent emails immediately — no waiting period.
🧪 Filter recipes
Recipe 1 — 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"}
Recipe 2 — Recently sold luxury condos in Miami FL
{"zipCodes": ["33139", "33140", "33141"],"status_type": "RecentlySold","isCondo": true,"isSingleFamily": false,"isTownhouse": false,"price_min": 1500000,"sort": "Highest_Price"}
Recipe 3 — 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 a few records to the run's Storage tab:
| Key | Type | Description |
|---|---|---|
RUN_SUMMARY | JSON | Full run statistics — input, properties (found / enriched / skipped), email yield, billing, plan tier, error info if any. |
status.html | HTML | Auto-refreshing status page rendered live during the run. View via the Live View tab in Apify Console. |
SKIPPED_ITEMS | JSON | Per-item list of every ZIP / property skipped during the run, with reason and category (filter, not_found, error, free_limit, not_resolvable). Useful for debugging and re-running the error cohort. |
FREE_LIMITS_APPLIED | JSON | Array of {id, message} for every free-tier ceiling hit during this run. Empty/omitted on paid runs. |
USER_MESSAGE | JSON | Onboarding banner shown on a paid user's 1st and 3rd paid run. Empty/omitted otherwise. |
UNKNOWN_INPUT_KEYS | JSON | Lists any input field names that were not part of the actor's schema (e.g. mode, zpids, zillowUrl — fields from the parent multi-mode actor). Empty/omitted if all input keys are recognized. |
🤖 Programmatic / API use
# Start a synchronous run + read the dataset directlycurl -X POST "https://api.apify.com/v2/acts/zillow-zip-search/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{"zipCodes":["78704"], "status_type":"ForSale", "maxPropertiesPerZip":20}'
The actor also 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.
❓ FAQ
Is it legal to scrape Zillow?
Public real-estate listing data has been collected and resold for years; this actor extracts data already publicly visible to any browser visitor. You are responsible for complying with Zillow's Terms of Service and any applicable local laws when using the output (especially for outreach to listing agents).
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, etc. 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 actor doesn't checkpoint between runs).
How do I avoid the test-mode 10-property cap?
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 the parent actor zillow-property-agent-data-scraper which supports all three modes (ZIP / ZPID / URL).
🔗 Related actors
| You want to scrape Zillow by… | Use this actor |
|---|---|
| Multi-mode (ZIP + ZPID + URL) — full flexibility | zillow-property-agent-data-scraper |
| ZIP code only — simpler input, single-mode | This actor |
| Search URL — paste any Zillow search page | zillow-url-search |
| MCP server — connect Claude Desktop / Cursor / ChatGPT to Zillow tools | zillow-mcp-server |
🛟 Support & feedback
- Bug or unexpected behavior? Open an Issue in the actor's Issues tab.
- Feature request? Same place — drop a one-paragraph note describing your use case.
- Star ratings + reviews in the Apify Store help others find the actor.
⚖️ Disclaimer
This actor extracts data already publicly displayed on Zillow's website. It is provided "as-is" without warranty. You are responsible for complying with Zillow's Terms of Service and any applicable laws (including data-protection rules like CAN-SPAM, GDPR, CCPA) when using the extracted data, especially for outreach to agents and brokers.