Redfin Scraper avatar

Redfin Scraper

Pricing

Pay per event

Go to Apify Store
Redfin Scraper

Redfin Scraper

Extract Redfin real estate listings: price, beds, baths, sqft, address, neighborhood, year built, HOA fees, MLS status, and listing URL. No proxy needed — pure HTTP.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

41

Total users

14

Monthly active users

9 days ago

Last modified

Categories

Share

What does Redfin Scraper do?

Redfin Scraper extracts property listings from Redfin — one of the most accurate and up-to-date real estate platforms in the United States. Powered by Redfin's internal JSON API (no browser required), this scraper delivers clean, structured property data at scale.

Simply paste one or more Redfin city, ZIP code, neighborhood, or county URLs and you get back a dataset of property listings with prices, addresses, bedroom/bathroom counts, square footage, year built, HOA fees, listing status, agent info, and more.

Key capabilities:

  • 🏠 Scrape cities, ZIP codes, neighborhoods, and counties in one run
  • 📊 Get 20+ data fields per listing: price, address, beds, baths, sqft, lot size, year built, HOA, MLS status, listing remarks, and more
  • 🔍 Filter by property type, price range, bedrooms, bathrooms, and square footage
  • 📄 Paginate through hundreds of results per search area
  • No proxy needed — pure HTTP, no browser overhead, runs on any plan

Who is Redfin Scraper for?

🏗️ Real estate investors

You track multiple markets and need fresh listing data for analysis. Use this scraper to pull all active listings in Austin, Seattle, or Washington DC sorted by price or days on market — and feed the data into your investment model.

📊 Market researchers and analysts

You need bulk listing data for pricing analysis, market trend reports, or competitive intelligence. This scraper gives you clean, structured data you can load into Excel, Google Sheets, or any analytics tool.

🏢 PropTech startups

You're building a real estate app, lead gen platform, or CMA tool. Instead of scraping HTML pages, use this actor to get structured JSON data from Redfin's own API — the same data the website shows.

🤖 Data engineers and analysts

You need to regularly pull listing data for dashboards, alerts (e.g., "new listings under $500k in ZIP 78703"), or CRM enrichment. Schedule this actor to run daily or weekly.

🏡 Homebuyers doing research

You want to compare prices across neighborhoods or track how quickly properties sell in a specific area — without clicking through dozens of pages manually.

Why use Redfin Scraper?

  • Actually works — uses Redfin's JSON API, not fragile HTML parsing
  • No proxy needed — HTTP-only, runs cheaply from any compute tier
  • Structured data — 20+ fields per listing, flattened and ready for analysis
  • Pagination built-in — retrieve up to 350+ listings per search area
  • Filter support — narrow by type, price, beds, baths, sqft
  • Multiple locations in one run — batch multiple cities or ZIP codes together
  • Export formats — JSON, CSV, Excel via Apify's built-in dataset export
  • Schedule support — run daily/weekly to track listing changes over time

What data can you extract?

FieldDescription
propertyIdRedfin's unique property identifier
listingIdListing identifier
mlsIdMLS number
mlsStatusStatus: Active, Pending, Coming Soon, Contingent, etc.
addressStreet address
unitNumberUnit number (for condos/townhouses)
cityCity name
stateState abbreviation
zipZIP/postal code
neighborhoodNeighborhood or subdivision name
latitude / longitudeGPS coordinates
priceListing price in USD
pricePerSqFtPrice per square foot
bedsNumber of bedrooms
bathsTotal bathrooms
fullBathsFull bathrooms
sqFtLiving area in square feet
lotSizeSqFtLot size in square feet
yearBuiltYear the property was built
storiesNumber of stories
hoaPerMonthHOA fee per month
propertyTypeNameProperty type: Single Family, Condo, Townhouse, etc.
daysOnMarketDays the listing has been active
soldDateDate sold (ISO format)
isHotWhether Redfin marks it as a "hot" listing
isNewConstructionWhether it's a new build
hasVirtualTourVirtual tour available
numPhotosNumber of listing photos
listingAgentListing agent name
listingBrokerListing brokerage name
listingRemarksFull listing description
keyFactsKey features highlighted by the listing
urlFull Redfin listing URL

How much does it cost to scrape Redfin listings?

This actor uses Pay-Per-Event (PPE) pricing — you only pay for listings actually extracted.

PlanPrice per listing
Free$0.00345
Bronze$0.003
Silver$0.00234
Gold$0.0018
Platinum$0.0012
Diamond$0.00084

Real-world cost examples:

  • 100 Austin listings → ~$0.35 (Free plan) → ~$0.08 (Diamond plan)
  • 500 Denver listings → ~$1.73 (Free plan) → ~$0.42 (Diamond plan)
  • 1,000 Seattle listings → ~$3.45 (Free plan) → ~$0.84 (Diamond plan)

Free plan estimate: With Apify's $5 monthly free credits, you can scrape approximately 1,450 listings per month at no charge.

There's also a small one-time start charge of $0.002 per run (all plans).

How to scrape Redfin listings

  1. Go to Redfin Scraper on Apify Store
  2. Click Try for free
  3. Find your target location on Redfin (e.g., a city page like https://www.redfin.com/city/30818/TX/Austin)
  4. Copy the URL and paste it into the Redfin search URLs field
  5. Set maxListings (default: 100) to control how many results to fetch
  6. Optionally set price range, property type, or bedroom filters
  7. Click Start and wait for results (typically under 30 seconds for 100 listings)
  8. Download results as JSON, CSV, or Excel from the Results tab

Supported URL formats:

  • City page: https://www.redfin.com/city/30818/TX/Austin
  • ZIP code: https://www.redfin.com/zipcode/10001
  • Neighborhood: https://www.redfin.com/neighborhood/.../{id}
  • County: https://www.redfin.com/county/{id}/...

Input examples:

Search Austin, TX for homes under $600k with 3+ beds:

{
"searchUrls": ["https://www.redfin.com/city/30818/TX/Austin"],
"maxListings": 100,
"minPrice": 200000,
"maxPrice": 600000,
"minBeds": 3
}

Scrape multiple cities in one run:

{
"searchUrls": [
"https://www.redfin.com/city/30818/TX/Austin",
"https://www.redfin.com/city/16163/WA/Seattle",
"https://www.redfin.com/city/13/DC/Washington"
],
"maxListings": 50
}

Scrape a ZIP code for condos:

{
"searchUrls": ["https://www.redfin.com/zipcode/94105"],
"maxListings": 50,
"propertyTypes": ["condo"]
}

Input parameters

ParameterTypeDefaultDescription
searchUrlsArrayrequiredRedfin city, ZIP, neighborhood, or county search URLs
maxListingsInteger100Max listings per URL (0 = all available, up to ~350)
propertyTypesArray[]Filter: house, condo, townhouse, multi-family, land, other
listingStatusArray[]Filter: active, coming-soon, contingent, pending, sold
minPriceInteger0Minimum price filter (0 = no minimum)
maxPriceInteger0Maximum price filter (0 = no maximum)
minBedsInteger0Minimum bedrooms (0 = no filter)
minBathsInteger0Minimum bathrooms (0 = no filter)
minSqFtInteger0Minimum square footage (0 = no filter)
sortOrderStringredfin-recommended-ascSort: price-asc, price-desc, days-on-market-asc, newest, etc.

Output examples

A single listing output item looks like this:

{
"propertyId": 31219656,
"listingId": 213537338,
"mlsId": "4563912",
"mlsStatus": "Active",
"address": "2301 W 10th St",
"unitNumber": null,
"city": "Austin",
"state": "TX",
"zip": "78703",
"neighborhood": "Lloyd Maury Allen",
"latitude": 30.2833939,
"longitude": -97.7707162,
"price": 1250000,
"pricePerSqFt": 567,
"beds": 5,
"baths": 3,
"fullBaths": 3,
"sqFt": 2203,
"lotSizeSqFt": 6712,
"yearBuilt": 1935,
"stories": 2,
"hoaPerMonth": null,
"propertyTypeName": "Single Family Residential",
"daysOnMarket": 1,
"soldDate": null,
"isHot": false,
"isNewConstruction": false,
"hasVirtualTour": false,
"numPhotos": 31,
"listingAgent": "John Smith",
"listingBroker": "Redfin Corporation",
"listingRemarks": "Classic Deep Eddy / Tarrytown Opportunity...",
"keyFacts": ["6,712 sq ft lot", "3 parking spots", "Built 1935"],
"url": "https://www.redfin.com/TX/Austin/2301-W-10th-St-78703/home/31219656"
}

Tips for best results

  • 🗺️ Find the right URL: Browse Redfin normally, navigate to the city/ZIP/neighborhood you want, and copy the URL from your browser's address bar.
  • 🔢 Start small: Use maxListings: 20 for your first run to verify the data looks correct before running larger batches.
  • 📅 Schedule for monitoring: Use Apify's scheduler to run this actor daily or weekly to track new listings or price changes in your target market.
  • 🏘️ Multiple areas in one run: You can scrape several cities or ZIP codes in a single run by adding multiple URLs to the searchUrls array.
  • 🔍 Use filters: Combining minPrice, maxPrice, minBeds, and propertyTypes significantly narrows results to exactly what you need.
  • No rate limit concerns: This actor uses Redfin's public JSON API at a respectful pace with a 500ms delay between pages.

Integrations

Redfin Scraper → Google Sheets Export listings as CSV and import to Google Sheets for market analysis. Use Google Sheets formulas to calculate price-per-sqft ranges, average DOM by neighborhood, or spot outliers. Set up a recurring run with Apify's scheduler to automatically refresh your sheet with new listings each morning.

Redfin Scraper → Slack alerts Connect via Apify's webhook or Make.com to send Slack notifications when new listings appear in a specific ZIP code under your target price. Schedule the scraper to run hourly and filter the dataset for new items since the last run.

Redfin Scraper → Make.com / Zapier pipeline Trigger an automation whenever new results appear: add leads to a CRM (HubSpot, Salesforce), send email alerts to clients, or populate a property comparison spreadsheet automatically.

Redfin Scraper → PostgreSQL / BigQuery Use Apify's dataset API to pull results directly into your data warehouse for long-term trend analysis, price history tracking, or ML model training.

Scheduled monitoring Run the scraper daily on target ZIP codes and compare datasets over time to identify price reductions, new listings, or days-on-market trends in specific neighborhoods.

Using the Apify API

Node.js:

const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('automation-lab/redfin-scraper').call({
searchUrls: ['https://www.redfin.com/city/30818/TX/Austin'],
maxListings: 100,
minBeds: 3,
});
const dataset = await client.dataset(run.defaultDatasetId).listItems();
console.log(dataset.items);

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("automation-lab/redfin-scraper").call(run_input={
"searchUrls": ["https://www.redfin.com/city/30818/TX/Austin"],
"maxListings": 100,
"minBeds": 3,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["address"], item["price"])

cURL:

curl -X POST "https://api.apify.com/v2/acts/automation-lab~redfin-scraper/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchUrls": ["https://www.redfin.com/city/30818/TX/Austin"],
"maxListings": 100
}'

Use with AI agents via MCP

Connect Redfin Scraper to Claude, Cursor, or any MCP-compatible AI agent:

Claude Code:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/redfin-scraper"

Claude Desktop / Cursor / VS Code — add to your MCP config:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/redfin-scraper"
}
}
}

Example AI prompts:

  • "Scrape the top 50 active listings in Austin, TX under $800k and show me the ones with more than 3 bedrooms"
  • "Get all active condos in Seattle's Capitol Hill neighborhood and calculate the average price per sqft"
  • "Pull the newest 100 listings in Washington DC and find the ones that have been on market for 1 day"

Redfin's data is derived from public MLS (Multiple Listing Service) feeds and is displayed publicly without requiring login. Web scraping publicly available data is generally lawful under U.S. law, as affirmed by the hiQ v. LinkedIn ruling.

This scraper:

  • Only accesses publicly available listing data (no login required)
  • Does not access any private user data or agent-only sections
  • Operates at a respectful rate with built-in delays

Always ensure your use of scraped data complies with your local laws and Redfin's Terms of Service. This actor is intended for personal research, market analysis, and educational purposes.

FAQ

How many listings can I get per search area? Redfin's API returns up to approximately 350 listings per search area. For cities with more active listings, use smaller sub-areas (ZIP codes or neighborhoods) and combine the results.

Why does the ZIP code search return fewer results than expected? Some ZIP codes have limited active inventory at any given time, especially in rural areas. This is normal — the scraper returns all available listings in that area.

How fast does it run? For 100 listings, expect 5–15 seconds. For 500 listings, expect 30–60 seconds. No proxy is used so speed is consistent.

Why are some listings missing fields like price or sqft? Some Redfin listings have restricted data access levels (level field). Listings from certain MLS providers hide specific fields. The scraper returns null for restricted fields.

Can I get sold/historical listings? Yes — add "listingStatus": ["sold"] to your input to get recently sold properties.

How is this different from Redfin's official API? Redfin's official Data Center API has a waitlist and is designed for enterprise users. This scraper gives independent developers and researchers immediate access to listing data in a structured format.

Why do some city pages return 0 results? This can happen if the city ID in the URL is incorrect or the area has no active listings. Double-check by navigating to the Redfin page directly in your browser first, then copy the exact URL.

Other real estate scrapers