Redfin Scraper
Pricing
Pay per event
Redfin Scraper
Scrape real estate listings from Redfin. Get property prices, beds, baths, square footage, lot size, year built, days on market, broker info, and more.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Actor stats
0
Bookmarked
25
Total users
10
Monthly active users
a day ago
Last modified
Categories
Share
Extract real estate listings from Redfin with property details, prices, and market data. Search by city, ZIP code, or any Redfin URL.
What does Redfin Scraper do?
This actor extracts property listings from Redfin, including:
- Property details — price, beds, baths, square footage, lot size, year built, stories
- Location data — full address, city, state, ZIP, latitude, longitude, neighborhood
- Market metrics — days on market, price per square foot, listing status
- Listing info — MLS number, listing broker, property type, HOA fees
- Media — primary listing photo URL, property page URL
Who is it for?
- 🏠 Real estate investors — analyzing property prices and market metrics across neighborhoods
- 📊 Market researchers — comparing housing data across cities and ZIP codes
- 💼 Real estate agents — monitoring new listings and price changes in target areas
- 🏢 Property appraisers — gathering comparable sales data for valuations
- 📈 Data analysts — building real estate datasets for trend analysis and modeling
Why use Redfin Scraper?
- Fast extraction — fetches up to 500 listings in a single API call, typically under 10 seconds
- Rich filters — filter by price range, bedrooms, bathrooms, square footage, year built, property type
- Multiple search modes — search by Redfin city/neighborhood URL or 5-digit ZIP code
- Structured output — clean JSON with consistent field names ready for analysis
- All property types — houses, condos, townhouses, multi-family, land, and more
- Pay per result — only pay for properties you actually extract
Use cases
- Real estate investment — analyze property prices, price/sqft ratios, and days on market
- Market research — compare housing markets across different cities and neighborhoods
- Price monitoring — track listing prices in your target areas over time
- Competitive analysis — monitor new listings and price changes in specific markets
- Portfolio valuation — gather comparable sales data for property appraisals
- Academic research — collect housing market data for economic analysis
- Lead generation — find new listings for real estate marketing
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
url | string | — | Redfin city, neighborhood, or search URL |
location | string | — | 5-digit ZIP code (use if no URL provided) |
status | string | for-sale | Listing status: for-sale, sold, pending |
propertyType | array | all types | Filter: house, condo, townhouse, multifamily, land, other |
minPrice | number | — | Minimum listing price (USD) |
maxPrice | number | — | Maximum listing price (USD) |
minBeds | number | — | Minimum bedrooms |
maxBeds | number | — | Maximum bedrooms |
minBaths | number | — | Minimum bathrooms |
minSqft | number | — | Minimum square footage |
maxSqft | number | — | Maximum square footage |
sortBy | string | recommended | Sort: price-asc, price-desc, days-on-redfin-asc, days-on-redfin-desc, dollars-per-sq-ft-asc, dollars-per-sq-ft-desc |
maxResults | number | 100 | Maximum properties to return (up to 500) |
Finding Redfin URLs
Go to redfin.com and search for your city or area. Copy the URL from the address bar. Examples:
- City:
https://www.redfin.com/city/17151/CA/San-Francisco - Neighborhood:
https://www.redfin.com/neighborhood/350/CA/San-Francisco/Mission-District - ZIP: enter just
94105in the location field
Output example
{"propertyId": 1146563,"mlsId": "426095284","url": "https://www.redfin.com/CA/San-Francisco/535-42nd-Ave-94121/home/1146563","price": 2998000,"beds": 3,"baths": 2.5,"sqFt": 2750,"pricePerSqFt": 1090,"lotSize": 4499,"yearBuilt": 1923,"stories": 0,"dom": 19,"street": "535 42nd Ave","city": "San Francisco","state": "CA","zip": "94121","latitude": 37.7785317,"longitude": -122.5031281,"neighborhood": "SF District 1","propertyType": "House","listingRemarks": "","listingBroker": "Rose Hayes","hoa": null,"photoUrl": "https://ssl.cdn-redfin.com/photo/1/bigphoto/0/212052509_0.jpg","isNewConstruction": false,"soldDate": null,"mlsStatus": "Active","scrapedAt": "2026-03-03T08:28:30.123Z"}
How much does it cost to scrape Redfin?
This actor uses a pay-per-event pricing model:
| Event | Price |
|---|---|
| Run started | $0.001 |
| Per property extracted | $0.003 |
Cost examples
| Scenario | Properties | Cost |
|---|---|---|
| Quick check (10 listings) | 10 | $0.031 |
| Neighborhood scan (50) | 50 | $0.151 |
| Full city search (200) | 200 | $0.601 |
| Large area (500) | 500 | $1.501 |
Platform costs (compute, storage) are additional but minimal — typically under $0.005 per run.
How to scrape Redfin listings
Via Apify Console
- Go to the Redfin Scraper page on Apify
- Paste a Redfin URL or enter a ZIP code
- Set your price, bed/bath, and property type filters
- Click Start and download results from the Dataset tab
Via API (Node.js)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('YOUR_USERNAME/redfin-scraper').call({url: 'https://www.redfin.com/city/17151/CA/San-Francisco',status: 'for-sale',minBeds: 3,maxPrice: 2000000,maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((p) => {console.log(`$${p.price.toLocaleString()} | ${p.beds}bd/${p.baths}ba | ${p.street}, ${p.city}`);});
Via API (Python)
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('YOUR_USERNAME/redfin-scraper').call(run_input={'url': 'https://www.redfin.com/city/17151/CA/San-Francisco','status': 'for-sale','minBeds': 3,'maxPrice': 2000000,'maxResults': 50,})for p in client.dataset(run['defaultDatasetId']).iterate_items():print(f"${p['price']:,} | {p['beds']}bd/{p['baths']}ba | {p['street']}, {p['city']}")
cURL
curl "https://api.apify.com/v2/acts/automation-lab~redfin-scraper/runs" \-X POST \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"url": "https://www.redfin.com/city/17151/CA/San-Francisco", "status": "for-sale", "minBeds": 3, "maxPrice": 2000000, "maxResults": 50}'
Use with AI agents via MCP
Redfin Scraper is available as a tool for AI assistants via the Model Context Protocol (MCP).
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com"
Setup for Claude Desktop, Cursor, or VS Code
{"mcpServers": {"apify": {"url": "https://mcp.apify.com"}}}
Example prompts
- "Search Redfin for homes in Austin under $500K"
- "Get property listings in downtown Seattle from Redfin"
Learn more in the Apify MCP documentation.
Integrations
Connect Redfin Scraper with your tools:
- Google Sheets — automatically populate spreadsheets with new listings
- Slack / Email — get notified when new properties match your criteria
- Zapier / Make — build automated real estate monitoring workflows
- PostgreSQL / MongoDB — store listing data for long-term market analysis
- Webhooks — push data to your app when a run completes
Tips and best practices
- Use Redfin URLs for best results — paste a URL directly from redfin.com to ensure correct region targeting.
- ZIP codes work too — enter a 5-digit ZIP code in the location field as an alternative to full URLs.
- Filter early — use price, bed, bath, and sqft filters to get relevant results instead of filtering after extraction.
- Sold listings — set status to
soldto get recently sold properties with actual sale prices. - Max 500 per request — Redfin returns up to 500 listings per search. For larger areas, search by specific neighborhoods or ZIP codes.
- Sort strategically — use
days-on-redfin-ascto find the newest listings first.
Limitations
- Data is sourced from Redfin and subject to their availability
- Maximum 500 properties per search — split large areas into smaller regions if needed
- Location search requires a Redfin URL or ZIP code (free-text city names are not supported)
- Some fields (listing remarks, HOA) may not be available for all properties
Legality
Scraping publicly available data is generally legal according to the US Court of Appeals ruling (HiQ Labs v. LinkedIn). This actor only accesses publicly available information and does not require authentication. Always review and comply with the target website's Terms of Service before scraping. For personal data, ensure compliance with GDPR, CCPA, and other applicable privacy regulations.
FAQ
I'm getting 0 results — what's wrong? Make sure you provide either a valid Redfin URL or a 5-digit ZIP code. Free-text city names are not supported. Go to redfin.com, search for your area, and copy the URL from the address bar.
Can I get more than 500 listings? Redfin limits search results to 500 per query. For larger areas, split your search into smaller regions (individual neighborhoods or ZIP codes) and run multiple extractions.
How do I find the best neighborhoods to invest in using Redfin data?
A data-driven neighborhood comparison workflow using this scraper:
- Identify candidate ZIP codes or neighborhoods in your target city.
- Run the scraper for each area with
status: "sold"to get recent transaction prices — sold listings reflect actual market values, not asking prices. - Compare median
pricePerSqFt, averagedom(days on market), and the spread between list price and sold price across neighborhoods. - Low
dom+ risingpricePerSqFtsignals a competitive, appreciating market. Highdom+ stagnant prices suggests oversupply or softening demand. - Cross-reference with
for-saledata to estimate current inventory levels per neighborhood.
Export to a spreadsheet, calculate medians per ZIP, and visualize with a pivot table or Google Data Studio to spot outliers quickly. The latitude and longitude fields enable mapping in tools like Kepler.gl or Google Maps.
Can I scrape recently sold homes from Redfin?
Yes. Set status: "sold" in the input to retrieve sold listings instead of active ones. Sold data includes the final transaction price, sold date, and full property details — the same fields available for active listings.
Sold comps are essential for:
- Property appraisals — finding comparable sales (comps) within a 0.5-mile radius and similar specs
- Investment underwriting — validating ARV (after-repair value) before purchasing a distressed property
- Market trend analysis — tracking price-per-sqft trends over time by re-running the scraper monthly
Note: Redfin's sold data typically covers the past 6–12 months. For older historical data, you would need to look at MLS archives or data providers with deeper history.
How does Redfin Scraper compare to scraping Zillow?
Both platforms list residential properties, but there are meaningful differences in data coverage and scraping complexity:
| Feature | Redfin | Zillow |
|---|---|---|
| Data freshness | Near real-time MLS feed | Often 1–2 days behind |
| Price accuracy | Strong (direct MLS broker) | Includes Zestimates alongside list prices |
| Sold history | Available | Available |
| Anti-bot difficulty | Moderate | High (aggressive bot detection) |
| Price/sqft | Direct field | Calculated |
Redfin is often preferred for investment analysis because it sources directly from MLS feeds in many markets, resulting in more accurate and timely listing data. For markets where Redfin has limited coverage (rural areas, some smaller metros), Zillow may have broader inventory.
What is the maximum number of listings I can extract from Redfin?
Redfin's search API returns a maximum of 500 listings per query. This is a platform-side limit that cannot be bypassed by the scraper.
For areas with more than 500 active listings (large cities like Los Angeles, Chicago, or New York), use these strategies to get complete coverage:
- Split by neighborhood — Search individual neighborhoods or districts rather than the whole city. Redfin neighborhood URLs are supported directly.
- Split by ZIP code — Run separate extractions for each ZIP code in your target area and merge the datasets afterward.
- Apply filters — Use price range, bedroom, or property type filters to segment the market into batches under 500 listings each.
- Sort strategically — Use
days-on-redfin-ascto prioritize newest listings if you only need the most recent inventory.
How do I build a real estate price monitoring system with Redfin data?
A scheduled monitoring pipeline for tracking price changes:
- Set up a daily Apify Schedule targeting your ZIP codes or neighborhoods.
- Store results in a database (PostgreSQL or Google Sheets) with the
scrapedAttimestamp. - Join daily snapshots on
propertyIdormlsIdto detect price changes between runs. - Flag listings where
pricedropped more than 5% — these are negotiation opportunities. - Alert on new listings (propertyIds that appeared today but not yesterday) to catch fresh inventory before it sells.
The $0.003/property pricing makes daily monitoring of 200 properties cost roughly $0.60/day — about $18/month for a real-time market intelligence feed for a specific neighborhood.
Other real estate scrapers
- RE/MAX Portugal Scraper — extract property listings from RE/MAX Portugal
- Airbnb Listing Scraper — scrape Airbnb property details and pricing