Zillow ZIP Code Property Scraper avatar

Zillow ZIP Code Property Scraper

Pricing

Pay per event

Go to Apify Store
Zillow ZIP Code Property Scraper

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

Andrey Afanasenko

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

8 days ago

Last modified

Share

Apify Actor

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

  1. Paste this input into the Input tab in the Apify Console.
  2. Click Run — the first run takes 30–60 seconds.
  3. 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

  1. Real-estate lead generation — collect agent emails + phones across a target metro by ZIP-code coverage.
  2. Market research — pull all For Sale / Recently Sold properties in a geo for a price/sqft analysis.
  3. Brokerage outreach — segment by listing type (FSBO, new construction, auction, foreclosure) and contact the listing agent.
  4. Rental sourcing — find For Rent listings with specific filters (pet policy, parking, furnished).
  5. 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.
  • Priceprice_min, price_max, rentMinPrice, rentMaxPrice.
  • Property dimensionsbeds_min/max, baths_min/max, sqft_min/max, lotSize_min/max, built_min/max.
  • doz — days on Zillow (1, 7, 14, 30, 90).
  • sortNewest, 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 typesisSingleFamily, isTownhouse, isMultiFamily, isCondo, isLotLand, isApartment, isManufactured.
  • Listing typesisForSaleByOwner, isForSaleByAgent, isNewConstruction, isAuction, isForSaleForeclosure (tri-state where applicable).
  • Property featureshasGarage, hoa_max, hasPool, hasAirConditioning, isWaterfront, isBasementFinished, view filters, is3dHome, isOpenHousesOnly.
  • Rental features — pet policies, parking, furnished, in-unit laundry, utilities, lease length, accessibility.
  • Schoolsschools (Public/Private/Charter), schoolsRating (1–10), includeUnratedSchools.
  • EnrichmentenrichWalkScore (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.

PlanPrice 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 planPaid plan
Properties per runup to 15unlimited
ZIP codes per runup to 20unlimited
Per-run budget ceiling$1.20unlimited
Agent email visibilitydomain 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:

KeyWhat it holds
RUN_SUMMARYFull run statistics — input, properties (found / enriched / skipped), email yield, billing, plan tier, error info.
status.htmlAuto-refreshing status page rendered live during the run. View via the Live View tab.
SKIPPED_ITEMSPer-item list of every ZIP / property skipped, with reason and category (filter, not_found, error, free_limit, not_resolvable).
FREE_LIMITS_APPLIEDFree-tier ceilings hit during the run. Empty on paid runs.
USER_MESSAGEOnboarding banner shown on a paid user's 1st and 3rd paid run.
UNKNOWN_INPUT_KEYSLists 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. enrichWalkScore and enrichPhotos are 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_resolvable for 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 agentEmailSourceproperty_details is the strongest source, agent_search_fallback is 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.

ActorDescription
zillow-zip-searchThis actor — ZIP-code-only, simpler input for discovery runs.
zillow-property-agent-data-scraperParent — multi-mode (ZIP + ZPID + URL), full filter control.
zillow-url-searchURL-only — paste any Zillow search page.
zillow-mcp-serverMCP 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.

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:

  1. Zillow's Terms of Service — review them and use the data in line with what they permit.
  2. 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.
  3. 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.