Zillow/Realtor Listing Change Monitor
Pricing
Pay per usage
Go to Apify Store
Zillow/Realtor Listing Change Monitor
Monitors public Zillow and Realtor listing pages for visible changes without login, private APIs, or bypass techniques.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Brian Keefe
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 months ago
Last modified
Categories
Share
Production-ready Apify Actor for monitoring visible changes on low-volume, public Zillow and Realtor pages.
What It Does
- Accepts public listing URLs and public agent/profile URLs.
- Auto-detects Zillow vs. Realtor, or respects a forced
sourceType. - Extracts visible listing details such as address/title, price, status, beds, baths, and square footage.
- Optionally includes public agent/profile/contact links already visible on the page.
- Compares current results against
previousSnapshotand emits change fields plus previous/current values. - Returns warning rows for blocked, login-required, or captcha pages.
- Supports
fixture://URLs for deterministic local testing.
Public-Data-Only Limitations
- Public URLs only.
- No login.
- No MLS or private APIs.
- No anti-bot bypass.
- No broad search scraping.
- No stealth, captcha solving, proxy escalation, or hidden endpoint access.
If Zillow or Realtor returns a blocked or login wall page, the actor records a warning row and stops there for that URL.
Input
{"urls": ["https://www.zillow.com/homedetails/...","https://www.realtor.com/realestateagents/...","fixture://zillow-listing"],"sourceType": "auto","previousSnapshot": [],"maxPages": 10,"includeAgentInfo": true}
Output
Each dataset item is either a listing row or a warning row.
Example listing fields:
{"rowType": "listing","source": "zillow","url": "fixture://zillow-listing","visibleAddress": "123 Main St, Austin, TX, 78701","visibleTitle": "Single family residence","price": 765000,"status": "For sale","beds": 3,"baths": 2,"sqft": 1840,"agentName": "Jamie Stone","agentProfileUrl": "fixture://zillow-agent","contactLinks": ["tel:+15125550199","mailto:jamie@example.com"],"evidence": {"priceText": "$765,000","statusText": "For sale"},"snapshotTimestamp": "2026-07-05T00:00:00.000Z","changed": true,"changeFields": ["price"],"previousPrice": 749000,"currentPrice": 765000,"previousStatus": "For sale","currentStatus": "For sale"}
Fixture URLs
Local deterministic fixtures included for smoke tests:
fixture://zillow-listingfixture://realtor-listingfixture://realtor-agentfixture://blocked-page
Development
Install and test:
npm installnpm test
Run locally:
$npm start
Notes On Parsing
- Uses JSON-LD first when available.
- Falls back to common visible page selectors and text heuristics.
- Normalizes price, beds, baths, and sqft to numbers when possible.
- Matches previous rows by
url,visibleAddress, andvisibleTitle.
Files
- Actor metadata:
.actor/actor.json - Input schema:
.actor/input_schema.json - Main entrypoint:
src/main.js - Fixtures:
fixtures/*.html - Smoke tests:
tests/smoke.test.js

