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.
All notable changes to Zillow ZIP Code Property Scraper are documented here.
The format follows Keep a Changelog .
[0.0.14] - 2026-05-19
Fixed
Apartment-building rentals now emit useful data — for ForRent searches that return multi-unit apartment buildings (lat-long fallback identifier, isBuilding: true), the actor now emits a row directly from the search payload instead of pushing empty rows from a failed detail-enrichment call. brokerName = building name, plus address fields parsed from p.address, price from the lowest unit rent, propertyDescription summarising floorplans. New additive fields availabilityCount and unitsAvailable carry unit-level detail. Ported from parent zillow-scraper 2.3.69.
Same input shape, output is a superset (two new fields), same pricing.
[0.0.13] - 2026-05-19
Fixed
Sale-channel routing bug for ForRent searches — the historical "catch-all" otherListings=true parameter sent when both isForSaleByAgent and isForSaleByOwner had the same value silently collapses ForRent searches to zero results upstream. The "else" branch now sends both flags explicitly as true, which works for both ForSale and ForRent. Ported from parent zillow-scraper 2.3.66.
Same input shape, output columns, KVS records, and pricing.
[0.0.12] - 2026-05-19
Fixed
Rental search default-fix — sale-flags clearing bug — 0.0.11 set the cleared flags to explicit false instead of deleting them. Empirically the upstream returns 0 results for explicit-false vs full inventory for absent keys. Auto-fix now deletes the keys. Ported from parent zillow-scraper 2.3.65.
Same input shape, output columns, KVS records, and pricing.
[0.0.11] - 2026-05-19
Changed
Rental search default-fix — extended — the auto-fix introduced in 0.0.10 also now clears the form-default sale-side listing flags (isForSaleByAgent: true + isForSaleByOwner: true) on ForRent searches when they match the form-default signature. Ported from parent zillow-scraper 2.3.64.
Same input shape, output columns, KVS records, and pricing.
[0.0.10] - 2026-05-19
Changed
Rental search default-fix — auto-enables the "Apartments" home type when it detects you took the form defaults on a ForRent search (i.e. Houses + Townhomes + Condos + Multi-family all on, Apartments off). The original defaults are tuned for ForSale where apartments are rare; for rentals apartments are the majority of inventory, and the same defaults were yielding ~83% zero-result rate vs ~20% with apartments on. If you really want SFR-only rentals, set isApartment=false together with the other home types you want off — the auto-fix only triggers on the exact form-default signature.
Input schema — isApartment field description rewritten to call out the rental-search best practice and explain the auto-fix.
Ported from parent zillow-scraper 2.3.63. Same input shape, output columns, KVS records, and pricing.
[0.0.9] - 2026-05-19
Changed
RUN_SUMMARY — added properties.capStatus (unlimited_complete / cap_reached / no_results) and properties.capNote so consumers reading the run via the API can tell the difference between "this is the full upstream inventory" and "we hit the cap, more available." The same note is also logged to the run console. Solves the recurring confusion where users widen filters expecting more results and keep getting the same count.
Same input shape, output columns, KVS records, and pricing.
[0.0.8] - 2026-05-07
Changed
README — aligned to Apify quality template. Hero rewritten with value-first prose and a "beyond what Zillow's official API offers" comparison; replaced shields.io placeholder badge with the proper Apify Actor badge; numbered 3-step Quick start; new 💡 Tips & Best Practices section (4 sub-sections × 3 bullets); promoted disclaimer to dedicated ⚖️ Is it legal to scrape Zillow? H2 with link to Apify's web-scraping legality blog; FAQ expanded to 11 Q&As (added ban risk, data freshness, cost cap, run speed); output sample trimmed from 100+ lines to the 25 most-used keys with a "+49 more in the dataset" note; refined 🛟 Support & feedback section to template format. No functional changes — same input, output, dataset shape, and pricing.
[0.0.7] - 2026-05-07
Fixed
walkScore, transitScore, and bikeScore columns are no longer silently null when enrichWalkScore: true. Upstream returns these as walkscore / transit_score / bikescore (lowercase, distinct keys per metric); the mapping was reading .score and getting null. Three columns had been emitting null on every enriched row since the feature shipped.
photos[] column was returning only the main listing photo (single-element array) when enrichPhotos: true. Upstream wraps the gallery in a {images: [url1, url2, ...]} envelope, but the mapping checked Array.isArray(imagesResponse) (false for the envelope) and silently fell through to the [mainPhoto] fallback. Customers toggling the flag have been getting one photo instead of the full gallery since the feature shipped.
Both fixes ported 1:1 from parent zillow-scraper 2.3.52 + 2.3.53.
[0.0.6] - 2026-05-07
Changed
Related actors section now lists the full Zillow family — zillow-url-search (paste any Zillow search URL) and zillow-mcp-server (MCP integration for Claude Desktop / Cursor / ChatGPT) added alongside the parent and this actor's existing rows.
[0.0.5] - 2026-05-06
Changed
Related actors section now lists only Zillow-domain actors. The previous table also pointed to Instagram and TikTok scrapers, which don't help anyone scraping real estate. The section now shows a 2-row decision matrix: this actor (single-mode ZIP code) and the multi-mode parent (ZIP + ZPID + URL).
[0.0.4] - 2026-05-06
Fixed
Per-field output documentation now visible in the Apify Console and to API/MCP clients. The 74-column dataset schema (titles, descriptions, types, examples for every output field) inherited from the parent had been silently ignored because .actor/actor.json carried an inline display-only block instead of pointing to ./dataset_schema.json. AI agents reading the dataset shape via API and visitors browsing the Console dataset view now see the per-column documentation that's always been on disk.
Widened lotAreaValue and daysOnZillow type unions to include string (mirrored from parent zillow-scraper 2.3.49). Both columns occasionally come back from the upstream feed as pre-formatted strings instead of raw numbers; the previous integer/number/null union rejected those rows. No change to dataset shape — strings have always been emitted in those columns when upstream returned them.
[0.0.3] - 2026-05-06
Added
Test-run cap on demo input. Runs that leave the ZIP code at the example value 90210 and don't set any filters now cap output at 10 properties (~$0.80 max on FREE tier, ~$0.50 on DIAMOND), making "Try" runs predictable on any plan. Previously, paid customers experimenting with the default seed could trigger uncapped enrichment of however many listings 90210 currently returns ($4–14+ per trial). A console banner explains the cap, and a USER_MESSAGE Storage record with id test_run_default_input_v1 makes the same explanation visible to API-origin runs that never open the run console.
Changed
The cap is restored to the normal plan limit (paid: unlimited; free: 15 properties / run) as soon as you change the ZIP code or add at least one filter.
[0.0.2] - 2026-05-06
Changed
Output sample in the README is now the full row (all 74 columns) from a real run, instead of a 26-field excerpt. Long narrative fields (propertyDescription, priceHistory) are condensed for readability; everything else is shown verbatim with notes on which columns commonly come back as null and which require enrichWalkScore / enrichPhotos to populate.
[0.0.1] - 2026-05-06
Added
Initial release of Zillow ZIP Code Property Scraper.
Search Zillow listings by US ZIP code with filters for price range, beds/baths, square footage, lot size, year built, home type (single family / townhouse / condo / multi-family / manufactured / lot-land), listing status (For Sale / For Rent / Recently Sold), days on Zillow, keywords, school ratings, and 50+ property features (pool, garage, view, basement, 3D tour, waterfront, etc.).
Optional enrichment: Walk Score / Transit Score / Bike Score and full photo gallery URLs.
Free plan limits: up to 20 ZIP codes per run, up to 15 properties per run, $1.20 per-run budget, agent email domains masked.
Live status page (HTML) and RUN_SUMMARY Key-Value Store record at end of every run.
Skipped-items audit (SKIPPED_ITEMS KVS record) listing every ZIP and property skipped during the run with reason and category (filter, not_found, error, free_limit, not_resolvable).
Onboarding banner (USER_MESSAGE KVS record) shown to paid users on their 1st and 3rd paid run.
Unknown-input-keys diagnostic (UNKNOWN_INPUT_KEYS KVS record) — surfaces input field names that were silently dropped because they don't belong to this actor's schema (common when copy-pasting input from other Zillow scrapers).
Pay-per-event pricing: $0.08–$0.05 per property enriched, tiered by Apify plan (FREE → DIAMOND), plus $0.00005 per actor start (one-time, per GB of memory).