Extract Zillow real estate listings by pasting any Zillow search URL — filters baked into the URL are honored. 74 output fields including agent contacts, price history, Zestimate, 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 URL Search Property Scraper are documented here.
The format follows Keep a Changelog .
[0.0.13] - 2026-05-21
Added
Plain city URLs now work — paste a Zillow city link such as https://www.zillow.com/austin-tx/ or https://www.zillow.com/austin-tx/houses/ and it's read as a location search; previously these completed with zero results unless you first applied a filter on Zillow. The home-type and listing segments — /houses/, /condos/, /townhomes/, /apartments/, /multi-family/, /lots-land/, /manufactured/, /sold/, /rentals/, /fsbo/ — are mapped to the matching search. searchQueryState, _rb browse, recently-sold, and single-property URLs are unaffected.
Same input shape, output columns, dataset shape, and pricing.
[0.0.12] - 2026-05-21
Fixed
Plain Zillow browse URLs now work — for-sale browse URLs like https://www.zillow.com/homes/Beverly-Hills,-CA_rb/ are now read as a location search (previously they completed with zero results). Recently-sold and searchQueryState URLs are unaffected.
Clearer message for URLs without search parameters — if a URL can't be read as a Zillow search, the run now explains how to copy a working search URL instead of suggesting you widen your filters.
Same input shape, output columns, dataset shape, and pricing.
[0.0.10] - 2026-05-19
Fixed
Apartment-building rentals now emit useful data — for ForRent URLs 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. Ported from parent zillow-scraper 2.3.69.
Same input shape, output is a superset (two new fields), same pricing.
[0.0.9] - 2026-05-19
Changed
URL handling — clearer error when zillowUrl is missing (now includes an example URL, how to obtain one, and the SDK call shape). Added a pre-flight warning when the URL looks like a single-address shortcut (e.g. /homes/<address>_rb/) — those redirect on Zillow's side and never return listings, so the warning points to the right alternative (a /homedetails/.../<zpid>_zpid/ URL — which this actor auto-detects). Added a tip when a /homedetails/.../<zpid>_zpid/ URL is auto-converted, surfacing the details-URL shape as the shortest path for single-property lookups.
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 result set" and "we hit the cap, more available." Uses maxProperties (this actor's per-run cap). 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.
Input schema — zillowUrl field description rewritten to explain the search-URL requirement (must contain searchQueryState=) and call out that single-address shortcuts (/homes/<address>_rb/) won't return listings.
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, Walk Score & photo gallery limits); 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
Changed
Internal processProperty mapping brought in sync with parent zillow-scraper 2.3.52 + 2.3.53 (walk/transit/bike score key-name fix; photos endpoint envelope fix). No customer-visible change in this actor — enrichWalkScore and enrichPhotos toggles aren't exposed on this URL-only actor today (they're stripped at input validation with a notice pointing customers to the parent). The patches keep the spinoff code aligned with parent in case those toggles are ever surfaced here.
[0.0.6] - 2026-05-07
Changed
Related actors section now lists the full Zillow family — zillow-mcp-server (MCP integration for Claude Desktop / Cursor / ChatGPT) added alongside the parent, zillow-zip-search, and this actor's existing rows.
[0.0.5] - 2026-05-07
Fixed
Sold-listing URLs (searchQueryState URLs with rs:true filter, and /homes/recently_sold/<Location>_rb/ URLs) returned empty datasets. Root cause: the URL-mode search depended on a default set of home-type filters (isSingleFamily, isTownhouse, isCondo, isApartment) which the listings endpoint requires for sold queries. These defaults were missing in this actor's input config — the upstream API returns zero results for sold queries when home_type is unset, even though for-sale queries succeed without it. Now applied as a hardcoded default in the URL-mode pipeline; user filters embedded in searchQueryState continue to take priority.
Added
https://www.zillow.com/homes/recently_sold/<Location>_rb/ restored as a documented recipe in the README ("Shape 2 — Recently sold listings"). Validated end-to-end via prod smoke. The Shape 1 description now also explicitly mentions sold-listing coverage via the rs:true flag in searchQueryState.
[0.0.4] - 2026-05-07
Fixed
README recipe section listed two URL shapes that returned empty datasets: bare location URLs (https://www.zillow.com/homes/<Location>_rb/) which upstream rejects as "wrong format", and recently-sold URLs (https://www.zillow.com/homes/recently_sold/<Location>_rb/) which parse correctly but return zero properties from the listings endpoint. Both shapes removed from the README recipe section, the "What it does" overview, and the Programmatic / API curl example. Surviving recipes — searchQueryState-encoded search URLs and single-property _zpid pages — were validated end-to-end via prod smoke against build 0.0.3.
[0.0.3] - 2026-05-06
Removed
maxBudgetUsd input field. Apify's built-in "Maximum cost per run" run option already provides per-run cost ceilings (Run options panel, identical semantics). Two overlapping mechanisms confused users — keeping only the platform-native one. Pasting maxBudgetUsd in input is now a soft UNKNOWN_INPUT_KEYS warning with a redirect to the Run option (no hard error). Free-tier $1.20 cap continues to apply automatically — it's a code-side safeguard, not a user setting.
[0.0.2] - 2026-05-06
Fixed
Default example URL now includes searchQueryState so the upstream listings endpoint accepts it on first trial. The 0.0.1 default (/homes/Beverly-Hills,-CA_rb/) was rejected by upstream as "wrong format" — trial runs returned an empty dataset. New default routes through the parsed-URL path (location-mode search) which matches how customers paste URLs from Zillow's filter UI in practice.
[0.0.1] - 2026-05-06
Added
Initial release of Zillow URL Search Property Scraper.
Search Zillow listings by pasting any Zillow search URL — saved searches, city listings, sold listings, rentals with filters, single-property pages. Filters baked into the URL's searchQueryState (price, beds, baths, status, home type, days on Zillow, school rating, 50+ property features) are honored automatically.
74-column output dataset including agent contacts (name, phone, email), price history, Zestimate, school ratings, broker details, and property specs.
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).
Free plan limits: 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) listing every URL / zpid skipped during the run with reason and category (not_found, error, free_limit, test_run_cap).
Free-tier ceiling tracking (FREE_LIMITS_APPLIED KVS) — empty/omitted on paid runs.
Onboarding banner (USER_MESSAGE KVS) shown to paid users on their 1st and 3rd paid run.
Unknown-input-keys diagnostic (UNKNOWN_INPUT_KEYS KVS) — surfaces input field names that were silently dropped because they don't belong to this actor's schema (common when copy-pasting input from the multi-mode parent or the sibling ZIP-only actor).
Test-run cap on demo input. Runs that leave the zillowUrl at the example value (Beverly-Hills,-CA_rb) cap output at 10 properties (~$0.80 max on FREE, ~$0.50 on DIAMOND), making "Try" runs predictable on any plan. The cap is restored to the normal plan limit (paid: unlimited; free: 15 properties / run) as soon as you change the URL.