Redfin Scraper avatar

Redfin Scraper

Pricing

Pay per event

Go to Apify Store
Redfin Scraper

Redfin Scraper

Extract Redfin real estate listings for production property-data workflows: price, beds/baths, sqft, address, neighborhood, HOA, MLS status, agent info, and listing URL. Lightweight HTTP workflow; no proxy needed.

Pricing

Pay per event

Rating

1.0

(1)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

79

Total users

17

Monthly active users

7 hours 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 it for? Redfin Scraper users

🏗️ 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

Why use this actor instead of maintaining a browser scraper?

The Apify blog walkthrough shows how to build a Redfin extractor with Playwright. This actor is built for ongoing production use: it follows Redfin's structured data path with a lightweight HTTP workflow, returns normalized listing fields, and can be scheduled or called through the Apify API without running a browser for every page.

Use it when you need repeatable Redfin listing exports for market monitoring, comps, alerts, or downstream PropTech/AI workflows.

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.

API usage

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
}'

MCP and AI-agent workflows

This actor returns structured JSON that can be called from the Apify API, scheduled runs, webhooks, or integrations such as Make and Zapier. Use it to feed property-search agents, market-monitoring agents, valuation/RAG pipelines, CRM enrichment, or daily alerts without maintaining your own scraper.

You can also call this actor through the Apify MCP server from Claude Desktop, Cursor, Windsurf, or any MCP-compatible agent. Add the Apify MCP server with your Apify API token:

$claude mcp add apify -- npx -y @apify/actors-mcp-server --actors automation-lab/redfin-scraper

Example MCP server configuration:

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server", "--actors", "automation-lab/redfin-scraper"],
"env": {
"APIFY_TOKEN": "YOUR_APIFY_TOKEN"
}
}
}
}

Example prompts for an MCP-enabled real-estate agent:

  • "Run Redfin Scraper for Austin active listings under $750k and summarize neighborhoods with the most results."
  • "Scrape these San Marino ZIP-code Redfin URLs, then return only properties over $3M with full address, price, beds, baths, and URL."
  • "Compare Redfin listings from two city URLs and identify unusually low price-per-square-foot homes."

For multi-source coverage, combine:

Useful search terms: real estate data API, property listings API, Zillow API alternative, Redfin API alternative, Realtor.com API alternative, housing market data, AI agent real estate data, property data for LLM, real estate scraper, property scraper.

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.

Build a production real-estate data workflow

Use this actor as one source in a repeatable property-data pipeline: scrape listings from the source site, export structured JSON/CSV/Excel, schedule refreshes, and send results to your dashboard, CRM, warehouse, or AI/LLM workflow.

Use Redfin as a fast US listing source in a repeatable property-data pipeline: collect prices, beds/baths, sqft, addresses, MLS status, agent/source URLs, and listing details, then export or schedule results for market monitoring, comps, alerts, PropTech products, or AI/RAG workflows.

For broader coverage, combine it with related Automation Lab actors: