# Centris.ca Scraper (`one-api/centris-scraper`) Actor

Scrape Centris.ca, Quebec's leading real-estate marketplace. Enriched property details by listing number or URL, search For-Sale / For-Rent by location, coordinates, polygon or URL, real-estate broker (agent) search + profiles, and location autocomplete. Residential & commercial, prices in CAD.

- **URL**: https://apify.com/one-api/centris-scraper.md
- **Developed by:** [ONE API](https://apify.com/one-api) (community)
- **Categories:** Lead generation, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.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

## Centris.ca Scraper

Scrape **[Centris.ca](https://www.centris.ca)** — Quebec's (Canada) leading real-estate marketplace, run by the Quebec Professional Association of Real Estate Brokers. Pull **For-Sale / For-Rent** listings (residential & commercial), fully-enriched **property details**, real-estate **broker (agent)** profiles, and **location autocomplete**, all as clean tabular rows you can sort, filter and export to CSV / Excel / JSON.

Every row also carries the full upstream JSON in the **`Raw`** column for power users.

---

### What you can scrape

Fill **any subset** of the input sections — each runs in parallel.

#### 🏠 Property Details (one per line)
Auto-detects each entry:
- A **numeric Centris listing number / MLS №** (e.g. `18658627`) → full property record
- A **centris.ca listing URL** → full property record

A property record includes price, full address, latitude/longitude, every photo, complete characteristics, units, financials & taxes, the description, and the listing broker(s).

#### 🔎 Search Listings (one per line)
- A **city / borough / region name** (e.g. `Montreal`, `Quebec City`, `Laval`) → searches listings there
- A **centris.ca search URL** → replays that exact search (including any encoded filters)

#### 📍 Search by Coordinates
`latitude,longitude` or `latitude,longitude,radiusKm` (radius in km, default 3) — e.g. `45.5017,-73.5673,2`.

#### 🗺️ Search by Polygon
One polygon per line, as space-separated `lat,lng` points (≥ 3) — e.g. `45.52,-73.60 45.50,-73.55 45.48,-73.62`.

#### 👤 Agents (real-estate brokers)
- A **broker name**, or `agency:<office>` / `area:<city>` → broker search (`/agent/search`)
- A **broker id / code** (e.g. `h6088`) → full broker profile (`/agent/details`)

#### 🔍 Location Autocomplete
Free text (≥ 3 chars) → Centris geographic records (id, label, type, level).

---

### Search filters (apply to every property search)

Listing type (For Sale / For Rent), category (Residential / Commercial), property type, plex type, price range (`min:…,max:…`), bedrooms, bathrooms, parking, garages, living-area & land-area ranges (with unit), and toggles for pool, waterfront, elevator, furnished, pets-allowed and open-house — plus pages and results-per-page. An optional broker-language filter narrows the Agents search.

---

### Output

One flat row per result. The `Type` column tells you what each row is: `property`, `agent` or `location`. Common columns include Name / Title, Category, Price (CAD), Beds, Baths, Rooms, Address, Latitude, Longitude, Agent, Agency, Phone, Cover Photo (thumbnail), Listing URL and the complete `Raw` JSON.

---

### Notes

- Coverage is the Canadian province of **Quebec** (prices in **CAD**).
- “Sold” is **not** a Centris listing status — use **For Sale** / **For Rent**.
- This actor is a friendly wrapper over a hosted Centris.ca API; you don't need any Centris account or key.

# Actor input Schema

## `property_inputs` (type: `array`):

Auto-detects each entry and calls the right endpoint:
• A numeric Centris listing number / MLS № (e.g. `18658627`) → `/details/byid`
• A `https://www.centris.ca/...` listing URL → `/details/byurl`

Each row = one fully-enriched property record (price, address, latitude/longitude, every photo, full characteristics, units, financials & taxes, description, and the listing broker(s)). The complete upstream JSON is always kept in the `Raw` column.
## `search_inputs` (type: `array`):

Auto-detects each entry and routes to the right `/search/*` endpoint:
• A Centris.ca results URL (e.g. `https://www.centris.ca/en/properties~for-sale~montreal`) → `/search/byurl` (replays that exact search, including any encoded filters)
• Anything else (a city / borough / region name, e.g. `Montreal`, `Quebec City`, `Laval`) → `/search/bylocation`

The Search Filters & Pagination below apply to every location search. Each hit returns one row per property listing.
## `coordinate_inputs` (type: `array`):

Radius search around a point via `/search/bycoordinates`. One point per line as `latitude,longitude` or `latitude,longitude,radiusKm` (radius in kilometres, default 3). Example: `45.5017,-73.5673,2` searches 2 km around downtown Montreal. The Search Filters below also apply. One row per listing.
## `polygon_inputs` (type: `array`):

Search inside an arbitrary map polygon via `/search/bypolygon`. One polygon per line, as space-separated `lat,lng` points (at least 3). Example: `45.52,-73.60 45.50,-73.55 45.48,-73.62`. The Search Filters below also apply. One row per listing.
## `agent_search_inputs` (type: `array`):

Search real-estate brokers via `/agent/search`. Per line:
• A broker name (e.g. `Marie Tremblay`) → brokers whose name matches
• `agency:<office name>` (e.g. `agency:RE/MAX`) → brokers at that agency / office
• `area:<city or region>` (e.g. `area:Montreal`) → brokers active in that area

Use the optional Broker language filter below to narrow by spoken language. Each row = one broker (name, title, agency, phone, photo, profile URL). Use a broker id in the section below for the full profile.
## `agent_id_inputs` (type: `array`):

For each Centris broker code (e.g. `h6088`) the actor fetches `/agent/details` — the full broker profile (name, title, agency, phones, email, languages, address, listing count, profile URL). Get broker ids from the Agent search above.
## `autocomplete_inputs` (type: `array`):

Resolve a free-text place (city / borough / region) to the Centris geographic records used by Search, via `/autocomplete`. Minimum 3 characters. Each suggestion = one row (id, label, type, level). Feed an id back into a location search if you want an exact geographic scope.
## `searchType` (type: `string`):

For Sale or For Rent. Applies to every location / coordinate / polygon search. (Centris has no Sold data — listing status is Sale or Rent only.)
## `category` (type: `string`):

Residential or Commercial property. Applies to every search.
## `propertyType` (type: `string`):

Limit results to a property type. Leave as Any for all types. Commercial types (Office, Industrial, Commercial building, Business) require Category = Commercial above. You can also pass several comma-separated types directly in this field.
## `plexType` (type: `string`):

Only used when Property type is Plex — pick the plex size. Leave as Any for all plexes.
## `priceRange` (type: `string`):

Format: `min:200000,max:600000` — or just `min:200000` / `max:600000`. For rent, this is the monthly rent.
## `bedrooms` (type: `string`):

Minimum bedrooms. Use an exact count (e.g. `3`) or `3+` for 3 or more.
## `bathrooms` (type: `string`):

Minimum bath / powder rooms (e.g. `2` → 2 or more).
## `parking` (type: `string`):

Minimum parking spaces (e.g. `1` → 1 or more).
## `garage` (type: `string`):

Minimum garages (e.g. `1` → 1 or more).
## `livingArea` (type: `string`):

Living-area range in the unit chosen below, e.g. `min:800,max:2000` (or just one half).
## `landArea` (type: `string`):

Lot / land-area range in the unit chosen below, e.g. `min:3000,max:10000` (or just one half).
## `areaUnit` (type: `string`):

Unit for the living-area and land-area ranges above.
## `pool` (type: `boolean`):

Only listings with a pool.
## `waterfront` (type: `boolean`):

Only waterfront / near-water listings.
## `elevator` (type: `boolean`):

Only listings with an elevator.
## `furnished` (type: `boolean`):

Only furnished listings (most relevant for rentals).
## `petsAllowed` (type: `boolean`):

Only listings where pets are allowed (most relevant for rentals).
## `openHouse` (type: `boolean`):

Only listings with an upcoming open house.
## `language` (type: `string`):

Filter the Agents search above by a language the broker speaks. Leave as Any for no filter. Ignored by property searches.
## `pages` (type: `integer`):

How many result pages to fetch for each location / coordinate / polygon / agent search (stops early when there are no more results).
## `resultCount` (type: `integer`):

Listings (or brokers) per page for every search (1–60).

## Actor input object example

```json
{
  "property_inputs": [
    "18658627",
    "https://www.centris.ca/en/condos~for-sale~montreal-ahuntsic-cartierville/24335151"
  ],
  "search_inputs": [
    "Montreal"
  ],
  "coordinate_inputs": [
    "45.5017,-73.5673,2"
  ],
  "polygon_inputs": [],
  "agent_search_inputs": [
    "area:Montreal"
  ],
  "agent_id_inputs": [],
  "autocomplete_inputs": [
    "montreal"
  ],
  "searchType": "For_Sale",
  "category": "Residential",
  "propertyType": "",
  "plexType": "",
  "priceRange": "",
  "bedrooms": "",
  "bathrooms": "",
  "parking": "",
  "garage": "",
  "livingArea": "",
  "landArea": "",
  "areaUnit": "sqft",
  "pool": false,
  "waterfront": false,
  "elevator": false,
  "furnished": false,
  "petsAllowed": false,
  "openHouse": false,
  "language": "",
  "pages": 1,
  "resultCount": 20
}
````

# 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 = {
    "property_inputs": [
        "18658627",
        "https://www.centris.ca/en/condos~for-sale~montreal-ahuntsic-cartierville/24335151"
    ],
    "search_inputs": [
        "Montreal"
    ],
    "coordinate_inputs": [
        "45.5017,-73.5673,2"
    ],
    "polygon_inputs": [],
    "agent_search_inputs": [
        "area:Montreal"
    ],
    "agent_id_inputs": [],
    "autocomplete_inputs": [
        "montreal"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("one-api/centris-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 = {
    "property_inputs": [
        "18658627",
        "https://www.centris.ca/en/condos~for-sale~montreal-ahuntsic-cartierville/24335151",
    ],
    "search_inputs": ["Montreal"],
    "coordinate_inputs": ["45.5017,-73.5673,2"],
    "polygon_inputs": [],
    "agent_search_inputs": ["area:Montreal"],
    "agent_id_inputs": [],
    "autocomplete_inputs": ["montreal"],
}

# Run the Actor and wait for it to finish
run = client.actor("one-api/centris-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 '{
  "property_inputs": [
    "18658627",
    "https://www.centris.ca/en/condos~for-sale~montreal-ahuntsic-cartierville/24335151"
  ],
  "search_inputs": [
    "Montreal"
  ],
  "coordinate_inputs": [
    "45.5017,-73.5673,2"
  ],
  "polygon_inputs": [],
  "agent_search_inputs": [
    "area:Montreal"
  ],
  "agent_id_inputs": [],
  "autocomplete_inputs": [
    "montreal"
  ]
}' |
apify call one-api/centris-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Centris.ca Scraper",
        "description": "Scrape Centris.ca, Quebec's leading real-estate marketplace. Enriched property details by listing number or URL, search For-Sale / For-Rent by location, coordinates, polygon or URL, real-estate broker (agent) search + profiles, and location autocomplete. Residential & commercial, prices in CAD.",
        "version": "1.0",
        "x-build-id": "WAP0yPVoWEg594qLC"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/one-api~centris-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-one-api-centris-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/one-api~centris-scraper/runs": {
            "post": {
                "operationId": "runs-sync-one-api-centris-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/one-api~centris-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-one-api-centris-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": {
                    "property_inputs": {
                        "title": "Listing number or Centris.ca URL (one per line)",
                        "type": "array",
                        "description": "Auto-detects each entry and calls the right endpoint:\n• A numeric Centris listing number / MLS № (e.g. `18658627`) → `/details/byid`\n• A `https://www.centris.ca/...` listing URL → `/details/byurl`\n\nEach row = one fully-enriched property record (price, address, latitude/longitude, every photo, full characteristics, units, financials & taxes, description, and the listing broker(s)). The complete upstream JSON is always kept in the `Raw` column.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "search_inputs": {
                        "title": "Location name or Centris.ca search URL (one per line)",
                        "type": "array",
                        "description": "Auto-detects each entry and routes to the right `/search/*` endpoint:\n• A Centris.ca results URL (e.g. `https://www.centris.ca/en/properties~for-sale~montreal`) → `/search/byurl` (replays that exact search, including any encoded filters)\n• Anything else (a city / borough / region name, e.g. `Montreal`, `Quebec City`, `Laval`) → `/search/bylocation`\n\nThe Search Filters & Pagination below apply to every location search. Each hit returns one row per property listing.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "coordinate_inputs": {
                        "title": "Coordinates: lat,lng or lat,lng,radiusKm (one per line)",
                        "type": "array",
                        "description": "Radius search around a point via `/search/bycoordinates`. One point per line as `latitude,longitude` or `latitude,longitude,radiusKm` (radius in kilometres, default 3). Example: `45.5017,-73.5673,2` searches 2 km around downtown Montreal. The Search Filters below also apply. One row per listing.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "polygon_inputs": {
                        "title": "Polygon: space-separated lat,lng points (one polygon per line)",
                        "type": "array",
                        "description": "Search inside an arbitrary map polygon via `/search/bypolygon`. One polygon per line, as space-separated `lat,lng` points (at least 3). Example: `45.52,-73.60 45.50,-73.55 45.48,-73.62`. The Search Filters below also apply. One row per listing.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "agent_search_inputs": {
                        "title": "Broker name, or agency:<office> / area:<city> (one per line)",
                        "type": "array",
                        "description": "Search real-estate brokers via `/agent/search`. Per line:\n• A broker name (e.g. `Marie Tremblay`) → brokers whose name matches\n• `agency:<office name>` (e.g. `agency:RE/MAX`) → brokers at that agency / office\n• `area:<city or region>` (e.g. `area:Montreal`) → brokers active in that area\n\nUse the optional Broker language filter below to narrow by spoken language. Each row = one broker (name, title, agency, phone, photo, profile URL). Use a broker id in the section below for the full profile.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "agent_id_inputs": {
                        "title": "Broker id / code (one per line)",
                        "type": "array",
                        "description": "For each Centris broker code (e.g. `h6088`) the actor fetches `/agent/details` — the full broker profile (name, title, agency, phones, email, languages, address, listing count, profile URL). Get broker ids from the Agent search above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "autocomplete_inputs": {
                        "title": "Location text to resolve (one per line)",
                        "type": "array",
                        "description": "Resolve a free-text place (city / borough / region) to the Centris geographic records used by Search, via `/autocomplete`. Minimum 3 characters. Each suggestion = one row (id, label, type, level). Feed an id back into a location search if you want an exact geographic scope.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchType": {
                        "title": "Listing type",
                        "enum": [
                            "For_Sale",
                            "For_Rent"
                        ],
                        "type": "string",
                        "description": "For Sale or For Rent. Applies to every location / coordinate / polygon search. (Centris has no Sold data — listing status is Sale or Rent only.)",
                        "default": "For_Sale"
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "Residential",
                            "Commercial"
                        ],
                        "type": "string",
                        "description": "Residential or Commercial property. Applies to every search.",
                        "default": "Residential"
                    },
                    "propertyType": {
                        "title": "Property type",
                        "enum": [
                            "",
                            "house",
                            "condo",
                            "plex",
                            "loft",
                            "intergenerational",
                            "mobile_home",
                            "cottage",
                            "farm",
                            "land",
                            "multi_family",
                            "office",
                            "industrial",
                            "commercial",
                            "business"
                        ],
                        "type": "string",
                        "description": "Limit results to a property type. Leave as Any for all types. Commercial types (Office, Industrial, Commercial building, Business) require Category = Commercial above. You can also pass several comma-separated types directly in this field.",
                        "default": ""
                    },
                    "plexType": {
                        "title": "Plex type",
                        "enum": [
                            "",
                            "duplex",
                            "triplex",
                            "quadruplex",
                            "quintuplex"
                        ],
                        "type": "string",
                        "description": "Only used when Property type is Plex — pick the plex size. Leave as Any for all plexes.",
                        "default": ""
                    },
                    "priceRange": {
                        "title": "Price range (CAD)",
                        "type": "string",
                        "description": "Format: `min:200000,max:600000` — or just `min:200000` / `max:600000`. For rent, this is the monthly rent.",
                        "default": ""
                    },
                    "bedrooms": {
                        "title": "Bedrooms",
                        "type": "string",
                        "description": "Minimum bedrooms. Use an exact count (e.g. `3`) or `3+` for 3 or more.",
                        "default": ""
                    },
                    "bathrooms": {
                        "title": "Bathrooms",
                        "type": "string",
                        "description": "Minimum bath / powder rooms (e.g. `2` → 2 or more).",
                        "default": ""
                    },
                    "parking": {
                        "title": "Parking spaces",
                        "type": "string",
                        "description": "Minimum parking spaces (e.g. `1` → 1 or more).",
                        "default": ""
                    },
                    "garage": {
                        "title": "Garages",
                        "type": "string",
                        "description": "Minimum garages (e.g. `1` → 1 or more).",
                        "default": ""
                    },
                    "livingArea": {
                        "title": "Living area",
                        "type": "string",
                        "description": "Living-area range in the unit chosen below, e.g. `min:800,max:2000` (or just one half).",
                        "default": ""
                    },
                    "landArea": {
                        "title": "Land area",
                        "type": "string",
                        "description": "Lot / land-area range in the unit chosen below, e.g. `min:3000,max:10000` (or just one half).",
                        "default": ""
                    },
                    "areaUnit": {
                        "title": "Area unit",
                        "enum": [
                            "sqft",
                            "sqm",
                            "acre"
                        ],
                        "type": "string",
                        "description": "Unit for the living-area and land-area ranges above.",
                        "default": "sqft"
                    },
                    "pool": {
                        "title": "Has a pool",
                        "type": "boolean",
                        "description": "Only listings with a pool.",
                        "default": false
                    },
                    "waterfront": {
                        "title": "Waterfront / near water",
                        "type": "boolean",
                        "description": "Only waterfront / near-water listings.",
                        "default": false
                    },
                    "elevator": {
                        "title": "Has an elevator",
                        "type": "boolean",
                        "description": "Only listings with an elevator.",
                        "default": false
                    },
                    "furnished": {
                        "title": "Furnished",
                        "type": "boolean",
                        "description": "Only furnished listings (most relevant for rentals).",
                        "default": false
                    },
                    "petsAllowed": {
                        "title": "Pets allowed",
                        "type": "boolean",
                        "description": "Only listings where pets are allowed (most relevant for rentals).",
                        "default": false
                    },
                    "openHouse": {
                        "title": "Open house",
                        "type": "boolean",
                        "description": "Only listings with an upcoming open house.",
                        "default": false
                    },
                    "language": {
                        "title": "Broker language (Agent search only)",
                        "enum": [
                            "",
                            "english",
                            "french",
                            "spanish"
                        ],
                        "type": "string",
                        "description": "Filter the Agents search above by a language the broker speaks. Leave as Any for no filter. Ignored by property searches.",
                        "default": ""
                    },
                    "pages": {
                        "title": "Pages per search",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many result pages to fetch for each location / coordinate / polygon / agent search (stops early when there are no more results).",
                        "default": 1
                    },
                    "resultCount": {
                        "title": "Results per page",
                        "minimum": 1,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Listings (or brokers) per page for every search (1–60).",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
