# Redfin Property Detail Scraper — Redfin Estimate, Walk & Flood (`sian.agency/redfin-property-detail-scraper`) Actor

Look up any US home on Redfin by URL, address, or property ID and get one rich dossier per property: the numeric Redfin Estimate, walk/bike/transit scores, FEMA flood risk, schools, price and tax history, amenities, and listing-agent contact. Bulk-ready Redfin data API replacement.

- **URL**: https://apify.com/sian.agency/redfin-property-detail-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.50 / 1,000 redfin detail extracteds

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/platform/actors/running/actors-in-store#pay-per-event

## 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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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 Detail Scraper — Redfin Estimate, Walk Score & Flood Risk 🚀

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Redfin Property Scraper](https://img.shields.io/badge/Store-Redfin%20Property%20Scraper-A02021)](https://apify.com/sian.agency/redfin-property-scraper?fpr=sian) [![Redfin Market Analytics](https://img.shields.io/badge/Store-Redfin%20Market%20Analytics-A02021)](https://apify.com/sian.agency/redfin-market-analytics-scraper?fpr=sian) [![Zillow Property Scraper](https://img.shields.io/badge/Store-Zillow%20Property%20Scraper-1F4E79)](https://apify.com/sian.agency/zillow-property-scraper?fpr=sian)

#### 💎 Get the numeric Redfin Estimate — plus walk/bike/transit scores, FEMA flood risk, schools, price history, and agent contact — in ONE call per home
##### Built for PropTech teams, investors, appraisers, and lead-gen agencies who need clean Redfin data at scale

---

### 📋 Overview

**Point it at any US home on Redfin and get a full dossier back** — paste a Redfin URL, a street address, or a `propertyId:listingId` pair and receive one rich, structured row per property. No add-on charges, no per-address surcharges: everything the home has is bundled in a single result.

**Why teams choose this Redfin scraper:**
- ✅ **The numeric Redfin Estimate (AVM)**: pull `predictedValue` for every sold or off-market home — the exact figure Redfin shows, as structured data ready for CMAs, appeals, and valuation models.
- ⚡ **One call, everything included**: walk/bike/transit scores, FEMA flood risk with insurance ranges, schools with GreatSchools ratings, full price history, amenities, and listing-agent contact — all in the base result.
- 🎯 **3 input modes**: Redfin URL, full street address, or `propertyId:listingId` pair — mix and match in one run, duplicates removed automatically.
- 💰 **Pay only for homes found**: not-found lookups are never billed, and there are no hidden enrichment fees — competitors sell the estimate, walk score, and contacts as separate add-ons.
- 💎 **Bulk-ready Redfin API replacement**: clean JSON dossiers straight into BigQuery, Snowflake, or pandas.
- ✨ **Search → detail pipeline**: feed `propertyId:listingId` pairs straight from our [Redfin Property Scraper](https://apify.com/sian.agency/redfin-property-scraper?fpr=sian).

---

### ✨ Features

- 💎 **Redfin Estimate export** — numeric AVM (`predictedValue`) for sold and off-market homes, with an honest `isAvailable` flag (Redfin hides the estimate on actively-listed homes).
- 🏡 **Full property dossier** — price, beds/baths, square footage, lot size, year built, property type, APN, and MLS status.
- 🚶 **Walk / Bike / Transit scores** — with descriptions and the Walk Score link.
- 🌊 **FEMA flood risk** — flood factor, FEMA zones, environmental risk, and low/high annual insurance estimates.
- 🏫 **Schools** — assigned schools with GreatSchools ratings, grade ranges, distance, and student counts.
- 📈 **Price history** — every listing and sale event with price, date, and source.
- 🏘 **Amenities** — full amenity breakdown grouped by section.
- 🧑‍💼 **Listing-agent contact** — agent name, brokerage, and phone number for actively listed homes.
- 📷 **Photos** — up to 30 high-resolution photo URLs per home, plus 3D scan links when available.
- 🧭 **3 lookup modes** — URL, address, or ID pair, with automatic cross-mode deduplication.

---

### 🎬 Quick Start

Paste one or more Redfin URLs, addresses, or `propertyId:listingId` pairs, click Start, and download your dossiers as JSON, CSV, or Excel.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~redfin-property-detail-scraper/runs?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"propertyUrls": ["https://www.redfin.com/TX/Austin/1812-Village-Oak-Ct-78704/home/31749086"]}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Add your properties

Paste Redfin home URLs, full street addresses, or `propertyId:listingId` pairs — one per line, mixed freely.

#### Step 2: Click Start

The actor resolves each home to a full Redfin dossier. Homes that can't be found are skipped and never billed.

#### Step 3: Download your data

Export the dataset as JSON, CSV, or Excel, or pull it via the API.

**That's it! In under a minute, you'll have:**

- The numeric Redfin Estimate for every sold / off-market home
- Walk, flood, school, price-history, and amenity data per property
- Listing-agent contact for actively listed homes

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `propertyUrls` | array | No | Redfin home URLs (`https://www.redfin.com/.../home/<id>`) |
| `redfinIds` | array | No | `propertyId:listingId` pairs, e.g. `185101370:216182866` |
| `addresses` | array | No | Full US street addresses, e.g. `10411 Turnbull Loop, Austin, TX 78717` |

Provide at least one. Mix all three — duplicates are removed automatically. A bare run (no input) returns a demo dossier so you can preview the output shape.

**Example:**

```json
{
  "propertyUrls": [
    "https://www.redfin.com/TX/Austin/1812-Village-Oak-Ct-78704/home/31749086"
  ],
  "addresses": [
    "10411 Turnbull Loop, Austin, TX 78717"
  ],
  "redfinIds": [
    "185101370:216182866"
  ]
}
```

***

### 📤 Output

Results are saved to the Apify dataset — one row per home. Key fields:

| Field | Type | Description |
|-------|------|-------------|
| `propertyId` / `listingId` | string | Redfin internal IDs |
| `redfinUrl` | string | Canonical Redfin home URL |
| `redfinEstimate` | object | `predictedValue` (Redfin Estimate, USD), `isAvailable`, `lastSoldDate` |
| `pricing` | object | `price`, `pricePerSqft`, `hoaDues`, `propertyTaxRate` |
| `specs` | object | beds, baths, sqft, lotSize, yearBuilt, propertyType, APN |
| `walkScores` | object | walk / bike / transit scores |
| `floodRisk` | object | FEMA zones, flood factor, insurance estimates |
| `schools` | array | assigned schools with GreatSchools ratings |
| `priceHistory` | array | listing & sale events |
| `listingAgent` | object | agent name, brokerage, phone |
| `media` | object | photo count + up to 30 photo URLs |
| `amenityDetails` | array | full amenity breakdown |

**Example:**

```json
{
  "propertyId": "31749086",
  "listingId": "214163218",
  "redfinUrl": "https://www.redfin.com/TX/Austin/3907-Stonecroft-Dr-78749/home/31749086",
  "mlsStatus": "Closed",
  "address": { "full": "3907 Stonecroft Dr, Austin, TX 78749" },
  "pricing": { "price": 599000, "pricePerSqft": 347 },
  "specs": { "beds": 3, "baths": 2, "sqft": 1728, "yearBuilt": 1983, "propertyType": "Single Family Residential", "apn": "326621" },
  "redfinEstimate": { "isAvailable": true, "predictedValue": 564938 },
  "walkScores": { "walkScore": 34, "bikeScore": 55, "transitScore": 32 },
  "floodRisk": { "floodFactor": 1, "femaZones": ["X (unshaded)"], "lowInsurancePrice": 507, "highInsurancePrice": 1088 },
  "listingAgent": { "name": "Adam Zell", "brokerName": "Compass RE Texas, LLC" }
}
```

***

### 💼 Use Cases & Examples

#### 1. Bulk Redfin Estimate export for valuation models

**Data teams building AVM benchmarks and CMAs.**
**Input:** Hundreds of Redfin URLs or addresses.
**Output:** The numeric Redfin Estimate (`predictedValue`) per sold / off-market home.
**Use:** Train or validate pricing models against Redfin's own estimate at scale.

#### 2. Investor underwriting dossiers

**Real-estate investors screening deals.**
**Input:** A list of target addresses.
**Output:** Price history, tax rate, HOA dues, beds/baths/sqft, lot size, year built, plus flood risk and schools.
**Use:** Underwrite properties in minutes instead of tab-hopping across Redfin.

#### 3. Redfin API replacement for PropTech ETL

**Engineering teams feeding a data pipeline.**
**Input:** URLs, addresses, or `propertyId:listingId` pairs from your database.
**Output:** Clean JSON dossiers ready for BigQuery, Snowflake, or pandas.
**Use:** Drop-in Redfin data source without maintaining scrapers.

#### 4. Flood & insurance risk screening

**Lenders and portfolio managers assessing risk.**
**Input:** A portfolio of addresses.
**Output:** FEMA flood zones, flood factor, and low/high annual insurance estimates per home.
**Use:** Flag high-risk properties before lending or acquisition.

#### 5. Listing-agent lead enrichment

**Agents and prospecting teams building contact lists.**
**Input:** URLs or addresses of actively listed homes.
**Output:** Listing agent name, brokerage, and phone number.
**Use:** Power outreach and referral workflows with fresh contacts.

#### 6. Search → detail automation

**Anyone who already runs a Redfin search.**
**Input:** `propertyId:listingId` pairs emitted by the Redfin Property Scraper.
**Output:** Full dossiers for every search result.
**Use:** A clean two-step pipeline: search a market, then pull complete detail on every hit.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/redfin-property-detail-scraper').call({
  propertyUrls: ['https://www.redfin.com/TX/Austin/1812-Village-Oak-Ct-78704/home/31749086']
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].redfinEstimate);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/redfin-property-detail-scraper').call(
    run_input={'addresses': ['10411 Turnbull Loop, Austin, TX 78717']}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item['redfinEstimate'])
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~redfin-property-detail-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"redfinIds": ["185101370:216182866"]}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle JSON dossiers
4. **Action**: Save to a warehouse, notify, or enrich a CRM

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **5 properties** per run — full feature access, same dossier quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** properties per run
- Faster processing, no delays
- Pay-per-result: only charged for homes successfully returned

💰 **Everything bundled, nothing up-sold** — the Redfin Estimate, walk score, flood risk, and agent contacts ship in the base result, not as extra-cost add-ons.

🔗 [View current pricing](https://apify.com/sian.agency/redfin-property-detail-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many properties can I process?**
A: FREE tier: 5 per run. PAID tier: unlimited.

**Q: Why is the Redfin Estimate missing on some homes?**
A: Redfin hides its estimate on actively-listed homes and shows the list price instead. The estimate is returned for sold and off-market homes; the `redfinEstimate.isAvailable` flag tells you which.

**Q: What's the difference between a URL, an ID pair, and an address?**
A: A URL or address resolves the home directly. Redfin needs BOTH a property ID and a listing ID to resolve by ID, so ID-pair input is `propertyId:listingId` — exactly what our Redfin Property Scraper emits.

**Q: What output formats are available?**
A: JSON, CSV, and Excel — export directly from the Apify dataset.

**Q: Am I charged for homes that aren't found?**
A: No. Not-found lookups are skipped and never billed.

**Q: Is this legal?**
A: Yes — we only extract publicly available data. See the legal section below.

***

### 🐛 Troubleshooting

**"Property not found" for a URL I can see on Redfin**

- Make sure it's a home-details URL (`redfin.com/.../home/<id>`), not a search or city page.
- Freshly delisted homes can take time to resolve.

**The Redfin Estimate is empty**

- The home is actively listed — Redfin hides its estimate on active listings. Try a sold or off-market home, or check `redfinEstimate.isAvailable`.

**My ID pair returns nothing**

- Both IDs are required. Use `propertyId:listingId` (e.g. `185101370:216182866`). If you only have the number from a home URL, use the URL field instead.

**No agent phone on some rows**

- Agent contact populates on actively listed homes only; sold and off-market homes won't have it.

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### ⚠️ Trademark Disclaimer

Redfin® is a registered trademark of Redfin Corporation. This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Redfin Corporation. "Redfin", "Redfin Estimate", and related marks are the property of their respective owners and are used here only to describe the public data this tool helps you access. Use the data responsibly and in compliance with applicable laws and terms.

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's Issues tab
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `propertyUrls` (type: `array`):

🏡 **LOOKUP BY URL:** Paste Redfin home-details links, one per line.

📋 **How to get a URL:**

1. Open any home on redfin.com
2. Copy the browser address — it looks like `https://www.redfin.com/TX/Austin/6702-Fireoak-Dr-78759/home/31327561`
3. Paste it here (Bulk edit accepts one URL per line)

✅ **SUPPORTED:** `redfin.com/.../home/<id>` property pages
🚫 **NOT supported:** search/city pages like `redfin.com/city/...` — use our search-focused actors for those

💡 **TIP:** Mix and match with ID pairs and addresses below — duplicates are removed automatically.

⚡ **TIER LIMITS:** FREE runs process up to 5 properties total; paid Apify plans are unlimited.

## `redfinIds` (type: `array`):

🔢 **LOOKUP BY ID PAIR:** Redfin needs BOTH the property ID and the listing ID to resolve a home, supplied as `propertyId:listingId`.

📋 **Example:** `185101370:216182866`

💡 **TIP:** Our [Redfin Property Scraper](https://apify.com/sian.agency/redfin-property-scraper?fpr=sian) emits `propertyId` and `listingId` on every search row — feed those pairs straight in for a clean search → detail pipeline. If you only have the numeric ID from a home URL, use the URL field instead (a single ID alone will not resolve).

⚡ **TIER LIMITS:** FREE runs process up to 5 properties total; paid Apify plans are unlimited.

## `addresses` (type: `array`):

📍 **LOOKUP BY ADDRESS:** Full US street addresses, one per line.

📋 **Format:** `street, city, state ZIP` — e.g. `10411 Turnbull Loop, Austin, TX 78717`.

💡 **TIP:** Perfect for enriching CSV lead lists that only contain addresses — the actor resolves each address to the matching Redfin home automatically.

⚡ **TIER LIMITS:** FREE runs process up to 5 properties total; paid Apify plans are unlimited.

## Actor input object example

```json
{
  "propertyUrls": [
    "https://www.redfin.com/TX/Austin/6702-Fireoak-Dr-78759/home/31327561"
  ],
  "redfinIds": [
    "185101370:216182866"
  ],
  "addresses": [
    "10411 Turnbull Loop, Austin, TX 78717"
  ]
}
```

# Actor output Schema

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

One row per property: Redfin Estimate, price, beds/baths/sqft, walk/bike/transit scores, FEMA flood risk, schools, price history, amenities, and listing-agent contact

## `scrapingSummary` (type: `string`):

HTML summary showing extracted dossiers, Redfin Estimates surfaced, not-found lookups, and failures

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/redfin-property-detail-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/redfin-property-detail-scraper").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 '{}' |
apify call sian.agency/redfin-property-detail-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Redfin Property Detail Scraper — Redfin Estimate, Walk & Flood",
        "description": "Look up any US home on Redfin by URL, address, or property ID and get one rich dossier per property: the numeric Redfin Estimate, walk/bike/transit scores, FEMA flood risk, schools, price and tax history, amenities, and listing-agent contact. Bulk-ready Redfin data API replacement.",
        "version": "1.0",
        "x-build-id": "s1esTgpgDtQKumvYX"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~redfin-property-detail-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-redfin-property-detail-scraper",
                "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/sian.agency~redfin-property-detail-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-redfin-property-detail-scraper",
                "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/sian.agency~redfin-property-detail-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-redfin-property-detail-scraper",
                "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",
                "properties": {
                    "propertyUrls": {
                        "title": "🏡 Redfin Property URLs",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "🏡 **LOOKUP BY URL:** Paste Redfin home-details links, one per line.\n\n📋 **How to get a URL:**\n1. Open any home on redfin.com\n2. Copy the browser address — it looks like `https://www.redfin.com/TX/Austin/6702-Fireoak-Dr-78759/home/31327561`\n3. Paste it here (Bulk edit accepts one URL per line)\n\n✅ **SUPPORTED:** `redfin.com/.../home/<id>` property pages\n🚫 **NOT supported:** search/city pages like `redfin.com/city/...` — use our search-focused actors for those\n\n💡 **TIP:** Mix and match with ID pairs and addresses below — duplicates are removed automatically.\n\n⚡ **TIER LIMITS:** FREE runs process up to 5 properties total; paid Apify plans are unlimited.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "redfinIds": {
                        "title": "🔢 Redfin ID pairs (propertyId:listingId)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "🔢 **LOOKUP BY ID PAIR:** Redfin needs BOTH the property ID and the listing ID to resolve a home, supplied as `propertyId:listingId`.\n\n📋 **Example:** `185101370:216182866`\n\n💡 **TIP:** Our [Redfin Property Scraper](https://apify.com/sian.agency/redfin-property-scraper?fpr=sian) emits `propertyId` and `listingId` on every search row — feed those pairs straight in for a clean search → detail pipeline. If you only have the numeric ID from a home URL, use the URL field instead (a single ID alone will not resolve).\n\n⚡ **TIER LIMITS:** FREE runs process up to 5 properties total; paid Apify plans are unlimited.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "addresses": {
                        "title": "📍 Street Addresses",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "📍 **LOOKUP BY ADDRESS:** Full US street addresses, one per line.\n\n📋 **Format:** `street, city, state ZIP` — e.g. `10411 Turnbull Loop, Austin, TX 78717`.\n\n💡 **TIP:** Perfect for enriching CSV lead lists that only contain addresses — the actor resolves each address to the matching Redfin home automatically.\n\n⚡ **TIER LIMITS:** FREE runs process up to 5 properties total; paid Apify plans are unlimited.",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
