# FSBO Scraper (`solidcode/fsbo-scraper`) Actor

\[💰 $5.0 / 1K] Extract For Sale By Owner property listings from FSBO.com. Get direct seller contact info (name + phone), price, address, beds/baths, square footage, photos, and full property description. Search by state, city, ZIP code, or paste FSBO.com URLs.

- **URL**: https://apify.com/solidcode/fsbo-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Real estate, Lead generation, Automation
- **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.

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

## FSBO Scraper

Pull For Sale By Owner listings from FSBO.com at scale — direct seller names, prices, addresses, photos, beds/baths/sqft, lat/lng, full descriptions, HOA fees, year built, and seller phone numbers extracted from listing text. Covers all 50 US states plus DC across roughly 11,600 active owner-listed properties. Built for real estate investors sourcing off-MLS deals, lead-generation agencies hunting direct-owner contacts, and market analysts tracking FSBO inventory shifts without paying for MLS subscriptions or building their own scraper.

### Why This Scraper?

- **3x cheaper than the leading competitor** — flat $5.00 per 1,000 results vs. $15.00 elsewhere on the Apify Store, with at least as many fields per row.
- **All 50 US states plus DC, ~11,600 active listings** — Florida alone carries ~1,378 properties across ~28 pages, Texas and California at similar scale.
- **Multi-location runs in one invocation** — mix state names ("Florida"), 2-letter codes ("FL"), city+state ("Austin, TX"), and 5-digit ZIPs ("33629") in a single `searchLocations` array.
- **Direct seller contact on every claimed listing** — owner's name in `sellerName` on the ~5% of listings posted directly by sellers (a field MLS-aggregator scrapers never carry), plus a best-effort `sellerPhone` extracted from the listing description text.
- **Latitude and longitude on every row** — stitched into the output so you can map results, geofence by drive-time, or compute distance-to-feature in your own pipeline.
- **Seven property type filters** — Single Family, Condo, Townhouse, Multi-Family, Mobile / Manufactured Home, Land / Lot, or Other (mixed-use).
- **Derived pricePerSqft and daysOnMarket on every listing** — pre-computed so your downstream queries skip the math.
- **Inline photo arrays** — typically 10 absolute photo URLs per listing, up to ~50 on premium-plan listings, with sort order and primary-photo flags preserved.
- **Friendly zero-result messaging** — runs that return no matches name the locations and filters tried in the status message, so you can copy-paste an alternative without digging through logs.

### Use Cases

**Investor Sourcing & Off-MLS Deal Flow**
- Surface owner-listed properties below MLS comps for direct-to-seller offers
- Track new FSBO inventory daily in your target ZIPs and counties
- Build a buy-box pipeline filtered by min beds, max price, and property type

**Lead Generation for Real Estate Services**
- Build direct-owner contact lists for listing-agent recruiting (sellers who tried FSBO and may convert)
- Source leads for title, escrow, photography, staging, and home-inspection services
- Target investor-friendly markets with bulk seller name + phone exports

**Market Research & FSBO Inventory Tracking**
- Monitor FSBO market share by state, city, or ZIP over time
- Detect price-per-square-foot trends in owner-listed vs. MLS-listed segments
- Quantify days-on-market for FSBO inventory in growth markets

**Comparable-Property & Valuation Analysis**
- Pull comparable sqft/bed/bath/year-built sets for CMA reports
- Feed FSBO asking prices into iBuyer and AVM training datasets
- Layer FSBO inventory onto MLS heatmaps for full-market coverage

**Real-Estate-Tech Data Ingestion**
- Power FSBO-specific listing aggregators with a fresh feed
- Enrich CRM records with FSBO listing activity by owner name
- Build alerting on new FSBO listings in saved geographies

### Getting Started

#### Simple State Sweep

The simplest possible run — pull the first 100 active FSBO listings in Florida:

```json
{
    "searchLocations": ["Florida"],
    "maxResults": 100
}
````

#### Multi-Location with Filters

Mix a state, a city, and a ZIP in one run, narrowed to single-family homes between $250k and $750k with at least 3 beds:

```json
{
    "searchLocations": ["TX", "Austin, TX", "33629"],
    "propertyType": "single_family",
    "minPrice": 250000,
    "maxPrice": 750000,
    "minBeds": 3,
    "maxResults": 500
}
```

#### Cheap Fast Card-Level Run

Skip the per-listing detail fetch when you only need card-level data (price, address, beds/baths/sqft, primary photo, seller name on claimed listings):

```json
{
    "searchLocations": ["California"],
    "includePropertyDetails": false,
    "maxResults": 1000
}
```

#### Paste a URL or Sweep Everything

Paste FSBO.com search or listing URLs directly, or set `maxResults` to 0 to sweep an entire small-inventory state:

```json
{
    "startUrls": [
        "https://fsbo.com/buy/fl/miami",
        "https://fsbo.com/listing/example-slug-123"
    ],
    "searchLocations": ["Vermont"],
    "maxResults": 0
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `[]` | Paste FSBO.com search or listing URLs directly. Search filters in the URL (state, city, price, beds, type) are honored as-is. Mix freely with `searchLocations`. |
| `searchLocations` | string\[] | `["Florida"]` | Search by US state name ("Florida"), 2-letter code ("FL"), city + state ("Austin, TX"), or 5-digit ZIP ("78701"). Add multiple entries to sweep several markets in one run. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `propertyType` | select | `All Types` | All Types, Single Family Home, Condo, Townhouse, Multi-Family, Mobile / Manufactured Home, Land / Lot, or Other (mixed-use, unusual). Applies to search locations only. |
| `minPrice` | integer | null | Only return listings priced at or above this amount in USD. Leave blank for no minimum. |
| `maxPrice` | integer | null | Only return listings priced at or below this amount in USD. Leave blank for no maximum. |
| `minBeds` | integer | null | Only return listings with at least this many bedrooms. Ignored for Land and Other. |
| `minBaths` | integer | null | Only return listings with at least this many bathrooms. Ignored for Land and Other. |

#### Output

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includePropertyDetails` | boolean | `true` | Visit each listing's detail page to capture full description, every photo URL, lot size, year built, HOA fee, and seller phone. Disable for faster, cheaper card-level runs. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Hard cap on total listings across all URLs and searches. Set to `0` for no cap. The run stops requesting new pages once the cap is reached but keeps the full final page even if it slightly overshoots. |

### Output

One flat row per listing — no nested children, no duplicate rows. Photos are inlined as an array of absolute URLs.

```json
{
    "listingId": "clxyz0123abc",
    "url": "https://fsbo.com/search/123-main-st-austin-tx-78701",
    "source": "fsbo.com",
    "scrapedAt": "2026-05-16T14:30:00+00:00",
    "headline": "Charming 3-Bed Bungalow Near Downtown",
    "propertyType": "SINGLE_FAMILY",
    "status": "ACTIVE",
    "price": 525000,
    "priceUsd": 525000,
    "pricePerSqft": 315,
    "address": "123 Main St",
    "city": "Austin",
    "state": "TX",
    "zipCode": "78701",
    "county": "Travis",
    "neighborhood": "East Austin",
    "latitude": 30.2672,
    "longitude": -97.7431,
    "beds": 3,
    "baths": 2,
    "sqft": 1665,
    "lotSize": 6500,
    "yearBuilt": 1972,
    "description": "Updated bungalow with open floor plan. Call (512) 555-1234 to schedule a viewing...",
    "features": ["Open Floor Plan", "Hardwood Floors", "Updated Kitchen"],
    "interiorFeatures": ["Walk-In Closet", "Granite Counters"],
    "utilities": ["City Water", "Natural Gas"],
    "hoaFee": null,
    "primaryPhotoUrl": "https://fsbo.com/api/fsbo/photos?key=abc-001",
    "photoUrls": ["https://fsbo.com/api/fsbo/photos?key=abc-001", "https://fsbo.com/api/fsbo/photos?key=abc-002"],
    "photos": [
        { "url": "https://fsbo.com/api/fsbo/photos?key=abc-001", "sortOrder": 0, "isPrimary": true }
    ],
    "sellerName": "Jane Smith",
    "sellerPhone": "(512) 555-1234",
    "mlsListed": false,
    "isUnclaimed": false,
    "publishedAt": "2026-04-01T00:00:00Z",
    "daysOnMarket": 45
}
```

#### Core Identity

| Field | Type | Description |
|-------|------|-------------|
| `listingId` | string | Unique FSBO.com listing identifier |
| `url` | string | Direct link to the listing on FSBO.com |
| `source` | string | Always `"fsbo.com"` |
| `scrapedAt` | string | ISO timestamp of data extraction |
| `headline` | string | Seller's listing headline |
| `propertyType` | string | SINGLE\_FAMILY, CONDO, TOWNHOUSE, MULTI\_FAMILY, LAND, MOBILE\_HOME, OTHER |
| `status` | string | Listing status (ACTIVE, etc.) |

#### Address & Location

| Field | Type | Description |
|-------|------|-------------|
| `address` | string | Full street address |
| `city` | string | City name |
| `state` | string | Two-letter state code |
| `zipCode` | string | 5-digit ZIP code |
| `county` | string | County name |
| `neighborhood` | string | Neighborhood name when present |
| `schoolDistrict` | string | School district name when present |
| `latitude` | number | Decimal latitude |
| `longitude` | number | Decimal longitude |

#### Pricing

| Field | Type | Description |
|-------|------|-------------|
| `price` | number | Asking price in USD |
| `priceUsd` | number | Asking price in USD (alias of `price`) |
| `pricePerSqft` | number | Derived: price divided by square footage |
| `hoaFee` | number | Monthly HOA fee in USD when present |
| `hoaName` | string | HOA name when present |

#### Property Details

| Field | Type | Description |
|-------|------|-------------|
| `beds` | number | Number of bedrooms |
| `baths` | number | Number of bathrooms |
| `sqft` | number | Living area in square feet |
| `lotSize` | number | Lot size value |
| `lotUnit` | string | Unit for `lotSize` (e.g. `acres`, `sqft`) |
| `yearBuilt` | number | Year constructed |
| `description` | string | Full seller-written listing description |
| `features` | string\[] | Exterior and overall features |
| `interiorFeatures` | string\[] | Interior features (flooring, fixtures, etc.) |
| `utilities` | string\[] | Utilities and connections |

#### Photos

| Field | Type | Description |
|-------|------|-------------|
| `primaryPhotoUrl` | string | Absolute URL of the primary listing photo |
| `photoUrls` | string\[] | All listing photos as a flat array of absolute URLs |
| `photos` | object\[] | Photos with `{url, sortOrder, isPrimary}` for advanced ordering |

#### Seller & Listing Meta

| Field | Type | Description |
|-------|------|-------------|
| `sellerName` | string | Owner's name on claimed listings (~5% of catalog) |
| `sellerPhone` | string | Phone number extracted from the description text when present |
| `mlsListed` | boolean | True if also cross-listed on MLS |
| `isUnclaimed` | boolean | True if the listing was MLS-scraped rather than owner-posted |
| `planName` | string | Seller's plan tier on FSBO.com |

#### Dates & Derived

| Field | Type | Description |
|-------|------|-------------|
| `publishedAt` | string | ISO date when the seller listed the property |
| `daysOnMarket` | number | Derived from `publishedAt` — days since the listing went live |

### Tips for Best Results

- **City names need a state.** Use `"Austin, TX"`, not just `"Austin"` — bare city names cross-collide across states and are rejected. State name alone (`"Florida"`) or 2-letter code (`"FL"`) is fine for state-wide sweeps.
- **Smaller-inventory states are catalog-exhaustible.** States like Vermont and Wyoming often carry fewer than 100 active listings. Set `maxResults: 0` to sweep them completely — the run stops cleanly when the catalog ends.
- **Toggle `includePropertyDetails` for speed vs. depth.** Turn it off for fast card-level runs (price, address, beds/baths/sqft, primary photo). Turn it on to capture full descriptions, every photo URL, HOA fees, year built, and the regex-extracted seller phone.
- **Claimed listings are the gold standard for lead generation.** The ~5% of listings with `isUnclaimed: false` carry the seller's real name in `sellerName`. Filter your dataset on this flag to build clean direct-owner contact lists.
- **`sellerPhone` is best-effort from description text.** It's populated only when the seller embedded a 10-digit number in their listing pitch — expect this to be null on the majority of rows. The `contactName` source is independent and far more reliable.
- **ZIP codes return tight, focused result sets.** A single ZIP like `"78701"` typically returns under 50 listings — perfect for hyper-local market analysis without paginating large state sweeps.
- **Mix `startUrls` and `searchLocations` in one run.** Paste a few specific listing URLs you already know about alongside broader location sweeps, and they all flow into the same dataset.

### Pricing

**$5.00 per 1,000 results** — flat, pay-per-result pricing roughly 3x cheaper than the leading FSBO scraper on the Apify Store ($15.00 per 1,000). No compute charges — you only pay per result returned.

| Results | Estimated Cost |
|---------|----------------|
| 100 | $0.50 |
| 1,000 | $5.00 |
| 10,000 | $50.00 |
| 100,000 | $500.00 |

A "result" is any property row in the output dataset. Platform fees (storage, data transfer) are additional and depend on your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

FSBO.com is a public marketplace where sellers list their properties for buyers to discover. This actor is designed for legitimate real estate market analysis, comparable-property research, investor sourcing, and lead generation for real estate services. Users are responsible for complying with applicable laws and FSBO.com's terms of service, including any limits on automated access and downstream use of contact information. Do not use extracted data for spam, harassment, or any illegal purpose. Be especially mindful of telephone consumer protection rules (TCPA) and CAN-SPAM when contacting sellers from this dataset.

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more FSBO.com search or listing URLs directly. Any filters in the URL (state, city, price, beds, property type) are honored as-is. Mix URLs and search locations freely — both are scraped in one run.

## `searchLocations` (type: `array`):

Search by US state, city + state, or ZIP code. Accepted formats: 'Florida', 'Austin, TX', '78701'. Add multiple entries to scrape several markets in one run.

## `propertyType` (type: `string`):

Filter results by property type. Only applies to Search Locations — ignored when using URLs (URLs carry their own type filter).

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

Only return listings priced at or above this amount. Leave blank for no minimum.

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

Only return listings priced at or below this amount. Leave blank for no maximum.

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

Only return listings with at least this many bedrooms. Ignored for Land and Other property types where bedroom/bathroom counts may not apply.

## `minBaths` (type: `integer`):

Only return listings with at least this many bathrooms. Ignored for Land and Other property types where bedroom/bathroom counts may not apply.

## `includePropertyDetails` (type: `boolean`):

Visit each listing's detail page to capture full description, every photo URL, lot size, year built, and seller phone. Disable for faster, cheaper runs that return only the search-result card data (price, address, beds/baths, sqft, primary photo, seller name).

## `maxResults` (type: `integer`):

Hard cap on total listings across all URLs and searches. Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper limit of 100,000 still applies to prevent infinite pagination). The actor stops requesting new pages once this number is reached but keeps the full final page even if it slightly overshoots.

## Actor input object example

```json
{
  "startUrls": [],
  "searchLocations": [
    "Florida"
  ],
  "propertyType": "all",
  "includePropertyDetails": true,
  "maxResults": 100
}
```

# Actor output Schema

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

Table of scraped FSBO listings with key fields.

# 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 = {
    "startUrls": [],
    "searchLocations": [
        "Florida"
    ],
    "propertyType": "all",
    "includePropertyDetails": true,
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/fsbo-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 = {
    "startUrls": [],
    "searchLocations": ["Florida"],
    "propertyType": "all",
    "includePropertyDetails": True,
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/fsbo-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 '{
  "startUrls": [],
  "searchLocations": [
    "Florida"
  ],
  "propertyType": "all",
  "includePropertyDetails": true,
  "maxResults": 100
}' |
apify call solidcode/fsbo-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "FSBO Scraper",
        "description": "[💰 $5.0 / 1K] Extract For Sale By Owner property listings from FSBO.com. Get direct seller contact info (name + phone), price, address, beds/baths, square footage, photos, and full property description. Search by state, city, ZIP code, or paste FSBO.com URLs.",
        "version": "1.0",
        "x-build-id": "uhwVElYYYeO8JvzwH"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~fsbo-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-fsbo-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/solidcode~fsbo-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-fsbo-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/solidcode~fsbo-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-fsbo-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": {
                    "startUrls": {
                        "title": "FSBO.com URLs",
                        "type": "array",
                        "description": "Paste one or more FSBO.com search or listing URLs directly. Any filters in the URL (state, city, price, beds, property type) are honored as-is. Mix URLs and search locations freely — both are scraped in one run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchLocations": {
                        "title": "Search Locations",
                        "type": "array",
                        "description": "Search by US state, city + state, or ZIP code. Accepted formats: 'Florida', 'Austin, TX', '78701'. Add multiple entries to scrape several markets in one run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "propertyType": {
                        "title": "Property Type",
                        "enum": [
                            "all",
                            "single_family",
                            "condo",
                            "townhouse",
                            "multi_family",
                            "mobile_home",
                            "land",
                            "other"
                        ],
                        "type": "string",
                        "description": "Filter results by property type. Only applies to Search Locations — ignored when using URLs (URLs carry their own type filter).",
                        "default": "all"
                    },
                    "minPrice": {
                        "title": "Minimum Price (USD)",
                        "minimum": 0,
                        "maximum": 100000000,
                        "type": "integer",
                        "description": "Only return listings priced at or above this amount. Leave blank for no minimum."
                    },
                    "maxPrice": {
                        "title": "Maximum Price (USD)",
                        "minimum": 0,
                        "maximum": 100000000,
                        "type": "integer",
                        "description": "Only return listings priced at or below this amount. Leave blank for no maximum."
                    },
                    "minBeds": {
                        "title": "Minimum Bedrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Only return listings with at least this many bedrooms. Ignored for Land and Other property types where bedroom/bathroom counts may not apply."
                    },
                    "minBaths": {
                        "title": "Minimum Bathrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Only return listings with at least this many bathrooms. Ignored for Land and Other property types where bedroom/bathroom counts may not apply."
                    },
                    "includePropertyDetails": {
                        "title": "Include Full Property Details",
                        "type": "boolean",
                        "description": "Visit each listing's detail page to capture full description, every photo URL, lot size, year built, and seller phone. Disable for faster, cheaper runs that return only the search-result card data (price, address, beds/baths, sqft, primary photo, seller name).",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Hard cap on total listings across all URLs and searches. Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper limit of 100,000 still applies to prevent infinite pagination). The actor stops requesting new pages once this number is reached but keeps the full final page even if it slightly overshoots.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
