Rental Deal Alerts — New Listings & Price Drops, No Login
Pricing
from $10.00 / 1,000 alerts
Rental Deal Alerts — New Listings & Price Drops, No Login
Watch Zillow and Zumper rentals by city, ZIP, price and beds and get only NEW listings and PRICE DROPS since the last run, with previous price, days on market and specials. Schedule it every few hours. No login. MCP-ready. $10 per 1,000 alerts.
Pricing
from $10.00 / 1,000 alerts
Rating
0.0
(0)
Developer
Khrystyna Skotte
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Rental Deal Alerts — new listings & price drops from Zillow and Zumper
Schedule this actor and get only what changed: rentals that appeared since the last run and match your
city, budget, bedrooms and home type, plus price drops on listings it has already seen. It remembers every
listing it reported, so a run every few hours emits just the delta (changeType: new or price_drop), posts a
summary to your webhook, and costs you only for actual alerts.
Built for renters hunting a specific budget, investors tracking rent softening in a submarket, and relocation or property-management firms who need a feed rather than a spreadsheet to diff.
How it works
- Geocodes each location (city, ZIP or neighborhood) and searches Zillow and Zumper rentals inside it, newest first, with your rent, bedroom and home-type filters applied server-side.
- Compares every listing against the monitor's saved state (
source:listingId → last price). - Emits a record when the listing is unseen (
new) or its rent is lower than last time (price_drop, withpreviousPriceandpriceChangePct).price_increasealerts are off by default. - Saves the updated state, then POSTs a run summary to
webhookUrlif set.
State lives in a named key-value store rental-alerts-<hash of monitorId> in your Apify account, capped at
50,000 listings (least recently seen are dropped). Delete the store to reset a monitor.
Input
| Field | Default | Notes |
|---|---|---|
locations | ["Austin, TX"] | Cities, ZIPs or neighborhoods; each is searched on every source |
sources | ["zillow","zumper"] | Either or both |
minPrice / maxPrice | 0 / 3000 | Monthly rent in USD; 0 = no bound |
minBeds | 1 | 0 includes studios |
homeTypes | [] | house, apartment, townhouse, condo, multiFamily; empty = all |
maxNewPerLocation | 5 | Cap on new alerts per location per run; the rest stay unseen and come out next run |
alertOnPriceDrops | true | Emit price_drop when a seen listing is now cheaper |
alertOnPriceIncreases | false | Also emit price_increase |
firstRunMode | emitAll | emitAll reports current matches on the first run; baseline records them silently |
webhookUrl | "" | Optional POST target for the run summary |
monitorId | default | One state store per ID — run several watchlists side by side |
maxItems | 10 | Total alerts per run (new + price changes) |
proxyConfiguration | Apify residential, US | Required for Zillow on the Apify platform |
Recommended setup for a live alert feed
- Create a task with your filters and a meaningful
monitorId(austin-2br-under-2k). - First run: set
firstRunModetobaseline. This records everything currently listed (up to 500 per source per location), emits nothing, and stops your first alert from being a 500-row backlog. - Switch
firstRunModeback toemitAll(it only matters while the state is empty), raisemaxNewPerLocationandmaxItemsto what you want per run. - Schedule the task every 2–6 hours. Both sites post throughout the day; a 4-hour cadence catches new listings within the window that matters for a competitive rental market. Daily is fine for price-drop tracking only.
- Point
webhookUrlat Slack (incoming webhook), Zapier, Make, or your own endpoint.
The default settings ({}) run emitAll for Austin, TX so you see real output on the first try.
Example: investor watching rent cuts on houses in two suburbs
{"locations": ["Round Rock, TX", "Pflugerville, TX"],"sources": ["zillow", "zumper"],"minPrice": 1500,"maxPrice": 3500,"minBeds": 3,"homeTypes": ["house"],"maxNewPerLocation": 20,"alertOnPriceDrops": true,"firstRunMode": "baseline","webhookUrl": "https://hooks.slack.com/services/XXX/YYY/ZZZ","monitorId": "north-austin-sfh","maxItems": 200}
Output
One record per alert:
{"source": "zillow","listingId": "29547445","address": "12716 Margit Dr","city": "Austin","state": "TX","zip": "78729","latitude": 30.445044,"longitude": -97.7621,"price": 2100,"previousPrice": 2300,"priceChangePct": -8.7,"beds": 3,"baths": 3,"sqft": 1725,"homeType": "house","daysOnMarket": 6,"listedAt": "2026-09-22","specialOffer": null,"url": "https://www.zillow.com/homedetails/12716-Margit-Dr-Austin-TX-78729/29547445_zpid/","imageUrl": "https://photos.zillowstatic.com/fp/29d480fff38872098ef462d569dd55e6-p_e.jpg","location": "Austin, TX","changeType": "price_drop","firstSeenAt": "2026-09-22T14:00:03.118Z","monitorId": "default"}
previousPrice and priceChangePct are null on new records. firstSeenAt is when this monitor first
recorded the listing.
Webhook payload
POSTed once per run as application/json, also saved as the SUMMARY record in the run's key-value store:
{"monitorId": "north-austin-sfh","runAt": "2026-09-29T10:00:03.118Z","newCount": 4,"priceDropCount": 2,"priceIncreaseCount": 0,"scanned": 1000,"seenTotal": 1812,"baseline": false,"alerts": [ { "...first 50 records, same shape as the dataset..." } ]}
Source notes
- Zillow: price is the listed monthly rent; for buildings with several floorplans it is the cheapest unit.
specialOffercarries Zillow's concession text ("1 month free") when the card shows one. Zillow needs the residential proxy on the platform. - Zumper: price is the entry rent of the listing or building (
min_price). Home-type filtering covers houses, apartments and townhouses; condo/multi-family selections fall back to all types on this source.specialOfferis not available from Zumper's search feed. - Each run examines up to 500 newest listings per source per location when looking for price changes, so a
price cut on a listing deeper than that in a very large market is caught once it re-sorts nearer the top or
the filters are narrowed. A first
emitAllrun stops as soon as it hasmaxNewPerLocationnew listings. - Rent comparisons use the listing's headline price. A floorplan swap in a large building can register as a
drop or increase;
alertOnPriceIncreasesstays off by default for that reason.
Pricing
Pay per event: a small start fee plus a per-alert fee only for records emitted. A run that finds nothing new costs just the start fee.