# Redfin Property Scraper - Cheap 🇺🇸🏠 (`scrapestorm/redfin-property-scraper-cheap`) Actor

🏡 Scrape Redfin Real Estate Across the USA 🇺🇸

Extract properties from Redfin, including listing price, bedrooms, bathrooms, living area, address, listing URL, status, property type, brokerage & transaction type. Ideal for real estate analytics, lead generation, and property intelligence 🚀🔍

- **URL**: https://apify.com/scrapestorm/redfin-property-scraper-cheap.md
- **Developed by:** [Storm\_Scraper](https://apify.com/scrapestorm) (community)
- **Categories:** Social media, Lead generation, Automation
- **Stats:** 13 total users, 13 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Property Search Scraper

The Redfin Property Search Scraper is a tool designed to extract property listings data directly from Redfin search pages. Simply provide one or multiple Redfin URLs, and this scraper will retrieve:

* Property listings from Redfin search results 🏠

* Property prices 💰

* Bedrooms and bathrooms 🛏️🚿

* Property size (sqft) 📏

* Property addresses 📍

* Listing URLs 🌐

* Listing status information 🔖

* Listing agency details 🏢

* Property type information 🏘️

* And more additional real estate information 🔍

### Description 💪

Its strength 💪 lies in its ability to scrape Redfin property listings directly from search result pages while automatically handling pagination and listing discovery.

The scraper supports multiple Redfin URL types, including:

* City pages 🏙️
* ZIP code pages 📮
* County pages 🗺️
* Neighborhood pages 🏘️
* State pages 🇺🇸

You can scrape:

* For Sale properties 🏠
* Rental properties 🏢
* Sold properties 📊

making it a powerful solution for real estate market research and property intelligence.

### How to Use Redfin Property Search Scraper? 🔍

Using the Redfin Property Search Scraper is straightforward! It's designed to be user-friendly and accessible for all skill levels. Here's how you can use it:

1. **Sign up** for an account on **Apify**.

2. Open the **Redfin Property Search Scraper** on the Apify platform.

3. Input one or multiple Redfin URLs.

4. Select the listing type you want to scrape.

5. Define the maximum number of properties per URL.

6. Click the **"Start"** button and wait for the scraping process to complete.

7. Download the extracted data in various formats:

   * JSON
   * CSV
   * XML
   * Excel
   * HTML

### Pricing for Redfin Property Search Scraper 💰

This scraper operates on a **pay-per-result** basis. You only pay for successfully extracted property listings.

* **Price:** $2.99 per 1,000 results.

### Related Actors

If you're interested in other real estate, social media, or lead generation Actors:

* Facebook Followers & Following Scraper 📊👥
* Facebook Comments Scraper 💬
* YouTube Scraper 🎥
* YouTube Channel Scraper 📺
* YouTube Shorts Scraper 📺
* Zillow (Find a Home Improvement Agent) 🛠️
* YouTube Transcript Video Scraper 📝
* YouTube Playlist Scraper 🎵

---

### Why scrape Redfin property listings?

🏠 Monitor real estate markets across cities, states, and neighborhoods.

💰 Identify investment opportunities and pricing trends.

📊 Analyze housing supply and demand.

🏢 Track rental inventory and rental market activity.

📈 Generate real estate intelligence datasets.

🤖 Build AI and machine learning datasets for housing analytics.

### Input for Redfin Property Search Scraper

The scraper accepts one or multiple Redfin URLs as input. Here's how to structure the input JSON:

````

{
"urls": \[
"https://www.redfin.com/city/11203/CA/Los-Angeles",
"https://www.redfin.com/state/Texas"
],
"listing\_type": "for\_sale",
"max\_items\_per\_url": 100
}

```

Supported listing types:

* for_sale
* for_rent
* sold_3mo
* sold_6mo
* sold_1yr

### Output for Redfin Property Search Scraper 📊

```

{
"price": "$239000",
"beds": "1 beds",
"baths": "1.0 baths",
"sqft": "750",
"address": "11813 Runnymede St #27, North Hollywood, CA 91605",
"listingUrl": "https://www.redfin.com/CA/North-Hollywood/11813-Runnymede-St-91605/unit-27/home/193153767",
"badges": "Active",
"keyFacts": "Condo/Co-op",
"listingAgency": "N/A",
"listingType": "for\_sale",
"sourceUrl": "https://www.redfin.com/city/11203/CA/Los-Angeles"
}

````

The results may differ from what you see when browsing Redfin due to location, personalization, availability, and listing updates.

# Actor input Schema

## `urls` (type: `array`):

List of Redfin city, zipcode, county, or neighborhood base URLs (without pagination or listing-type suffixes — those are applied automatically based on 'Listing Type' below).

Examples:
• https://www.redfin.com/city/11203/CA/Los-Angeles
• https://www.redfin.com/zipcode/90017
## `listing_type` (type: `string`):

Determines which URL suffix is appended to each base URL:
• For Sale → no suffix
• For Rent → /rentals (always uses the browser path, not the fast API)
• Sold (3/6/12 months) → /filter/include=sold-Xmo|1yr
## `max_items_per_url` (type: `integer`):

Maximum number of listings to extract per URL. For 'For Sale' and 'Sold' types, the actor first tries a fast direct API call (capped at 350 listings per URL); if that's blocked or unavailable it automatically falls back to slower browser-based scraping, where pagination stops earlier if 2 consecutive pages return no new results.
## `proxyConfiguration` (type: `object`):

Recommended: use residential proxies to reduce detection risk.

## Actor input object example

```json
{
  "urls": [
    "https://www.redfin.com/city/11203/CA/Los-Angeles"
  ],
  "listing_type": "for_sale",
  "max_items_per_url": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
````

# 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 = {
    "urls": [
        "https://www.redfin.com/city/11203/CA/Los-Angeles"
    ],
    "listing_type": "for_sale",
    "max_items_per_url": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapestorm/redfin-property-scraper-cheap").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 = {
    "urls": ["https://www.redfin.com/city/11203/CA/Los-Angeles"],
    "listing_type": "for_sale",
    "max_items_per_url": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.redfin.com/city/11203/CA/Los-Angeles"
  ],
  "listing_type": "for_sale",
  "max_items_per_url": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scrapestorm/redfin-property-scraper-cheap --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapestorm/redfin-property-scraper-cheap",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Redfin Property Scraper - Cheap 🇺🇸🏠",
        "description": "🏡 Scrape Redfin Real Estate Across the USA 🇺🇸\n\nExtract properties from Redfin, including listing price, bedrooms, bathrooms, living area, address, listing URL, status, property type, brokerage & transaction type. Ideal for real estate analytics, lead generation, and property intelligence 🚀🔍",
        "version": "0.0",
        "x-build-id": "ZsDlDOWvapgdObfvq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapestorm~redfin-property-scraper-cheap/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapestorm-redfin-property-scraper-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapestorm~redfin-property-scraper-cheap/runs": {
            "post": {
                "operationId": "runs-sync-scrapestorm-redfin-property-scraper-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapestorm~redfin-property-scraper-cheap/run-sync": {
            "post": {
                "operationId": "run-sync-scrapestorm-redfin-property-scraper-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "urls"
                ],
                "properties": {
                    "urls": {
                        "title": "Redfin City/Search URLs 🔗",
                        "type": "array",
                        "description": "List of Redfin city, zipcode, county, or neighborhood base URLs (without pagination or listing-type suffixes — those are applied automatically based on 'Listing Type' below).\n\nExamples:\n• https://www.redfin.com/city/11203/CA/Los-Angeles\n• https://www.redfin.com/zipcode/90017",
                        "default": [
                            "https://www.redfin.com/city/11203/CA/Los-Angeles"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "listing_type": {
                        "title": "Listing Type 🏠",
                        "enum": [
                            "for_sale",
                            "for_rent",
                            "sold_3mo",
                            "sold_6mo",
                            "sold_1yr"
                        ],
                        "type": "string",
                        "description": "Determines which URL suffix is appended to each base URL:\n• For Sale → no suffix\n• For Rent → /rentals (always uses the browser path, not the fast API)\n• Sold (3/6/12 months) → /filter/include=sold-Xmo|1yr",
                        "default": "for_sale"
                    },
                    "max_items_per_url": {
                        "title": "Maximum Listings to Scrape per URL",
                        "type": "integer",
                        "description": "Maximum number of listings to extract per URL. For 'For Sale' and 'Sold' types, the actor first tries a fast direct API call (capped at 350 listings per URL); if that's blocked or unavailable it automatically falls back to slower browser-based scraping, where pagination stops earlier if 2 consecutive pages return no new results.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Recommended: use residential proxies to reduce detection risk.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
