Redfin Property Scraper โ Sale + Sold ยท Market KPIs
Pricing
Pay per event
Redfin Property Scraper โ Sale + Sold ยท Market KPIs
๐ก Scrape Redfin US real estate listings โ for-sale, sold, and coming-soon โ with built-in market KPIs (median price, price/sqft, days-on-market, breakdowns by city/zip) and HTML report. Optional Redfin Estimate + Walk Score enrichment. Independent tool โ not affiliated with Redfin Corporation.
Pricing
Pay per event
Rating
0.0
(0)
Developer
SIรN Oร
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Redfin Property Scraper โ Sale + Sold ยท Market KPIs ๐ก
๐ฏ Extract Redfin US Property Listings With Market KPIs in Seconds
Investors, agents, market analysts, and prop-tech builders โ get full Redfin listings plus price/sqft analytics, days-on-market, and optional Redfin Estimate + Walk Score
๐ Overview
Pull Redfin US property listings โ for-sale, sold, and coming-soon โ into clean structured data. Search any US market by region (city, neighborhood, zip) or by lat/lng + radius, and get back complete listings with calculated price-per-sqft, beds/baths, square footage, lot size, year built, days-on-market, listing agent, geo coordinates, and full photo URLs.
Why investors and agents choose us over the alternatives:
- ๐ Analytics included, not just raw data โ auto-generated HTML market report with median price, price/sqft distribution (min/median/avg/p90/max), days-on-market distribution, top cities + zips by inventory, and property-type breakdown โ computed for you on every run
- ๐งฎ Calculated price/sqft on every listing โ comp sheets and CMAs are ready straight from the dataset
- ๐ Nationwide US coverage โ every Redfin region: cities, neighborhoods, zip codes, school districts
- โญ Optional Redfin Estimate + Walk Score โ Redfin's AVM and Walk/Bike/Transit scores per listing for valuation and livability filtering (PAID)
- ๐ Built-in autocomplete โ type a city or zip, get back the region IDs you need to scrape โ no manual lookup
- ๐ FREE tier with full feature parity โ 25 listings per run, no credit card, same KPIs and HTML report โ just a smaller cap
โจ Features
- ๐ท๏ธ For-sale, sold, or coming-soon โ single
listingStatustoggle picks the side of the market - ๐งญ Three search modes โ
autocomplete(region-ID lookup),byRegionId(primary scrape mode),byCoordinates(lat/lng + radius, PAID) - ๐ Auto-calculated price/sqft โ for every listing with usable square footage
- ๐ Market KPIs in HTML report โ median price, price/sqft distribution, days-on-market distribution, city + zip + property-type tallies
- ๐ Rich listing fields โ beds, baths (full + total), sqft, lot size, year built, HOA dues, MLS ID, listing agent name + ID, virtual-tour flag, 3D scan URL, full photo URLs (medium-res)
- โญ Redfin Estimate + Walk Score enrichment โ bundled into one PAID toggle (
includeEnrichment) - ๐ฆ Bulk region search โ pass an array of region IDs in one run (PAID)
- ๐ฑ Standard Apify exports โ JSON, CSV, XLSX, RSS, HTML
๐ฌ Quick Start
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~redfin-property-scraper/runs?token=[YOUR_TOKEN]' \-H 'Content-Type: application/json' \-d '{"searchMode":"byRegionId","listingStatus":"forSale","regionId":"2_30818","maxResults":50}'
๐ Getting Started (3 Simple Steps)
Step 1: Find Your Region ID
Run with searchMode: "autocomplete" and autocompleteQuery: "Austin" (or any city/zip/neighborhood). The dataset will list matching region IDs in <type>_<id> format (e.g. 2_30818 for Austin, TX).
Step 2: Scrape The Region
Switch to searchMode: "byRegionId", paste the ID into regionId, pick listingStatus (forSale / sold / comingSoon), and set maxResults.
Step 3: Run & Export
Hit Run. Listings stream into the dataset; an HTML market report lands in the key-value store. Export as JSON, CSV, or Excel.
That's it! In under 2 minutes you'll have:
- Complete listings with address, specs, pricing, photos, geo, agent
- Auto-calculated price/sqft per listing
- Market-level KPIs (median price, distribution, days-on-market, city + zip + type breakdowns)
- A polished HTML market summary
๐ฅ Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
searchMode | string | No | autocomplete, byRegionId, or byCoordinates (default: byRegionId). |
listingStatus | string | No | forSale, sold, or comingSoon (default: forSale). |
autocompleteQuery | string | If searchMode=autocomplete | Free-text city / zip / neighborhood lookup. |
regionId | string | If searchMode=byRegionId | Region ID in <type>_<id> format (e.g. 2_30818). |
regionIds | array | No | Multiple region IDs in one run (PAID only). |
lat, lng, radius | number, number, integer | If searchMode=byCoordinates | Center lat/lng + radius in miles (1โ50). PAID only. |
maxResults | integer | No | Listings per query, 1โ350 (default: 100). Applies to byRegionId and byCoordinates; ignored in autocomplete mode (autocomplete always returns the upstream candidate list). FREE tier capped at 25 per run. |
includeEnrichment | boolean | No | Fetch Redfin Estimate + Walk Score per listing โ PAID only (default: false). |
Example โ Austin TX for-sale listings:
{"searchMode": "byRegionId","listingStatus": "forSale","regionId": "2_30818","maxResults": 100}
Example โ Look up a region ID:
{"searchMode": "autocomplete","autocompleteQuery": "Park Slope"}
Example โ Bulk regions, sold homes, with enrichment:
{"searchMode": "byRegionId","listingStatus": "sold","regionIds": ["2_30818", "2_29470", "2_17151"],"maxResults": 200,"includeEnrichment": true}
Example โ Coordinates + radius (PAID):
{"searchMode": "byCoordinates","listingStatus": "forSale","lat": 30.27,"lng": -97.74,"radius": 5,"maxResults": 100}
๐ค Output
Results land in the Apify dataset. Common fields per listing:
| Field | Type | Description |
|---|---|---|
propertyId | string | Unique Redfin property ID |
listingId | string | Unique Redfin MLS listing ID |
listingStatus | string | forSale, sold, or comingSoon |
url | string | Full listing URL on redfin.com |
listingTitle | string | Formatted address |
address | object | street, unit (condos/apartments only), city, state, zip, neighborhood, full |
pricing | object | price, pricePerSqft, hoaDues |
specs | object | beds, baths, bathsFull, bathsTotal, sqft, lotSize, yearBuilt, propertyType, propertyTypeCode (Redfin numeric code) |
market | object | daysOnMarket, timeOnRedfinSecs, listingAddedDate, lastSoldDate, mlsId |
location | object | latitude, longitude, timezone |
listingAgent | object | name, redfinAgentId (when available โ only emitted when Redfin exposes the agent) |
media | object | photoCount, hasVirtualTour, scanUrl, photos[] |
redfinEstimate | object | (Optional, PAID) AVM data |
walkScores | object | (Optional, PAID) walkScore, bikeScore, transitScore |
scrapedAt | string | ISO timestamp |
Example listing:
{"propertyId": "31887455","listingId": "214636605","listingStatus": "forSale","url": "https://www.redfin.com/TX/Austin/4159-Steck-Ave-78759/unit-267/home/31887455","listingTitle": "4159 Steck Ave #267, Austin, TX 78759","address": { "street": "4159 Steck Ave", "unit": "#267", "city": "Austin", "state": "TX", "zip": "78759", "neighborhood": "Mesa Village Condo Amd" },"pricing": { "price": 250000, "pricePerSqft": 302, "hoaDues": 271 },"specs": { "beds": 2, "baths": 1, "bathsFull": 1, "bathsTotal": 1, "sqft": 829, "lotSize": 2583, "yearBuilt": 1977, "propertyType": "Condo" },"market": { "daysOnMarket": 4, "listingAddedDate": "2026-05-01T18:51:42.660Z", "mlsId": "5826517" },"location": { "latitude": 30.375407, "longitude": -97.75824, "timezone": "US/Central" },"listingAgent": { "name": "Andrew Vallejo", "redfinAgentId": "4289" },"media": { "photoCount": 22, "hasVirtualTour": true, "scanUrl": "https://my.matterport.com/show/?m=eHpABi2Y4PB" }}
๐ผ Use Cases & Examples
1. Investment Comps & Underwriting
Investors comparing homes by price/sqft across markets
- Input: Bulk region IDs for Austin, Nashville, Tampa
- Output: Listings with calculated price/sqft + median per market
- Use: Rank markets by entry-price-per-sqft; build comp sheets in minutes.
2. Recently-Sold Comparable Sales
Agents pulling sold comps for a CMA
- Input:
listingStatus: "sold"+ neighborhood region ID - Output: Sold homes with last-sale-date, beds/baths/sqft
- Use: Plug straight into CMAs and pricing strategy decks.
3. Days-On-Market Velocity Tracking
Brokers tracking how fast markets move
- Input: Same region, weekly schedule
- Output: Median + p90 days-on-market per run
- Use: Spot when inventory starts to stale or accelerate.
4. Redfin Estimate vs. List-Price Spread
Investors hunting for under-priced inventory
- Input:
includeEnrichment: true - Output: Each listing carries the Redfin Estimate (AVM)
- Use: Rank by AVM-vs-list-price spread to find mispriced homes.
5. Walkability-Based Filtering
Buyer-agents matching urban-buyer preferences
- Input:
includeEnrichment: true - Output: Walk/Bike/Transit scores per listing
- Use: Surface walkable inventory in suburban markets.
6. AVM / ML Training Data
Data scientists building US-wide valuation models
- Input: Bulk regions across multiple states
- Output: Comprehensive listings dataset with full specs + geo
- Use: Train and validate AVM and pricing models.
๐ 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-property-scraper').call({searchMode: 'byRegionId',listingStatus: 'forSale',regionId: '2_30818',maxResults: 100,includeEnrichment: true});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-property-scraper').call(run_input={'searchMode': 'byRegionId','listingStatus': 'sold','regionId': '2_30818','maxResults': 100})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~redfin-property-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"searchMode":"byRegionId","listingStatus":"forSale","regionId":"2_30818","maxResults":150}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: Schedule (daily / weekly market refresh) or webhook
- HTTP Request: Call Redfin scraper API with target region IDs
- Process: Filter by price band, compute KPIs, dedupe against last run
- Action: Push to DB, send Slack/email digest, update dashboard
๐ Performance & Pricing
FREE Tier (Try It Now)
- 25 listings per run โ full feature parity, same data quality
- 1 query per run (use Autocomplete + a single Region ID)
- No credit card required
- Perfect for testing and one-off analyses
PAID Tier (Production Ready)
- Unlimited listings and queries per run
- Bulk region arrays
- Coordinates + radius mode
- Redfin Estimate + Walk Score enrichment
- Pay-per-result: only charged for listings actually returned
๐ฐ Transparent per-result pricing โ $0.005 per listing extracted, $0.003 per listing enriched (only on success), $0.005 per actor start. What you get for the price: every listing comes with calculated price/sqft and the run produces a full HTML market report with median, distribution, and city/zip breakdowns โ no post-processing required.
โ Frequently Asked Questions
Q: How do I find a Redfin region ID?
A: Run the actor with searchMode: "autocomplete" and the city or zip you want โ the dataset returns matching IDs in <type>_<id> format. Plug the ID into byRegionId mode for the actual scrape.
Q: Why does pricePerSqft come back null on some listings?
A: Redfin records sometimes omit square footage, especially on land or new-construction listings. We only compute price/sqft when sqft is reported.
Q: Does this cover sold homes?
A: Yes โ set listingStatus: "sold" to pull recently-sold comps with last-sold date.
Q: What does the Redfin Estimate enrichment return? A: Redfin's AVM payload โ when available. Some listings (off-market or in low-data areas) return a "not serviced" flag instead of a number; we surface that explicitly so you can filter.
Q: How many listings can I extract per run? A: FREE tier: 25. PAID tier: unlimited. A single region search returns up to ~350 listings in one call.
Q: What output formats are available? A: JSON, CSV, Excel โ exported directly from the Apify dataset.
Q: Is this legal? A: We only extract publicly available listings. See the legal section below.
๐ Troubleshooting
"Invalid regionId" error
- The format is
<type>_<id>, e.g.2_30818for a city,6_<id>for a neighborhood,13_<zip>for a zip code. UsesearchMode: "autocomplete"to look it up.
"Region ID not found" inside results
- The ID format was right but Redfin doesn't have data for that exact slot. Try a parent region (city instead of neighborhood) or run autocomplete to see active alternatives.
FREE tier hit at 25 listings
- That's the FREE cap. Upgrade for unlimited.
byCoordinates rejected on FREE
- Coordinates mode is PAID-only. Use
byRegionIdor upgrade.
No enrichment on a listing
- Enrichment requires
includeEnrichment: trueon PAID. Some properties have no Redfin Estimate available; we still return the metadata so you can filter.
โ ๏ธ Trademark Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Redfin Corporation, or any of its subsidiaries. The name "Redfin" is used solely in a descriptive sense to identify the public data source the Actor reads from. All trademarks, service marks, and trade names referenced in this Actor or its documentation are the property of their respective owners.
โ๏ธ 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
- ๐ง hello@sian-agency.online
Built by SIรN Agency | More Tools