# 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:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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

Learn more: https://docs.apify.com/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.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 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("💾 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 '{
  "location": "90012",
  "status": "for_sale",
  "country_code": "US"
}' |
apify call burbn/redfin-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Redfin Search Scraper",
        "description": "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.",
        "version": "1.0",
        "x-build-id": "jbOMh7nZmfzHVtPck"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/burbn~redfin-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-burbn-redfin-search-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/burbn~redfin-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-burbn-redfin-search-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/burbn~redfin-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-burbn-redfin-search-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",
                "required": [
                    "location"
                ],
                "properties": {
                    "location": {
                        "title": "📍 Location",
                        "type": "string",
                        "description": "Enter a 5-digit US zip code (e.g., 90210), Canadian postal-code area, or a Redfin URL to search properties.",
                        "default": "90012"
                    },
                    "status": {
                        "title": "🏷️ Listing Status",
                        "enum": [
                            "for_sale",
                            "sold",
                            "for_rent",
                            "coming_soon"
                        ],
                        "type": "string",
                        "description": "Select the listing status to search for.",
                        "default": "for_sale"
                    },
                    "property_types": {
                        "title": "🏗️ Property Types",
                        "type": "string",
                        "description": "Comma-separated list of property types to filter (leave empty for all). E.g., HOUSE,CONDO",
                        "default": ""
                    },
                    "sort": {
                        "title": "📊 Sort Order",
                        "enum": [
                            "redfin_recommended",
                            "newest",
                            "oldest",
                            "price_low_high",
                            "price_high_low",
                            "beds",
                            "baths",
                            "sqft",
                            "lot_size"
                        ],
                        "type": "string",
                        "description": "Sort results by the selected criteria.",
                        "default": "redfin_recommended"
                    },
                    "country_code": {
                        "title": "🌍 Country",
                        "enum": [
                            "US",
                            "CA"
                        ],
                        "type": "string",
                        "description": "Select the country to search properties in.",
                        "default": "US"
                    },
                    "num_homes": {
                        "title": "📦 Results Per Page",
                        "minimum": 1,
                        "maximum": 350,
                        "type": "integer",
                        "description": "Number of listings per API page (max 350). Higher values = fewer API calls.",
                        "default": 40
                    },
                    "maxPages": {
                        "title": "📄 Max Pages to Scrape",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of pages to scrape (0 = all available pages up to 100). Use to limit API calls.",
                        "default": 1
                    },
                    "min_price": {
                        "title": "💰 Min Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum price filter (0 = no minimum).",
                        "default": 0
                    },
                    "max_price": {
                        "title": "💰 Max Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum price filter (0 = no maximum).",
                        "default": 0
                    },
                    "min_beds": {
                        "title": "🛏️ Min Beds",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum number of bedrooms (0 = no minimum).",
                        "default": 0
                    },
                    "max_beds": {
                        "title": "🛏️ Max Beds",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of bedrooms (0 = no maximum).",
                        "default": 0
                    },
                    "min_baths": {
                        "title": "🚿 Min Baths",
                        "minimum": 0,
                        "type": "number",
                        "description": "Minimum number of bathrooms. Supports half-baths (e.g., 2.5). 0 = no minimum.",
                        "default": 0
                    },
                    "min_sqft": {
                        "title": "📐 Min Sqft",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum square footage (0 = no minimum).",
                        "default": 0
                    },
                    "max_sqft": {
                        "title": "📐 Max Sqft",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum square footage (0 = no maximum).",
                        "default": 0
                    },
                    "min_lot_size": {
                        "title": "🌳 Min Lot Size (sqft)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum lot size in square feet (0 = no minimum).",
                        "default": 0
                    },
                    "max_lot_size": {
                        "title": "🌳 Max Lot Size (sqft)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum lot size in square feet (0 = no maximum).",
                        "default": 0
                    },
                    "min_year_built": {
                        "title": "📅 Min Year Built",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum year built (0 = no minimum).",
                        "default": 0
                    },
                    "max_year_built": {
                        "title": "📅 Max Year Built",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum year built (0 = no maximum).",
                        "default": 0
                    },
                    "max_hoa": {
                        "title": "🏢 Max HOA ($/month)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum monthly HOA dues (0 = no maximum).",
                        "default": 0
                    },
                    "has_pool": {
                        "title": "🏊 Has Pool",
                        "type": "boolean",
                        "description": "Only show properties with a pool.",
                        "default": false
                    },
                    "has_garage": {
                        "title": "🅿️ Has Garage",
                        "type": "boolean",
                        "description": "Only show properties with a garage.",
                        "default": false
                    },
                    "is_waterfront": {
                        "title": "🌊 Waterfront",
                        "type": "boolean",
                        "description": "Only show waterfront properties.",
                        "default": false
                    },
                    "time_on_market_days": {
                        "title": "📅 Time on Market (days)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Filter by listings added in the last N days (0 = any time).",
                        "default": 0
                    },
                    "sold_within_days": {
                        "title": "📅 Sold Within (days)",
                        "minimum": 0,
                        "maximum": 1095,
                        "type": "integer",
                        "description": "For sold listings: only show properties sold within last N days (1-1095, 0 = no filter).",
                        "default": 0
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
