# 🏡 Redfin Scraper - Homes For Sale, Rent & Sold Data (`benthepythondev/redfin-scraper`) Actor

Scrape Redfin listings - homes for sale, rentals & sold properties. Extract price, beds, baths, sqft, address, city, state, ZIP & URLs. Filter by location, property type, price range. Fast & reliable. Perfect for market research & investment analysis.

- **URL**: https://apify.com/benthepythondev/redfin-scraper.md
- **Developed by:** [Ben](https://apify.com/benthepythondev) (community)
- **Categories:** Real estate, Developer tools, Automation
- **Features:** Limited permissions
- **Stats:** 34 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🏡 Redfin Scraper — Homes For Sale, For Rent & Recently Sold Data

Extract **real estate listings from Redfin** — homes for sale, rentals and
recently sold properties — as clean, structured data across any US city. Pull live
inventory and sold comps straight from one of the largest US real-estate
marketplaces, with price, beds, baths, square footage, address and photos on every
record. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to
Make, Zapier or n8n.

### 🔑 What is the Redfin Scraper?

It turns any Redfin search into a structured dataset. Give it a location (city +
state) and optional filters for listing type, property type, price, beds, baths or
size, and it returns every matching property with full details and a photo — so
investors, agents and market analysts can build buy-boxes, comp sets and live
inventory feeds without manual browsing.

#### What data does it extract?

- **Price** and **price-related context** straight from the card
- **Beds, baths and square footage** (`beds`, `baths`, `sqft`)
- **Address** split into `address`, `full_address`, `city`, `state`, `zip_code`
- **Listing type** (`for_sale`, `for_rent`, `sold`) and **property type**
- **Listing status** (e.g. NEW, OPEN, PENDING, SOLD, REDUCED)
- **Short description** preview and the listing **URL**
- **Primary photo** (`image_url`) and a **scraped_at** timestamp

### ⬇️ Input

Search any US market by city + state, then narrow with filters:

| Field | Description |
|-------|-------------|
| `location` | City and state, e.g. `Miami, FL`, `Los Angeles, CA`, `Austin, TX` |
| `listingType` | `for_sale` (default), `for_rent`, or `sold` |
| `propertyType` | `all`, `house`, `condo`, `townhouse`, `land`, `multi_family` |
| `minPrice` / `maxPrice` | Price filter in USD (`0` = no limit) |
| `minBeds` / `minBaths` | Minimum bedrooms / bathrooms |
| `minSqft` | Minimum square footage (`0` = no minimum) |
| `maxItems` | Maximum listings to scrape (default 100) |
| `maxPages` | Maximum search-result pages to crawl (default 5) |

#### Example input

```json
{
  "location": "Austin, TX",
  "listingType": "for_sale",
  "propertyType": "house",
  "minPrice": 300000,
  "maxPrice": 750000,
  "minBeds": 3,
  "minBaths": 2,
  "minSqft": 1500,
  "maxItems": 200
}
```

### ⬆️ Output

Every property is one clean row (view as a **table**, or export **JSON / CSV / Excel**):

```json
{
  "address": "1234 Maple St",
  "full_address": "1234 Maple St, Austin, TX 78745",
  "city": "Austin",
  "state": "TX",
  "zip_code": "78745",
  "price": 525000,
  "beds": 3,
  "baths": 2.5,
  "sqft": 1850,
  "property_type": "house",
  "listing_type": "for_sale",
  "listing_status": "NEW",
  "description": "Beautifully updated single-family home with open floor plan",
  "url": "https://www.redfin.com/TX/Austin/1234-Maple-St-78745/home/147258369",
  "image_url": "https://ssl.cdn-redfin.com/photo/...",
  "source": "redfin",
  "scraped_at": "2026-06-27T14:00:00"
}
```

### 💡 Use cases

- **💰 Investors — buy-box monitoring:** filter by price, beds, baths and property type to surface only properties that fit your criteria, then track them over time.
- **🎯 Agents — new listings & comps:** monitor fresh inventory in your farm area and pull `sold` listings to support pricing conversations.
- **📊 Market analysts:** aggregate listings by ZIP, city and listing type to study supply and pricing trends.
- **🏢 PropTech platforms:** feed property-search tools with live for-sale, rental and sold inventory.

### ❓ FAQ

**How do I scrape Redfin listings?** Enter a `location` (city + state), choose a
`listingType` and add optional filters (price, beds, baths, property type), then
Run. You get structured property rows with address, price and a photo.

**Do I need an API key or login?** No. It reads public Redfin listing data — just
give it a location and filters.

**Can I get recently sold properties for comps?** Yes — set `listingType: "sold"`
to pull recently sold listings for comparable-sales analysis.

**Does it cover rentals too?** Yes — set `listingType: "for_rent"` for rental
inventory; `for_sale` is the default.

**Which property types can I filter by?** `all` (default), `house`, `condo`,
`townhouse`, `land` and `multi_family`.

**Does it include photos?** Yes — the primary `image_url` is captured per listing.

**How do I search a specific ZIP or neighborhood?** Search by city + state, then
filter on the `zip_code` field downstream; for tighter targeting you can narrow the
`city` value.

**How many listings can it return?** Up to your `maxItems` cap; raise `maxPages`
for high-inventory metros like LA, NYC or Miami.

**Can I run it on a schedule or via API?** Yes — schedule recurring runs in Apify,
call it via the API/SDK, or connect it to Make, Zapier or n8n.

**Is scraping Redfin legal?** It extracts publicly available listing data. Use it
responsibly for research and analysis, and follow applicable laws and Redfin's
terms.

### 🔗 You might also like

- **[Zillow Real Estate Scraper](https://apify.com/benthepythondev/zillow-real-estate-scraper)** — homes for sale & rent
- **[Craigslist Real Estate Scraper](https://apify.com/benthepythondev/craigslist-real-estate-scraper)** — FSBO & rental data
- **[Zumper Rental Scraper](https://apify.com/benthepythondev/zumper-rental-scraper)** — apartment rentals
- **[OnTheMarket Scraper](https://apify.com/benthepythondev/onthemarket-scraper)** — UK property listings

***

**Keywords:** Redfin scraper, Redfin real estate scraper, homes for sale data, rental listings scraper, sold property comps, real estate API, property data, real estate investor leads, comparable sales, MLS alternative data, US housing market data, beds baths sqft, real estate lead generation, Zillow alternative.

### Workflow and data quality

For best results, run this actor as part of a repeatable data pipeline rather than a one-off scrape. Start with a focused input, export the dataset to CSV or JSON, and keep a stable unique field such as URL, ID, domain, package name or title as your deduplication key. Schedule the same task daily or weekly when you need monitoring, then compare each new dataset with the previous run to identify fresh records, removed records and changed fields.

The output is designed to be practical for business workflows: spreadsheets, dashboards, enrichment steps, alerts, CRM imports and lightweight internal APIs. Null values mean the source did not provide that field, not that the actor guessed. For larger projects, combine this actor with related Apify scrapers and use the shared URL/company/domain fields to build a richer dataset without manual copy-paste work.

# Actor input Schema

## `location` (type: `string`):

City and state to search (e.g., 'Miami, FL', 'Los Angeles, CA')

## `listingType` (type: `string`):

Type of listings to search

## `propertyType` (type: `string`):

Filter by property type

## `minPrice` (type: `integer`):

Minimum listing price (0 for no minimum)

## `maxPrice` (type: `integer`):

Maximum listing price (0 for no maximum)

## `minBeds` (type: `integer`):

Minimum number of bedrooms

## `minBaths` (type: `integer`):

Minimum number of bathrooms

## `minSqft` (type: `integer`):

Minimum square footage (0 for no minimum)

## `maxItems` (type: `integer`):

Maximum number of listings to scrape

## `maxPages` (type: `integer`):

Maximum number of search result pages to scrape

## Actor input object example

```json
{
  "location": "Miami, FL",
  "listingType": "for_sale",
  "propertyType": "all",
  "minPrice": 0,
  "maxPrice": 0,
  "minBeds": 0,
  "minBaths": 0,
  "minSqft": 0,
  "maxItems": 3,
  "maxPages": 1
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "location": "Miami, FL"
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/redfin-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "location": "Miami, FL" }

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/redfin-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "location": "Miami, FL"
}' |
apify call benthepythondev/redfin-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,benthepythondev/redfin-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dMTLvAGwCMRe6IzTR/builds/gtCOvbPPH9BXoJ1k3/openapi.json
