Zillow Price Drop & New Listing Monitor
Pricing
$4.00 / 1,000 change events
Zillow Price Drop & New Listing Monitor
Watch Zillow ZIP codes for what changed since your last run: new listings, price cuts, price increases, removed listings and back-on-market. Built for a daily or weekly schedule plus a webhook, so you get alerts, not full dumps.
Pricing
$4.00 / 1,000 change events
Rating
0.0
(0)
Developer
Luke Hunter
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
For real-estate investors, agents, analysts and homebuyers tracking selected ZIP codes. One run returns change events, not a full dump: new listings, price cuts, price increases, listings removed from search results, and listings back on the market. Run it daily or weekly to turn those changes into alerts. Pay-per-result: $0.004 per change event — 250 events = $1. The free per-ZIP summary row never counts toward that. Try it free with Apify's monthly platform credit.
This is a real estate price monitor, not a raw scraper: point it at the same ZIP codes every run and it remembers what it saw last time, so you only pay for what actually changed.
Quick start (2 minutes)
- Open the Input tab (no Zillow account or API key needed).
- Use this prefill (swap in your own ZIP codes):
{"zipCodes": ["90210", "10001"],"maxEvents": 200}
- Click Start. The first run for a ZIP is always a baseline: it saves what's currently listed and delivers no change events yet, because there is nothing to compare against. Run it again — on a schedule, or by clicking Start a second time — to start getting new_listing, price_cut, price_increase, removed and back_on_market events.
Run it as a Zillow price drop alert (schedule + webhook)
This Actor is built to sit on a schedule and hand off to a webhook, not to be run once:
- Set your ZIP codes and click Schedule on the run page (or create one under Schedules in the Apify Console) — daily for a fast-moving market, weekly for most residential ZIPs.
- Open the schedule's Run configuration, then add a Webhook under Integrations for the
ACTOR.RUN.SUCCEEDEDevent, pointing at:- Slack: an Apify-to-Slack integration (Apify's own Slack integration, or a Zapier/Make webhook step) that posts the run's dataset items to a channel.
- Google Sheets: the Apify-to-Google-Sheets integration, appending each run's
price_cutrows to a sheet you watch. - Your own endpoint: the webhook payload includes the run's dataset URL, so a small script can pull
.../items?view=overviewand act oneventType.
- Every scheduled run after the first delivers only what changed — new listings and price cuts are usually what buyers filter for;
minPriceChangePctandeventTypesnarrow it further so a webhook only fires on the events you care about.
Example: what a real week looks like
- Week 1 (baseline):
zip_summaryrow only —listingsNow: 47, isBaseline: true. Nothing charged. - Week 2: three
new_listingevents, oneprice_cut(a $15,000 reduction), tworemovedevents, plus the freezip_summaryrow for that ZIP. - Week 3: one of last week's
removedlistings reappears asback_on_marketat a lower price.
Input
{"zipCodes": ["90210", "10001"],"eventTypes": ["new_listing", "price_cut", "price_increase", "removed", "back_on_market"],"minPriceChangePct": 0,"maxPagesPerZip": 20,"stateStoreName": "zillow-price-drop-monitor-state","emitBaselineAsNew": false,"maxEvents": 200}
| Field | Type | Default | Description |
|---|---|---|---|
zipCodes | string[] | required | 1–50 US ZIP codes. Zillow for-sale ZIP URLs are also accepted. |
eventTypes | string[] | all five | Which change event types to deliver and charge for. |
minPriceChangePct | number | 0 | Ignore price changes smaller than this absolute percentage of the previous price. |
maxPagesPerZip | integer | 20 | 1–20. Safety cap on search-result pages fetched per ZIP per run. |
stateStoreName | string | zillow-price-drop-monitor-state | Name of the store this Actor remembers each ZIP's last snapshot under. Change it only if you're running several independent watch lists. |
emitBaselineAsNew | boolean | false | Deliver the first run's listings as new_listing events instead of only saving a baseline. |
maxEvents | integer | 200 | 1–5000. Hard cap on change events delivered (and charged) per run. |
For most users, the only setting that matters is ZIP codes — everything else has a sensible default.
Change event fields
| Field | Description |
|---|---|
eventType | new_listing, price_cut, price_increase, removed, back_on_market, or the free zip_summary. |
zip, zpid | The ZIP code and Zillow's own stable property id. |
address, url | Address and Zillow listing URL. |
previousPrice, currentPrice, priceChange, priceChangePct | Price before/after this run and the computed delta. |
bedrooms, bathrooms, livingArea, homeType, daysOnZillow | Property details, current if seen this run, otherwise last known. |
observedAt, previousObservedAt | When this run and the previous observation happened. |
The free zip_summary row adds listingsNow, listingsBefore, newCount, removedCount, priceCutCount, medianPriceNow, medianPriceBefore, isBaseline and coverageComplete.
Example change events
{"eventType": "price_cut","zip": "90210","zpid": "20533678","address": "3084 Franklin Canyon Dr, Beverly Hills, CA 90210","previousPrice": 3995000,"currentPrice": 3895000,"priceChange": -100000,"priceChangePct": -2.5,"daysOnZillow": 125,"observedAt": "2026-10-04T06:00:00.000Z","previousObservedAt": "2026-09-27T06:00:00.000Z"}
{"eventType": "zip_summary","zip": "90210","listingsNow": 44,"listingsBefore": 47,"newCount": 3,"removedCount": 6,"priceCutCount": 1,"medianPriceNow": 2450000,"medianPriceBefore": 2495000,"isBaseline": false,"coverageComplete": true,"observedAt": "2026-10-04T06:00:00.000Z"}
Pricing and cost control
This Actor uses pay per delivered change event pricing.
Current configured rate: $0.004 per change event delivered. Check the Apify Pricing tab for the latest published rate. The free zip_summary row (one per ZIP, per run) is never charged.
| Change events delivered | Cost at $0.004/event |
|---|---|
| 100 | $0.40 |
| 250 | $1.00 |
| 1,000 | $4.00 |
There is no charge for a baseline run that finds no changes, and no charge for merely starting a run. maxEvents gives you a clear upper bound on the number of billable events per run.
Important limitations
- The first run for any ZIP is a baseline. It saves what's currently listed and delivers no change events by default (turn on
emitBaselineAsNewif you want the initial listings delivered asnew_listingevents — those are charged normally). removedis not the same as sold. A listing leaving Zillow's search results can mean it sold, was taken off the market, expired, or was relisted under a new listing id — this Actor reports that it left the ZIP's search results, not why.- A ZIP with more pages than
maxPagesPerZipcannot haveremoveddetected reliably that run. When a run doesn't fetch every page Zillow has for a ZIP,removedis suppressed andremovedCount/coverageCompletesay so, rather than guessing that an unfetched listing is gone. - State lives in the named key-value store you configure (
stateStoreName). Deleting that store, or changing its name, resets your baseline for every ZIP. - Zillow inventory and prices change continuously; every row is a point-in-time comparison between two runs, identified by
observedAt/previousObservedAt. - Individual agent names, phone numbers, and email addresses are not collected.
- The Actor does not use CAPTCHA bypass, proxy rotation, credential capture, or impersonation.
- This is an independent tool and is not affiliated with, endorsed by, or connected to Zillow Group, Inc. Zillow is a trademark of its owner. You are responsible for using the data in accordance with applicable terms and laws.
FAQ
Is this a Zillow price change alert I can put on a schedule?
Yes — that's what it's built for. Schedule it daily or weekly and pair the schedule with an Apify webhook (see "Run it as a Zillow price drop alert" above) to push price_cut/new_listing events into Slack, Google Sheets, or your own endpoint.
Why did my first run deliver nothing billable?
The first run for a ZIP is always a baseline (see Limitations). Run it again — the second run compares against the saved baseline and delivers real change events.
Does "removed" mean the home sold?
No. See Limitations: removed only means the listing left the ZIP's search results this run; it could have sold, been withdrawn, expired, or been relisted.
Do I need a Zillow API key or account?
No separate Zillow API key or Zillow login is required.
How do I control the cost?
Set maxEvents (a hard cap on billable events per run) and eventTypes/minPriceChangePct to narrow which changes are worth delivering to you.
Related Actors
Other data tools from the same developer, built to the same standard: official or public sources, hard cost caps, and honest documentation of limits.
- County Multifamily Building Permits Surge Radar: U.S. counties where 5+ unit apartment permits are surging year over year.
- Zillow ZIP Code Property Search Scraper: for-sale listings by ZIP code with prices, price cuts and days on Zillow.
- Rightmove Property Scraper: UK property listings from Rightmove search results, with price, address, bedrooms and agent details.
- Federal Register Rule Effective-Date Radar: final federal rules about to take effect, with citations, dockets and urgency.
- Chicago Contract Recompete & Extension Radar: expiring City of Chicago contracts with extension history, for recompete prospecting.
- Bank Branch Closings & Merger Radar (FDIC): new US bank branch closings, openings and mergers from the FDIC.
- Chicago New Business License Radar: newly licensed Chicago businesses as opening leads, grouped by category.
- NYC FDNY Contractor Leads & Hearing Radar: fresh NYC fire-code summonses routed by remediation trade, with hearing dates.