Redfin Scraper avatar

Redfin Scraper

Pricing

Pay per event

Go to Apify Store
Redfin Scraper

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

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

25

Total users

10

Monthly active users

a day ago

Last modified

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

ParameterTypeDefaultDescription
urlstringRedfin city, neighborhood, or search URL
locationstring5-digit ZIP code (use if no URL provided)
statusstringfor-saleListing status: for-sale, sold, pending
propertyTypearrayall typesFilter: house, condo, townhouse, multifamily, land, other
minPricenumberMinimum listing price (USD)
maxPricenumberMaximum listing price (USD)
minBedsnumberMinimum bedrooms
maxBedsnumberMaximum bedrooms
minBathsnumberMinimum bathrooms
minSqftnumberMinimum square footage
maxSqftnumberMaximum square footage
sortBystringrecommendedSort: price-asc, price-desc, days-on-redfin-asc, days-on-redfin-desc, dollars-per-sq-ft-asc, dollars-per-sq-ft-desc
maxResultsnumber100Maximum 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 94105 in 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:

EventPrice
Run started$0.001
Per property extracted$0.003

Cost examples

ScenarioPropertiesCost
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

  1. Go to the Redfin Scraper page on Apify
  2. Paste a Redfin URL or enter a ZIP code
  3. Set your price, bed/bath, and property type filters
  4. 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 ApifyClient
client = 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 sold to 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-asc to 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:

  1. Identify candidate ZIP codes or neighborhoods in your target city.
  2. Run the scraper for each area with status: "sold" to get recent transaction prices — sold listings reflect actual market values, not asking prices.
  3. Compare median pricePerSqFt, average dom (days on market), and the spread between list price and sold price across neighborhoods.
  4. Low dom + rising pricePerSqFt signals a competitive, appreciating market. High dom + stagnant prices suggests oversupply or softening demand.
  5. Cross-reference with for-sale data 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:

FeatureRedfinZillow
Data freshnessNear real-time MLS feedOften 1–2 days behind
Price accuracyStrong (direct MLS broker)Includes Zestimates alongside list prices
Sold historyAvailableAvailable
Anti-bot difficultyModerateHigh (aggressive bot detection)
Price/sqftDirect fieldCalculated

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-asc to 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:

  1. Set up a daily Apify Schedule targeting your ZIP codes or neighborhoods.
  2. Store results in a database (PostgreSQL or Google Sheets) with the scrapedAt timestamp.
  3. Join daily snapshots on propertyId or mlsId to detect price changes between runs.
  4. Flag listings where price dropped more than 5% — these are negotiation opportunities.
  5. 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