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

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Apify Actor

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 / rentZestimate null — Zillow doesn't always publish a Zestimate on every listing.
  • agentLicenseNumber null — not every brokerage exposes the license number on the listing page.
  • photos array has 1 entry — that's because this sample run had enrichPhotos: false. With enrichPhotos: true you get the full gallery (typically 20–60 URLs).
  • walkScore / transitScore / bikeScore null — those populate only when you set enrichWalkScore: 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_max
  • sqft_min / sqft_max / lotSize_min / lotSize_max / built_min / built_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 (string) — free-text keyword filter ("pool, hardwood floors").
  • Home typesisSingleFamily, isTownhouse, isMultiFamily, isCondo, isLotLand, isApartment, isManufactured.
  • Listing typesisForSaleByOwner, isForSaleByAgent, isNewConstruction, isAuction, isForSaleForeclosure, includeForeclosed, includePreForeclosure.
  • Property featureshasGarage, hoa_max, hasPool, hasAirConditioning, isWaterfront, isBasementFinished, isCityView, isMountainView, isParkView, isWaterView, is3dHome, isOpenHousesOnly.
  • Rental featureslargeDogsAllowed, smallDogsAllowed, catsAllowed, noPets, parkingAvailable, inUnitLaundry, furnished, hardwoodFloor, utilitiesIncluded, disabledAccess, shortTermLease, outdoorSpace, controlledAccess, highSpeedInternet, elevator, acceptsApplications, incomeRestricted.
  • 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.


💰 Pricing

EventTierPrice
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 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 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:

KeyTypeDescription
RUN_SUMMARYJSONFull run statistics — input, properties (found / enriched / skipped), email yield, billing, plan tier, error info if any.
status.htmlHTMLAuto-refreshing status page rendered live during the run. View via the Live View tab in Apify Console.
SKIPPED_ITEMSJSONPer-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_APPLIEDJSONArray of {id, message} for every free-tier ceiling hit during this run. Empty/omitted on paid runs.
USER_MESSAGEJSONOnboarding banner shown on a paid user's 1st and 3rd paid run. Empty/omitted otherwise.
UNKNOWN_INPUT_KEYSJSONLists 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 directly
curl -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

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).


You want to scrape Zillow by…Use this actor
Multi-mode (ZIP + ZPID + URL) — full flexibilityzillow-property-agent-data-scraper
ZIP code only — simpler input, single-modeThis actor
Search URL — paste any Zillow search pagezillow-url-search
MCP server — connect Claude Desktop / Cursor / ChatGPT to Zillow toolszillow-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.