# Redfin Scraper — Real Estate Listings (`hipersoft/redfin-scraper`) Actor

Scrape Redfin for-sale real estate listings by location: price, beds, baths, square footage, lot size, property type, address, coordinates, days on market and listing URL. No key.

- **URL**: https://apify.com/hipersoft/redfin-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.002 / property scraped

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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 Scraper — Real Estate Listings, Price, Beds/Baths, Sqft & Geo

Scrape **Redfin** for-sale real estate listings for any location — **price, beds, baths, square footage, lot size, property type, address, coordinates, days on market and the listing URL** — into clean JSON, CSV or Excel. Just type a city, ZIP or "City, ST" and get back structured records ready for spreadsheets, maps or analytics. No account, no API key. Fast and reliable.

![Redfin Scraper input — locations, max homes and price filters in the Apify Console](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/redfin-scraper-input.png?v=2)

Great for **real estate analysis, investing, agent lead lists, market research and mapping**.

### What does Redfin Scraper do?

It geocodes each location you pass and returns one clean record per for-sale listing — price, beds, baths, size, property type, address, coordinates, status and days on market, plus a direct link and photo. Pass many locations and export the whole inventory in one run.

### What you get

![Redfin Scraper output example — one structured JSON row per for-sale listing](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/redfin-scraper-output.png?v=2)

- 📍 **Search by place** — pass any number of `locations` like "Austin, TX", "Miami, FL" or "90210"; each is geocoded to a search area automatically.
- 🏠 **Full property detail** — every home carries `price`, `beds`, `baths`, `sqFt`, `pricePerSqFt`, `lotSize`, `yearBuilt`, `propertyType`, `stories` and `hoa`.
- 🎚️ **Exact filters** — `minPrice`, `maxPrice` and `minBeds` so results match precisely.
- 🗺️ **Map-ready geo** — each record includes `latitude` and `longitude` plus full `address`, `city`, `state` and `zip`.
- ⏱️ **Market timing** — capture `daysOnMarket`, listing `status`, `mlsId` and a direct `url` to the Redfin page.
- 📸 **Photos included** — a `photo` URL comes with every listing.

#### Output schema

| Field | Type | Description |
|-------|------|-------------|
| `location` | string | The search location this listing was found for. |
| `mlsId` | string | MLS identifier of the listing. |
| `price` | integer | List price in USD. |
| `beds` | integer | Number of bedrooms. |
| `baths` | number | Number of bathrooms. |
| `sqFt` | integer | Interior area in square feet. |
| `pricePerSqFt` | integer | Price per square foot in USD. |
| `lotSize` | integer | Lot size in square feet. |
| `yearBuilt` | integer | Year the home was built. |
| `propertyType` | string | Property type (e.g. Single Family, Condo). |
| `stories` | integer | Number of stories. |
| `hoa` | integer | Monthly HOA fee in USD. |
| `address` | string | Street address of the home. |
| `unit` | string | Unit or apartment number, if any. |
| `city` | string | City. |
| `state` | string | Two-letter state code. |
| `zip` | string | ZIP code. |
| `latitude` | number | Latitude coordinate. |
| `longitude` | number | Longitude coordinate. |
| `status` | string | Listing status (e.g. Active). |
| `daysOnMarket` | integer | Days the listing has been on market. |
| `listingId` | integer | Redfin listing identifier. |
| `url` | string (URL) | Direct link to the Redfin listing page. |
| `photo` | string (URL) | URL of the listing's main photo. |

### Use cases

- **Market inventory** — pull an up-to-date list of homes for sale in target markets.
- **Trend analysis** — analyze price-per-sqft, beds/baths and days-on-market by area.
- **Mapping** — plot listings using the built-in coordinates.
- **Investor comps** — build comparable-sales and valuation datasets.
- **Agent lead lists** — feed listings into agent and outreach workflows.
- **Research** — track supply and pricing across cities over time.

### How to scrape Redfin data

1. Add the **Redfin Scraper** to your Apify account.
2. Add one or more places to `locations` — a city, "City, ST" or ZIP.
3. Set `maxHomesPerLocation` and optional `minPrice`, `maxPrice`, `minBeds` filters.
4. Click **Run**.
5. Export the results as JSON, CSV or Excel, or pull them via the Apify API.

### Input

```json
{
  "locations": ["Austin, TX", "Miami, FL"],
  "maxHomesPerLocation": 300,
  "minPrice": 0,
  "maxPrice": 0,
  "minBeds": 0
}
```

| Field | Description |
| --- | --- |
| `locations` | Places to search — city, "City, ST" or ZIP; each is geocoded. |
| `maxHomesPerLocation` | Max listings per location (1–350, default 300). |
| `minPrice` / `maxPrice` | Price bounds in USD (0 = no bound). |
| `minBeds` | Minimum bedrooms. |
| `proxyConfiguration` | Optional proxy settings; works without one, add for high volume. |

### Output

```json
{
  "location": "Austin, TX",
  "mlsId": "1234567",
  "price": 625000,
  "beds": 3,
  "baths": 2,
  "sqFt": 1840,
  "pricePerSqFt": 340,
  "lotSize": 6500,
  "yearBuilt": 2015,
  "propertyType": "Single Family",
  "stories": 2,
  "hoa": 45,
  "address": "1234 Maple St",
  "unit": null,
  "city": "Austin",
  "state": "TX",
  "zip": "78704",
  "latitude": 30.245,
  "longitude": -97.77,
  "status": "Active",
  "daysOnMarket": 12,
  "listingId": "987654",
  "url": "https://www.redfin.com/TX/Austin/1234-Maple-St-78704/home/987654",
  "photo": "https://ssl.cdn-redfin.com/photo/..."
}
```

### Need more property data?

- [Crexi Scraper](https://apify.com/hipersoft/crexi-scraper) — commercial real estate listings
- [Domain Inspector](https://apify.com/hipersoft/domain-inspector) — domain & DNS intelligence
- [Contact Details Scraper](https://apify.com/hipersoft/contact-scraper) — emails, phones and socials

### FAQ

**Do I need a Redfin account?**
No. This reads publicly available for-sale listing data — no account, no API key.

**How many homes can I scrape?**
Up to about 350 per location; set `maxHomesPerLocation` to control the run.

**Can I filter by price or beds?**
Yes — use `minPrice`, `maxPrice` and `minBeds` so results match precisely.

**Do listings include coordinates?**
Yes — each record carries `latitude` and `longitude` plus full address, city, state and ZIP.

**What export formats are supported?**
JSON, CSV, Excel and XML, plus the Apify API.

**Can I integrate it with other tools?**
The Redfin Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JavaScript/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**How does billing work?**
You pay only per item you get — cheap per listing, cheapest in its class.

### Related Actors

- [Crexi Scraper](https://apify.com/hipersoft/crexi-scraper) — commercial real estate listings
- [Domain Inspector](https://apify.com/hipersoft/domain-inspector) — domain & DNS intelligence
- [Contact Details Scraper](https://apify.com/hipersoft/contact-scraper) — emails, phones and socials

### Notes

Original clean-room implementation. Reads only publicly available Redfin for-sale listing data — no login-walled content or private accounts. You are responsible for how you use the data. Not affiliated with, authorized or endorsed by Redfin; "Redfin" and related marks belong to their respective owners.

# Actor input Schema

## `locations` (type: `array`):

Places to search, e.g. "Austin, TX", "Miami, FL", "90210". Each is geocoded to a search area.

## `maxHomesPerLocation` (type: `integer`):

Maximum listings to collect per location (Redfin returns up to ~350 per area).

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

Only include listings at or above this price.

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

Only include listings at or below this price (0 = no cap).

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

Only include listings with at least this many bedrooms.

## `proxyConfiguration` (type: `object`):

Optional proxy. Redfin works without one; add a proxy for high volume.

## Actor input object example

```json
{
  "locations": [
    "Seattle, WA",
    "Miami, FL"
  ],
  "maxHomesPerLocation": 300,
  "minPrice": 0,
  "maxPrice": 0,
  "minBeds": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

The scraped results as dataset items.

# 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 = {
    "locations": [
        "Austin, TX"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/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 = { "locations": ["Austin, TX"] }

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/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 '{
  "locations": [
    "Austin, TX"
  ]
}' |
apify call hipersoft/redfin-scraper --silent --output-dataset

```

## MCP server setup

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