ZillowPulse — Stale Listing & Price Drop Detector
Pricing
$29.00/month + usage
ZillowPulse — Stale Listing & Price Drop Detector
Find motivated sellers before your competition does. ZillowPulse scans Zillow by ZIP code and surfaces every FOR_SALE listing that has been sitting on the market for 30+ days — including full price history, tax records, school ratings, and direct agent contact details.
Pricing
$29.00/month + usage
Rating
0.0
(0)
Developer
YKA
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
15 hours ago
Last modified
Categories
Share
Find motivated sellers before your competition does. ZillowPulse scans Zillow by ZIP code and surfaces every FOR_SALE listing that has been sitting on the market for 30+ days — including full price history, tax records, school ratings, and direct agent contact details.
Built for real estate agents and investors who want to identify negotiation leverage: listings where the seller is under pressure, the price has already dropped, and days on market signal motivation to deal.
Why This Actor Exists
The most actionable leads in real estate are not new listings — they are stale listings. A property that has been on the market for 30, 60, or 90 days with a price reduction tells a clear story: the seller needs to move. ZillowPulse automates the discovery of exactly these properties at scale.
Key signals this Actor surfaces:
- Listings active for 30+ days (fully configurable)
- Full price history showing every reduction, relisting, and sale event
- Price drop percentage calculable from
priceHistory— flag any listing where the original list price has dropped 15%+ - Agent name, phone, and brokerage — ready for outreach
- Tax history going back 20+ years — understand true ownership cost
- School ratings — critical context for family buyer conversations
What You Get Per Listing
Each scraped record contains:
| Field | Description |
|---|---|
street_address | Full street address |
city / state / zip | Location |
price_listed | Current asking price |
days_on_zillow | Days on market per Zillow |
days_on_market_calculated | Days calculated from datePostedString |
date_posted | Original listing date (YYYY-MM-DD) |
bedrooms / bathrooms | Bed/bath count |
living_area_sqft | Interior square footage |
lot_size_sqft | Lot size |
year_built | Year of construction |
price_per_sqft | Price per square foot |
zestimate | Zillow automated valuation |
rent_zestimate | Estimated rental value |
hoa_fee | HOA fee if applicable |
agent_name | Listing agent full name |
agent_phone | Listing agent phone number |
brokerage_name | Listing brokerage |
priceHistory | Full array of every price event — list, reduce, sell |
taxHistory | 20–25 years of annual tax and assessed value records |
schools | 3 nearest schools with ratings, grades, and distance |
photos | Array of listing photo URLs |
description | Full property description text |
zillow_url | Direct link to the Zillow listing |
home_type | SINGLE_FAMILY, CONDO, TOWNHOUSE, etc. |
home_status | FOR_SALE, PENDING, etc. |
latitude / longitude | Coordinates |
county | County name |
parking | Parking details |
heating / cooling | HVAC details |
scraped_at | ISO timestamp of when data was collected |
How to Identify Price Drops in the Output
The priceHistory array contains every price event. To find listings with a 15%+ price drop, filter where:
originalPrice = first event in priceHistory where event = "Listed for sale"currentPrice = price_listeddropPct = (originalPrice - currentPrice) / originalPrice * 100flag if dropPct >= 15
Example priceHistory entry:
{"date": "2026-01-15","event": "Price change","price": 850000,"priceChangeRate": -0.15,"pricePerSquareFoot": 425}
The priceChangeRate field is negative for reductions — -0.15 means a 15% drop. You can filter directly on this field without any calculation.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
zipCodes | array | ✅ Yes | — | One or more US ZIP codes to search |
minDaysOnMarket | integer | No | 20 | Minimum days listed. Use 30 for motivated sellers |
maxListingsPerZip | integer | No | 0 (unlimited) | Cap results per ZIP. 0 = no limit |
minPrice | integer | No | none | Minimum asking price filter |
maxPrice | integer | No | none | Maximum asking price filter |
homeTypes | array | No | all types | Filter by type: SINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, LAND, MANUFACTURED |
webhookUrl | string | No | none | POST each result to this URL as it is scraped |
Recommended Input for Motivated Seller Leads
{"zipCodes": ["75229", "75230", "75231"],"minDaysOnMarket": 30,"maxListingsPerZip": 50,"homeTypes": ["SINGLE_FAMILY"]}
Input for Price Drop Hunting (All Types, No Cap)
{"zipCodes": ["92131"],"minDaysOnMarket": 30,"maxListingsPerZip": 0}
How It Works
Stage 1 — Search: ZillowPulse queries Zillow's search API for each ZIP code, paginating from oldest to newest. Only listings meeting your minDaysOnMarket threshold are collected. This avoids scraping thousands of detail pages unnecessarily.
Stage 2 — Detail Scrape: Each qualifying listing URL is fetched individually. The full property page is parsed to extract all data fields, then a secondary GraphQL query pulls price history, tax history, and school data that is not available in the HTML.
All requests are rate-limited and spaced to operate reliably without blocks.
Expected Performance
| Listings | Estimated Runtime |
|---|---|
| 10 | ~1 minute |
| 50 | ~5 minutes |
| 100 | ~10 minutes |
| 200 | ~20 minutes |
Rate: approximately 15 listings per minute.
Use Cases
Real estate agents — Build a daily pipeline of stale listings in your farm area. Call the listing agent with a buyer who is ready to move.
Investors — Identify distressed listings where price reductions signal seller motivation. Cross-reference tax history to understand true cost basis.
Wholesalers — Find properties sitting on the market with multiple price drops. These sellers are the most likely to accept below-market offers.
Market analysts — Track days-on-market trends and price reduction frequency by ZIP code over time.
Output Example
{"zpid": "16823642","street_address": "10060 Scripps Vista Way Unit 33","city": "San Diego","state": "CA","zip": "92131","price_listed": 795000,"days_on_zillow": 38,"days_on_market_calculated": 38,"date_posted": "2026-02-15","bedrooms": 3,"bathrooms": 2,"living_area_sqft": 1450,"year_built": 1998,"zestimate": 781000,"agent_name": "Sarah Johnson","agent_phone": "619-555-0142","brokerage_name": "Compass","priceHistory": [{"date": "2026-02-15","event": "Listed for sale","price": 950000,"priceChangeRate": 0},{"date": "2026-03-01","event": "Price change","price": 875000,"priceChangeRate": -0.079},{"date": "2026-03-15","event": "Price change","price": 795000,"priceChangeRate": -0.091}],"schools": [{ "name": "Miramar Ranch Elementary", "rating": 9, "distance": 0.4 },{ "name": "Scripps Ranch Middle School", "rating": 8, "distance": 1.2 },{ "name": "Scripps Ranch High School", "rating": 9, "distance": 1.8 }],"zillow_url": "https://www.zillow.com/homedetails/10060-Scripps-Vista-Way-UNIT-33-San-Diego-CA-92131/16823642_zpid/","scraped_at": "2026-03-24T04:07:42.000Z"}
Legal & Terms of Use
This Actor is intended for personal research and professional real estate use. Users are responsible for complying with Zillow's Terms of Service and all applicable laws. Data collected should not be used for mass unsolicited contact or resale without appropriate licensing.
Support
For issues, feature requests, or custom configurations, contact the actor maintainer through the Apify platform.