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