# Redfin Search Scraper (`burbn/redfin-search-scraper`) Actor

Search Redfin real estate listings by zip code or URL. Extract property prices, addresses, beds, baths, sqft, MLS data, agent info & listing descriptions for US & Canada. Supports for sale, sold, rent & coming soon. 20+ filters, auto-pagination, up to 350 results/page.

- **URL**: https://apify.com/burbn/redfin-search-scraper.md
- **Developed by:** [Kevin](https://apify.com/burbn) (community)
- **Categories:** Real estate, Automation, Developer tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Redfin Search Scraper | Redfin Real Estate Data API

Search Redfin property listings by zip code or URL. Extract Redfin real estate data including property prices, addresses, MLS info, beds, baths, sqft, lot size, listing descriptions, agent details, open house info, and more across the United States and Canada. The best Redfin property scraper for real estate research, market analysis, and property intelligence.

### ❓ What is Redfin Search Scraper?

**Redfin Search Scraper** is a powerful Apify actor that lets you search and extract property listing data from **Redfin** — one of the largest real estate platforms in North America. Whether you want to find homes for sale, track sold prices, compare rental listings, or collect property data for investment research — this Redfin scraper does it all automatically.

With this Redfin search scraper, you can:

- 🔍 **Search by zip code or Redfin URL** — Search any US zip code, Canadian postal code, or paste a Redfin search URL
- 🏠 **4 listing statuses** — Get properties for sale, sold, for rent, or coming soon
- 💰 **Get complete pricing data** — Extract prices, price per sqft, HOA dues, and sold prices
- 🏢 **Get full property details** — Extract beds, baths, sqft, lot size, year built, MLS info, and listing descriptions
- 📍 **Get location data** — Extract full address, city, state, zip, neighborhood, and GPS coordinates
- 👤 **Get agent & broker info** — Extract listing agent name, broker name, and Redfin agent status
- 🏷️ **Listing tags & key facts** — Extract property highlights, tags, and key selling points
- 🎛️ **20+ advanced filters** — Filter by price, beds, baths, sqft, lot size, year built, HOA, pool, garage, waterfront, and more
- 📄 **Auto-pagination** — Automatically fetches all pages of results with smart rate limiting
- 📊 **Export structured data** — Download results in JSON, CSV, Excel, XML, and RSS formats

### 🎯 What Data Can You Extract from Redfin?

This Redfin scraper extracts the following data for each listing:

| Field | Description |
|-------|-------------|
| `property_id` | Unique Redfin property identifier |
| `listing_id` | Redfin listing identifier |
| `mls_number` | MLS listing number |
| `mls_status` | MLS status (Active, Pending, Sold, etc.) |
| `search_status` | Search status (ACTIVE, SOLD, etc.) |
| `property_type` | Property type (HOUSE, CONDO, TOWNHOUSE, etc.) |
| `listing_url` | Direct link to Redfin property page |
| `street_address` | Street address |
| `unit_number` | Unit/apartment number |
| `city` | City name |
| `state` | State abbreviation |
| `zip_code` | ZIP/postal code |
| `country_code` | Country code (US, CA) |
| `neighborhood` | Neighborhood name |
| `latitude` | GPS latitude coordinate |
| `longitude` | GPS longitude coordinate |
| `price` | Listing price or sold price |
| `price_per_sqft` | Price per square foot |
| `hoa_monthly` | Monthly HOA dues |
| `beds` | Number of bedrooms |
| `baths` | Total bathrooms (full + half) |
| `full_baths` | Number of full bathrooms |
| `sqft` | Living area in square feet |
| `lot_size_sqft` | Lot size in square feet |
| `year_built` | Year the property was built |
| `days_on_market` | Days on market |
| `sold_date` | Date the property was sold |
| `open_house_start` | Open house start date/time |
| `open_house_end` | Open house end date/time |
| `is_new_construction` | Whether it's new construction |
| `is_hot` | Whether Redfin marks it as "Hot" |
| `has_3d_tour` | Whether 3D tour is available |
| `has_virtual_tour` | Whether virtual tour is available |
| `has_video_tour` | Whether video tour is available |
| `listing_remarks` | Full listing description |
| `listing_tags` | Property highlight tags |
| `key_facts` | Key property facts |
| `photo_count` | Total number of listing photos |
| `listing_agent_name` | Listing agent name |
| `listing_agent_id` | Listing agent ID |
| `listing_broker_name` | Listing broker/agency name |
| `listing_broker_is_redfin` | Whether broker is Redfin |
| `time_zone` | Property time zone |

### 📍 Supported Locations

This Redfin scraper supports searching by:

- **US Zip Codes** — Any 5-digit US zip code (e.g., `90210`, `10001`, `60601`)
- **Canadian Postal Codes** — Canadian postal-code area
- **Redfin URLs** — Paste any Redfin search URL directly

**Example locations:**

| Location | Input |
|----------|-------|
| Beverly Hills, CA | `90210` |
| Manhattan, NY | `10001` |
| Chicago, IL | `60601` |
| Miami Beach, FL | `33139` |
| Seattle, WA | `98101` |
| San Francisco, CA | `94102` |

### 🚀 How to Use Redfin Search Scraper

#### Step 1: Enter a Location

Enter a US zip code (e.g., `90210`), Canadian postal code, or a Redfin search URL.

#### Step 2: Configure Your Search

| Input | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `location` | String | ✅ Yes | `90210` | Zip code or Redfin URL |
| `status` | String | ❌ No | `for_sale` | `for_sale`, `sold`, `for_rent`, `coming_soon` |
| `property_types` | String | ❌ No | All | Comma-separated: `HOUSE`, `CONDO`, `TOWNHOUSE`, `MULTI_FAMILY`, `LAND`, `OTHER`, `MANUFACTURED`, `CO_OP` |
| `sort` | String | ❌ No | `redfin_recommended` | `redfin_recommended`, `newest`, `oldest`, `price_low_high`, `price_high_low`, `beds`, `baths`, `sqft`, `lot_size` |
| `country_code` | String | ❌ No | `US` | `US` or `CA` |
| `num_homes` | Number | ❌ No | `40` | Results per page (max 350) |
| `maxPages` | Number | ❌ No | `1` | Max pages to scrape (0 = all, max 100) |
| `min_price` | Number | ❌ No | `0` | Minimum price filter |
| `max_price` | Number | ❌ No | `0` | Maximum price filter |
| `min_beds` | Number | ❌ No | `0` | Minimum bedrooms |
| `max_beds` | Number | ❌ No | `0` | Maximum bedrooms |
| `min_baths` | Number | ❌ No | `0` | Minimum bathrooms (supports 2.5) |
| `min_sqft` | Number | ❌ No | `0` | Minimum square footage |
| `max_sqft` | Number | ❌ No | `0` | Maximum square footage |
| `min_lot_size` | Number | ❌ No | `0` | Minimum lot size (sqft) |
| `max_lot_size` | Number | ❌ No | `0` | Maximum lot size (sqft) |
| `min_year_built` | Number | ❌ No | `0` | Minimum year built |
| `max_year_built` | Number | ❌ No | `0` | Maximum year built |
| `max_hoa` | Number | ❌ No | `0` | Maximum monthly HOA |
| `has_pool` | Boolean | ❌ No | `false` | Pool required |
| `has_garage` | Boolean | ❌ No | `false` | Garage required |
| `is_waterfront` | Boolean | ❌ No | `false` | Waterfront only |
| `time_on_market_days` | Number | ❌ No | `0` | Listed in last N days |
| `sold_within_days` | Number | ❌ No | `0` | Sold within last N days (1-1095) |

#### Step 3: Run and Download Results

Click **Start** to run the Redfin scraper. Results are available in JSON, CSV, Excel, XML, and RSS formats.

### 📋 Example Input

```json
{
  "location": "90210",
  "status": "for_sale",
  "sort": "redfin_recommended",
  "country_code": "US",
  "num_homes": 40,
  "maxPages": 1,
  "min_price": 500000,
  "min_beds": 3,
  "has_pool": true
}
```

### 📋 Example Output

```json
{
  "property_id": "6824074",
  "listing_id": "215351203",
  "mls_number": "26834437",
  "mls_status": "Active",
  "search_status": "ACTIVE",
  "property_type": "HOUSE",
  "listing_url": "https://www.redfin.com/CA/Beverly-Hills/1185-Angelo-Dr-90210/home/6824074",
  "street_address": "1185 Angelo Dr",
  "unit_number": null,
  "city": "Beverly Hills",
  "state": "CA",
  "zip_code": "90210",
  "country_code": "US",
  "neighborhood": "Beverly Hills Post Office",
  "latitude": 34.09126,
  "longitude": -118.43336,
  "price": 6499800,
  "price_per_sqft": 436,
  "hoa_monthly": null,
  "beds": 6,
  "baths": 9,
  "full_baths": 7,
  "sqft": 14901,
  "lot_size_sqft": 35357,
  "year_built": null,
  "days_on_market": 1,
  "sold_date": null,
  "is_new_construction": false,
  "is_hot": false,
  "has_3d_tour": false,
  "has_virtual_tour": false,
  "has_video_tour": false,
  "listing_remarks": "Introducing 1185 Angelo Drive - an exceptional development opportunity in one of Beverly Hills' most exclusive pockets...",
  "listing_tags": ["EXPANSIVE LOT", "PRIVATE DRIVEWAY", "APPROVED PLANS", "MODERN RESIDENCE"],
  "key_facts": ["Expansive lot", "Approved plans", "Private driveway"],
  "photo_count": 17,
  "listing_agent_name": null,
  "listing_agent_id": null,
  "listing_broker_name": null,
  "listing_broker_is_redfin": false,
  "time_zone": "US/Pacific",
  "searchLocation": "90210",
  "pageNumber": 1
}
```

### 🎨 Dataset Views

The Redfin scraper provides 3 organized dataset views for easy analysis:

| View | Description |
|------|-------------|
| 📊 **Properties Overview** | Address, price, type, beds, baths, sqft, lot size, year built, days on market, URL |
| 📋 **Property Details** | Full details with MLS data, coordinates, description, tags, key facts, tour info |
| 👤 **Agent Information** | Listing agent name, agent ID, broker name, and Redfin agent status |

### 🎛️ Advanced Filters

This Redfin scraper supports 20+ filters to narrow your property search:

| Filter | Type | Description |
|--------|------|-------------|
| `min_price` / `max_price` | Number | Price range filter |
| `min_beds` / `max_beds` | Number | Bedroom count range |
| `min_baths` | Number | Minimum bathrooms (supports half-baths like 2.5) |
| `min_sqft` / `max_sqft` | Number | Square footage range |
| `min_lot_size` / `max_lot_size` | Number | Lot size range (in sqft) |
| `min_year_built` / `max_year_built` | Number | Year built range |
| `max_hoa` | Number | Maximum monthly HOA dues |
| `has_pool` | Boolean | Pool required |
| `has_garage` | Boolean | Garage required |
| `is_waterfront` | Boolean | Waterfront properties only |
| `time_on_market_days` | Number | Listed within last N days |
| `sold_within_days` | Number | Sold within last N days (max 1095) |
| `property_types` | String | Comma-separated: HOUSE, CONDO, TOWNHOUSE, MULTI\_FAMILY, LAND, OTHER, MANUFACTURED, CO\_OP |

### 💡 Use Cases for Redfin Search Scraper

- **Real Estate Research** — Search and compare property prices across zip codes and neighborhoods
- **Market Analysis** — Monitor property price trends, days on market, and inventory levels
- **Investment Research** — Analyze price per sqft, sold prices, and market supply for investment decisions
- **Relocation Planning** — Find homes matching your budget, size, and feature requirements
- **Lead Generation** — Extract listing agent and broker contact details for real estate outreach
- **Property Monitoring** — Track new listings, price changes, and sold properties in target areas
- **Competitive Analysis** — Compare Redfin listings data with other real estate platforms
- **Data Journalism** — Collect real estate data for housing market reports and visualizations
- **Academic Research** — Gather property data for urban planning, economic, or housing studies

### 🔧 Tips for Best Results

1. **Start small** — Set `maxPages: 1` first to test your filters and preview results
2. **Use specific zip codes** — Narrow your search to specific zip codes for focused results
3. **Combine filters** — Use price, beds, sqft, and feature filters together to get exactly what you need
4. **Use pagination wisely** — Set `maxPages: 0` to scrape ALL pages (up to 100 pages!)
5. **Try different statuses** — Search `for_sale`, `sold`, `for_rent`, or `coming_soon` for different data
6. **Export in your preferred format** — Download property data in JSON, CSV, or Excel

### 🏷️ Tags

`redfin` `redfin scraper` `redfin properties` `redfin api` `redfin real estate` `redfin for sale` `redfin sold` `redfin rent` `property scraper` `real estate scraper` `real estate data` `property search` `homes for sale` `sold properties` `us real estate` `canada real estate` `redfin crawler` `redfin extractor` `property prices` `property listings` `home search` `house search` `real estate api` `property data scraper` `mls data` `redfin listings` `zip code search`

### 🎁 Get $5 Free Apify Credits

New to Apify? [Sign up using this link](https://apify.com?fpr=free-credits) and get **$5 free credits** to start scraping Redfin right away! No credit card required.

### 📞 Support

For questions, feedback, or issues with this Redfin search scraper, please contact us through Apify or open an issue.

***

**Happy scraping Redfin! 🏠✨**

# Actor input Schema

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

Enter a 5-digit US zip code (e.g., 90210), Canadian postal-code area, or a Redfin URL to search properties.

## `status` (type: `string`):

Select the listing status to search for.

## `property_types` (type: `string`):

Comma-separated list of property types to filter (leave empty for all). E.g., HOUSE,CONDO

## `sort` (type: `string`):

Sort results by the selected criteria.

## `country_code` (type: `string`):

Select the country to search properties in.

## `num_homes` (type: `integer`):

Number of listings per API page (max 350). Higher values = fewer API calls.

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

Maximum number of pages to scrape (0 = all available pages up to 100). Use to limit API calls.

## `min_price` (type: `integer`):

Minimum price filter (0 = no minimum).

## `max_price` (type: `integer`):

Maximum price filter (0 = no maximum).

## `min_beds` (type: `integer`):

Minimum number of bedrooms (0 = no minimum).

## `max_beds` (type: `integer`):

Maximum number of bedrooms (0 = no maximum).

## `min_baths` (type: `number`):

Minimum number of bathrooms. Supports half-baths (e.g., 2.5). 0 = no minimum.

## `min_sqft` (type: `integer`):

Minimum square footage (0 = no minimum).

## `max_sqft` (type: `integer`):

Maximum square footage (0 = no maximum).

## `min_lot_size` (type: `integer`):

Minimum lot size in square feet (0 = no minimum).

## `max_lot_size` (type: `integer`):

Maximum lot size in square feet (0 = no maximum).

## `min_year_built` (type: `integer`):

Minimum year built (0 = no minimum).

## `max_year_built` (type: `integer`):

Maximum year built (0 = no maximum).

## `max_hoa` (type: `integer`):

Maximum monthly HOA dues (0 = no maximum).

## `has_pool` (type: `boolean`):

Only show properties with a pool.

## `has_garage` (type: `boolean`):

Only show properties with a garage.

## `is_waterfront` (type: `boolean`):

Only show waterfront properties.

## `time_on_market_days` (type: `integer`):

Filter by listings added in the last N days (0 = any time).

## `sold_within_days` (type: `integer`):

For sold listings: only show properties sold within last N days (1-1095, 0 = no filter).

## Actor input object example

```json
{
  "location": "90012",
  "status": "for_sale",
  "property_types": "",
  "sort": "redfin_recommended",
  "country_code": "US",
  "num_homes": 40,
  "maxPages": 1,
  "min_price": 0,
  "max_price": 0,
  "min_beds": 0,
  "max_beds": 0,
  "min_baths": 0,
  "min_sqft": 0,
  "max_sqft": 0,
  "min_lot_size": 0,
  "max_lot_size": 0,
  "min_year_built": 0,
  "max_year_built": 0,
  "max_hoa": 0,
  "has_pool": false,
  "has_garage": false,
  "is_waterfront": false,
  "time_on_market_days": 0,
  "sold_within_days": 0
}
```

# Actor output Schema

## `overview` (type: `string`):

View all properties with address, price, type, beds, baths, sqft, and listing URL.

## `details` (type: `string`):

View detailed property info with MLS data, coordinates, description, features, and tags.

## `agents` (type: `string`):

View listing agent and broker details for each property.

# 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": "90012",
    "status": "for_sale",
    "country_code": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("burbn/redfin-search-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": "90012",
    "status": "for_sale",
    "country_code": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("burbn/redfin-search-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": "90012",
  "status": "for_sale",
  "country_code": "US"
}' |
apify call burbn/redfin-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,burbn/redfin-search-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/GmNDQdGsfbjGdPqWb/builds/jbOMh7nZmfzHVtPck/openapi.json
