Redfin Housing Market Data Scraper — Trends, Comps, Hotness
Pricing
from $6.00 / 1,000 market dataset row extracteds
Redfin Housing Market Data Scraper — Trends, Comps, Hotness
Pull US housing market data for any ZIP, city, or neighborhood: 60-month median sale price and demand trends, Compete Score market hotness, recently sold comps, school ratings, climate risk, and national trends. One structured row per location and dataset. Built for investors, analysts, and ETL.
Pricing
from $6.00 / 1,000 market dataset row extracteds
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Redfin Housing Market Data Scraper — Trends, Comps & Hotness 🚀
🎉 60 months of housing market history per ZIP code — price trends, Compete Score hotness, sold comps, schools & climate risk in ONE run
Built for real-estate investors, analysts, and data teams who rank markets before they buy
📋 Overview
Stop copy-pasting market stats from housing pages — this actor pulls complete US housing market intelligence for any ZIP code, city, county, or neighborhood and delivers it as clean, structured dataset rows ready for BigQuery, Snowflake, pandas, or Excel.
Why data teams choose us:
- ✅ 60-month trend series: median sale price, homes sold, days on market, sale-to-list ratio, % sold above list, % price drops — every monthly point with value AND year-over-year change
- 🔥 Compete Score market hotness: 0–100 competitiveness score with typical offer counts, waived contingencies, and nearby-ZIP comparison — data no other scraper exposes
- 🏠 Freshest sold comps per location: the latest sales with sold price, $/sqft, beds/baths, sold date, MLS number, coordinates, listing remarks — in one charged row
- 🎓 Schools + climate risk in the same run: school ratings with parent reviews counts, plus flood/fire/heat/wind risk scores — replaces two extra tools
- 💰 One row = one full dataset: a whole 60-month series (360+ datapoints) costs a single per-row fee — not hundreds of per-item charges
- ✨ NEW — Listing demand signals: tour counts, view popularity vs the top-10% threshold, and price-drop eligibility per active listing
✨ Features
- 📈 Market Trends: 6 metrics × 60 monthly datapoints per location, each with YoY change
- 🔥 Market Hotness: Compete Score aggregates + the same scores for nearby ZIP codes
- 🏠 Recently Sold Comps: the latest sold homes per location with full pricing detail
- 🎓 School Intelligence: elementary/middle/high schools with 1–10 ratings, parent ratings, student-teacher ratios
- 🌊 Climate Risk: flood, fire, heat, and wind scores with properties-at-risk counts
- 🇺🇸 National Baseline: US-wide supply/demand series incl. the average 30-year mortgage rate
- 🎯 Listing Demand Signals: per-listing tour counts, view counts, price-drop eligibility
- 📍 Free-form locations: ZIP, "City, ST", county, or neighborhood — resolved automatically
- 🔗 Join-ready output: every row carries a resolved region ID and region name
🎬 Quick Start
Enter one or more locations, tick the datasets you want, and press Start. Each location × dataset produces one structured row. Export as JSON, CSV, or Excel.
curl -X POST "https://api.apify.com/v2/acts/sian.agency~redfin-market-analytics-scraper/runs?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{"locations": ["Austin, TX", "78759"]}'
🚀 Getting Started (3 Simple Steps)
Step 1: Add locations
ZIP codes, cities, counties, or neighborhoods — mix them freely.
Step 2: Pick your datasets
Market trends, hotness, and sold comps are on by default; add schools, climate risk, or the national baseline with one click.
Step 3: Run and export
In under a minute you'll have:
- One row per location per dataset with the resolved region attached
- Full 60-month time series ready for charting
- Sold comps ready for underwriting models
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| locations | array | No* | US locations — ZIP, "City, ST", county, or neighborhood |
| includeMarketTrends | boolean | No | 60-month price & demand series (default: true) |
| includeMarketHotness | boolean | No | Compete Score + nearby comparison (default: true) |
| includeRecentlySold | boolean | No | Latest sold comps (default: true) |
| includeSchools | boolean | No | Schools & ratings (default: false) |
| includeClimateRisk | boolean | No | Flood/fire/heat/wind risk (default: false) |
| includeNationalTrends | boolean | No | US baseline series, once per run (default: false) |
| listingSignals | array | No* | propertyId:listingId pairs for demand signals |
* Provide at least one location, one listing-signal pair, or enable the national baseline.
Example:
{"locations": ["Austin, TX", "78759", "Travis County, TX"],"includeMarketTrends": true,"includeMarketHotness": true,"includeRecentlySold": true,"includeSchools": true,"includeClimateRisk": true,"includeNationalTrends": true}
Listing demand signals (get both IDs from any row of our Redfin Property Scraper):
{"listingSignals": ["31327561:217326962"]}
📤 Output
One row per location per dataset. Key fields:
| Field | Type | Description |
|---|---|---|
| dataset | string | marketTrends, marketHotness, recentlySold, schools, climateRisk, nationalTrends, listingSignals |
| queryLocation | string | Your input location |
| regionId / regionName | string | Resolved region — stable join key |
| trendMetrics | array | Per metric: label, current value, 60 monthly {date, value, yoy} points |
| competeScore | object | Hotness score 0–100, sale-to-list, days on market, typical offers |
| nearbyCompeteScores | array | The same scores for neighboring ZIP codes |
| soldHomes | array | Sold comps: price, $/sqft, beds/baths, sold date, MLS#, coordinates |
| schools | array | Level, rating, parent rating, students, ratios, links |
| climateRisk | object | Flood/fire/heat/wind blocks with properties-at-risk counts |
| tourInsights / popularityInfo / priceDropInfo | object | Listing demand signals |
| fetchedAt | string | Extraction timestamp |
Example (marketTrends row, abbreviated):
{"dataset": "marketTrends","queryLocation": "78759","regionId": "34149","regionName": "78759, TX, USA","trendMetrics": [{"section": "overview","label": "Median Sale Price","currentValue": "$614,817","series": [{ "date": "2026-05-31", "value": 614817, "yoy": "-10.2%" }]}],"fetchedAt": "2026-07-02T14:00:00.000Z"}
💼 Use Cases & Examples
1. Market ranking for real-estate investors
Investors rank 50 target ZIP codes by price momentum and competitiveness before allocating capital.
Input: 50 ZIP codes, trends + hotness enabled Output: 100 rows — 60-month series and Compete Scores per ZIP Use: Sort by YoY price change and hotness score to shortlist buy markets.
2. Sold-comp feeds for underwriting
Acquisition analysts refresh sold comps weekly for valuation models.
Input: target neighborhoods with includeRecentlySold enabled
Output: the freshest sales per area with $/sqft and sold dates
Use: Feed automated ARV and cap-rate models with fresh comparable sales.
3. Neighborhood quality scoring for relocation platforms
PropTech products score neighborhoods on schools and climate safety.
Input: city list, schools + climate risk enabled Output: rated schools and flood/fire/heat/wind blocks per city Use: Build a location-quality index behind your search UI.
4. Market-vs-nation dashboards
Analysts index every local metric against the US baseline.
Input: metro list + includeNationalTrends: true
Output: local series + one national row incl. 30-year mortgage rates
Use: Show whether a market outperforms the national trend line.
5. Demand tracking for listing agents
Agents monitor buyer interest on their active listings.
Input: propertyId:listingId pairs from the Redfin Property Scraper
Output: tour counts, view popularity, price-drop eligibility per listing
Use: Time price adjustments with hard demand data.
6. Housing research & journalism
Researchers pull 5-year price histories across dozens of counties in minutes.
Input: county names Output: consistent monthly series with YoY deltas Use: Publish data-backed housing stories without manual collection.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/redfin-market-analytics-scraper').call({locations: ['Austin, TX', '78759']});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/redfin-market-analytics-scraper').call(run_input={'locations': ['Austin, TX', '78759']})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item['dataset'], item['regionName'])
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~redfin-market-analytics-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"locations": ["78759"]}'
Automation Workflows (n8n / Zapier / Make)
- Trigger: weekly schedule
- HTTP Request: start this actor with your market watchlist
- Process: read the dataset rows
- Action: update dashboards, alert on hotness or price-drop shifts
📊 Performance & Pricing
FREE Tier (Try It Now)
- 5 locations and 5 listing-signal pairs per run — full feature access, same data quality
- No credit card required
- Perfect for evaluating a new market
PAID Tier (Production Ready)
- Unlimited locations and listing signals per run
- Pay-per-row: one flat fee per location × dataset row — a full 60-month series counts as ONE row
- Priced for scheduled, fleet-wide market monitoring
💰 Best value on the market — comparable tools charge per datapoint or per listing; here one row fee buys an entire dataset for the location.
❓ Frequently Asked Questions
Q: What location formats are supported?
A: ZIP codes (78759), cities (Austin, TX), counties (Travis County, TX), and neighborhoods. Each is resolved automatically to a market region echoed back in the row.
Q: How much history do the trend series cover? A: 60 monthly datapoints (5 years) per metric, each with the value and its year-over-year change.
Q: How many sold comps do I get? A: The most recent sales per location (typically the 8 latest) — all inside one charged row. Need the full sold inventory? Use our Redfin Property Scraper with the sold filter.
Q: Where do I get the IDs for listing demand signals?
A: Every row of our Redfin Property Scraper contains both propertyId and listingId.
Q: What output formats are available? A: JSON, CSV, and Excel — export directly from the Apify dataset.
Q: Can I filter trends by property type? A: Not currently — trend series cover all property types combined.
Q: Is this legal? A: We only extract publicly available market statistics. See the legal section below.
🐛 Troubleshooting
A location returns an error or no row
- Check the spelling and add the state, e.g.
Austin, TXinstead ofAustin - Very small or rural areas may not have a resolvable market region — try the county
Listing signals return empty objects
- Signals only populate for ACTIVE listings; sold or delisted homes return zeros
- Verify the pair format:
propertyId:listingId(both numeric)
Fewer sold comps than expected
- The dataset returns the latest sales snapshot; quiet markets have fewer — the row's
soldHomesReturnedshows the real count - For the complete sold inventory of an area, use the Redfin Property Scraper sold mode
⚠️ Trademark Disclaimer
Redfin is a registered trademark of Redfin Corporation. This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Redfin Corporation. All trademarks, service marks, and company names are the property of their respective owners. This actor only accesses publicly available data.
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's repository
- Check SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools