# Realtor.ca Scraper| 💰 $0.5 / 1K (`solidcode/realtorca-scraper`) Actor

\[💰 $0.5 / 1K] Extract property listings and real estate agent profiles from Realtor.ca. Search by location, filter by price, property type, bedrooms, and more. Collect detailed property data, photos, agent contact info, and social media links across Canada.

- **URL**: https://apify.com/solidcode/realtorca-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 28 total users, 11 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 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

## Realtor.ca Scraper

Pull MLS-grade property listings and licensed real-estate agent profiles from Realtor.ca at scale — prices, full Canadian addresses, GPS coordinates, photos, brokerage details, parking, amenities, and social media links across every province and territory. One actor handles both for-sale and rental listings plus the realtor directory, so you can run market analytics and agent prospecting from a single configuration. Built for Canadian real estate investors, mortgage brokers, brokerage data teams, and CRM platforms that need fresh Realtor.ca data without standing up their own collection pipeline.

### Why This Scraper?

- **All 13 provinces and territories, every postal code** — search any Canadian city, region, or paste a Realtor.ca map URL. No need to hand-build map coordinates or chase per-province endpoints.
- **Two record types in one actor** — switch the `mode` dropdown between **Property Listings** and **Real Estate Agents**. No second actor or second subscription.
- **Server-side filters that match Realtor.ca exactly** — buy vs. rent, residential / commercial / farm, price min/max, minimum bedrooms, minimum bathrooms — every filter is forwarded to the official search so you only pay for matching results.
- **Dense-area auto-subdivision (up to 6 levels deep)** — Realtor.ca caps each query at 600 listings; the scraper recursively splits Toronto, Vancouver, and Montreal bounding boxes into quadrants until every listing is captured.
- **Both Realtor.ca listing ID and MLS number on every property** — link rows back to your existing brokerage feeds, KW Command, or Lone Wolf systems with no manual cross-walk.
- **High-resolution photo URLs (every photo, not just the cover)** — direct CDN paths to the full gallery for downstream image analysis or CRM enrichment.
- **Four social media links per agent** — Facebook, Instagram, LinkedIn, and Twitter/X URLs lifted from the agent's Realtor.ca card alongside name, phone, brokerage, designation, and personal website.
- **Numeric and formatted prices side by side** — `price` ("$1,249,900") for display plus `priceNumeric` (1249900) for sorting, charting, and BI tools.

### Use Cases

**Real Estate Investment & Analysis**
- Compare list prices across Canadian metros (Toronto vs. Calgary vs. Halifax)
- Track time-on-market by neighbourhood to spot softening segments
- Filter rentals by `priceMax` and bedroom count to model gross yield
- Build comparable-listing tables by postal-code prefix (FSA)

**Lead Generation for Real Estate Services**
- Build agent contact lists by city or province with phone, brokerage, and social links
- Prospect new licensees by sweeping the Real Estate Agents mode each month
- Identify the highest-volume brokerages in target markets via office-logo grouping

**Market Research & Data Enrichment**
- Track property-type mix (condos vs. detached vs. farm) by region
- Map listings on a heatmap using built-in GPS coordinates
- Enrich existing CRM rows with MLS number, listing URL, and agent contact

**Relocation & Property Search**
- Aggregate listings across multiple cities into one spreadsheet
- Compare provinces side-by-side for cost-of-living research
- Watch a custom map polygon (zoom into the area on Realtor.ca, paste the URL)

### Getting Started

#### Search Properties in a City

Just a location — defaults handle the rest.

```json
{
    "mode": "properties",
    "location": "Toronto, ON",
    "maxResults": 100
}
````

#### Filtered Buy Search

Combine price, bedroom, and bathroom filters:

```json
{
    "mode": "properties",
    "location": "Vancouver, BC",
    "transactionType": "buy",
    "propertyType": "residential",
    "priceMin": 500000,
    "priceMax": 1500000,
    "bedroomsMin": 3,
    "bathroomsMin": 2,
    "maxResults": 200
}
```

#### Rental Hunt with Price Cap

```json
{
    "mode": "properties",
    "location": "Montreal, QC",
    "transactionType": "rent",
    "priceMax": 2500,
    "bedroomsMin": 2,
    "maxResults": 100
}
```

#### Find Real Estate Agents

```json
{
    "mode": "agents",
    "location": "Calgary, AB",
    "maxResults": 50
}
```

#### Custom Map Area

Zoom into a neighbourhood on Realtor.ca and paste the URL:

```json
{
    "mode": "properties",
    "startUrls": [
        "https://www.realtor.ca/map#ZoomLevel=13&LatitudeMax=43.7&LongitudeMax=-79.3&LatitudeMin=43.6&LongitudeMin=-79.5"
    ],
    "maxResults": 500
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `mode` | string | `"properties"` | Choose **Property Listings** or **Real Estate Agents** |
| `location` | string | `"Toronto, ON"` | City and province (e.g. "Vancouver, BC"). Leave empty if using Start URLs |
| `startUrls` | string\[] | `[]` | Paste Realtor.ca URLs directly. Supports map views, search results, and agent pages. Overrides `location` when provided |
| `maxResults` | integer | `200` | Maximum results to collect. Set to `0` for all available results |

#### Property Filters

These apply only in property mode and are forwarded to Realtor.ca's search endpoint.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `transactionType` | string | `"buy"` | **Buy** or **Rent** |
| `propertyType` | string | `"residential"` | **Residential**, **Commercial**, or **Farm** |
| `priceMin` | integer | — | Minimum price (CAD) |
| `priceMax` | integer | — | Maximum price (CAD) |
| `bedroomsMin` | integer | — | Minimum bedrooms (0–10) |
| `bathroomsMin` | integer | — | Minimum bathrooms (0–10) |

### Output

The actor writes one row per result. **Property Listings** and **Real Estate Agents** have separate field sets.

#### Property Listing Example

```json
{
    "listingId": "27045321",
    "mlsNumber": "E9345812",
    "price": "$1,249,900",
    "priceNumeric": 1249900,
    "address": "45 Broadview Ave",
    "city": "Toronto",
    "province": "Ontario",
    "postalCode": "M4M 2E4",
    "latitude": 43.6615,
    "longitude": -79.3522,
    "propertyType": "Single Family",
    "buildingType": "House",
    "ownershipType": "Freehold",
    "bedrooms": 4,
    "bathrooms": 3,
    "sizeInterior": "2000 sqft",
    "stories": "2",
    "parkingSpaces": 2,
    "parkingType": "Garage",
    "amenities": "Exercise centre, Party room",
    "description": "Stunning renovated 4-bedroom home in the heart of Riverside...",
    "photos": [
        "https://cdn.realtor.ca/listing/TS638..../high_res_1.jpg",
        "https://cdn.realtor.ca/listing/TS638..../high_res_2.jpg"
    ],
    "agentName": "Jane Smith",
    "agentPhone": "(416) 555-1234",
    "agentOffice": "Royal LePage Premium",
    "listingUrl": "https://www.realtor.ca/real-estate/27045321/45-broadview-ave-toronto",
    "timeOnMarket": "12 days",
    "listedDate": "2026-04-01T00:00:00Z"
}
```

##### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `listingId` | string | Unique Realtor.ca listing ID |
| `mlsNumber` | string | MLS listing number |
| `propertyType` | string | "Single Family", "Condo", "Vacant Land", etc. |
| `buildingType` | string | "House", "Apartment", "Row / Townhouse", etc. |
| `ownershipType` | string | "Freehold", "Condominium/Strata", etc. |
| `bedrooms` | integer | Number of bedrooms |
| `bathrooms` | integer | Number of bathrooms |
| `sizeInterior` | string | Interior size with unit (e.g. "2000 sqft") |
| `stories` | string | Number of stories |
| `description` | string | Full listing public remarks |
| `listingUrl` | string | Direct link to the listing on Realtor.ca |
| `timeOnMarket` | string | How long the listing has been active |
| `listedDate` | string | First-listed date (ISO 8601) |

##### Address & Location

| Field | Type | Description |
|-------|------|-------------|
| `address` | string | Street address |
| `city` | string | City name |
| `province` | string | Province name |
| `postalCode` | string | Canadian postal code (e.g. "M4M 2E4") |
| `latitude` | number | GPS latitude |
| `longitude` | number | GPS longitude |

##### Price & Inventory

| Field | Type | Description |
|-------|------|-------------|
| `price` | string | Formatted price (e.g. "$525,000") |
| `priceNumeric` | integer | Price as a number for sorting and BI |
| `parkingSpaces` | integer | Total parking spaces |
| `parkingType` | string | "Underground", "Garage", "Visitor", etc. (multi-value) |
| `amenities` | string | Building amenities (e.g. "Exercise centre, Party room") |
| `photos` | string\[] | All high-resolution photo URLs from the gallery |

##### Listing Agent

| Field | Type | Description |
|-------|------|-------------|
| `agentName` | string | Listing agent's name |
| `agentPhone` | string | Listing agent's phone (formatted) |
| `agentOffice` | string | Listing brokerage / office name |

#### Agent Profile Example

```json
{
    "individualId": "1234567",
    "name": "Michael Chen",
    "position": "Salesperson",
    "phone": "403-555-6789",
    "office": "RE/MAX First",
    "officeDesignation": "Brokerage",
    "officeAddress": "123 Centre St SW, Calgary, AB T2G 1A1",
    "officeLogo": "https://cdn.realtor.ca/organization/logo/12345.jpg",
    "photo": "https://cdn.realtor.ca/individual/photo/67890.jpg",
    "website": "https://www.michaelchenrealty.ca",
    "profileUrl": "https://www.realtor.ca/agent/1234567/michael-chen",
    "facebook": "https://www.facebook.com/michaelchenrealty",
    "instagram": "https://www.instagram.com/michaelchenrealty",
    "linkedin": "https://www.linkedin.com/in/michael-chen-realty",
    "twitter": "https://www.twitter.com/mchenrealty"
}
```

##### Agent Identity & Contact

| Field | Type | Description |
|-------|------|-------------|
| `individualId` | string | Realtor.ca agent ID |
| `name` | string | Agent's full name |
| `position` | string | Role (e.g. "Salesperson", "Broker") |
| `phone` | string | Direct phone number |
| `photo` | string | Agent's profile photo URL |
| `website` | string | Agent's personal website |
| `profileUrl` | string | Profile page on Realtor.ca |

##### Brokerage

| Field | Type | Description |
|-------|------|-------------|
| `office` | string | Brokerage / office name |
| `officeDesignation` | string | "Brokerage", "Independently Owned", etc. |
| `officeAddress` | string | Office street address |
| `officeLogo` | string | Office logo image URL |

##### Social Media

| Field | Type | Description |
|-------|------|-------------|
| `facebook` | string | Facebook profile URL |
| `instagram` | string | Instagram profile URL |
| `linkedin` | string | LinkedIn profile URL |
| `twitter` | string | Twitter / X profile URL |

### Tips for Best Results

- **Anchor on a single city for fastest runs.** "Toronto, ON" or "Vancouver, BC" returns within minutes; province-level queries trigger heavy bounding-box subdivision.
- **Use the map URL trick for tight neighbourhoods.** Zoom into the exact polygon on realtor.ca, copy the URL from the address bar, and paste it into `startUrls`. The scraper reads `LatitudeMax` / `LongitudeMin` etc. directly from the URL hash.
- **Filter server-side, not after the fact.** `priceMin`, `priceMax`, `bedroomsMin`, and `bathroomsMin` are sent to Realtor.ca, so you only pay for matching listings instead of filtering a huge dump in your own pipeline.
- **For dense urban areas, leave `maxResults` generous.** Each Realtor.ca query caps at 600 results — Toronto and downtown Vancouver routinely exceed this and need quadrant subdivision to capture every listing.
- **Sweep agents Canada-wide by leaving `location` empty in `agents` mode.** The directory then iterates across all provinces and territories without any per-region setup.
- **Both English and French listings appear in the same query.** Realtor.ca returns Quebec listings with French descriptions in `description`; pair them with the structured fields (price, bedrooms, postal code) for downstream translation.
- **Pair `mlsNumber` with `listingId` in your CRM.** MLS numbers can be reused after a property re-lists, but `listingId` is unique per Realtor.ca record — use both as a composite key.

### Pricing

**$1.50 per 1,000 property results** | **$1.00 per 1,000 agent results**

| Results | Properties | Agents |
|---------|------------|--------|
| 100 | $0.15 | $0.10 |
| 1,000 | $1.50 | $1.00 |
| 10,000 | $15.00 | $10.00 |
| 100,000 | $150.00 | $100.00 |

A "result" is one property row or one agent row in the dataset. Apify platform fees (compute and storage) are billed separately based on your plan.

### Integrations

Export results 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 when new listings appear
- **Webhooks** — Trigger downstream APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is intended for legitimate real estate research, market analysis, and prospecting. You are responsible for complying with applicable Canadian privacy laws (PIPEDA and provincial equivalents), CASL (Canada's Anti-Spam Legislation) when contacting agents, and Realtor.ca's Terms of Service. Do not use collected data for spam, harassment, or any illegal purpose, and respect the personal information of agents and listing parties.

# Actor input Schema

## `mode` (type: `string`):

Choose what to collect: property listings (homes, condos, etc.) or real estate agent profiles.

## `location` (type: `string`):

City or area to search, e.g. "Toronto, ON" or "Vancouver, BC". Leave empty if using Start URLs below.

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

Paste one or more Realtor.ca URLs directly. Supports map views, search results, individual listings, and agent pages. When provided, these override the Location field.

## `transactionType` (type: `string`):

Search for properties to buy or to rent. Only applies when scraping property listings.

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

Type of property to search for.

## `priceMin` (type: `integer`):

Only include properties at or above this price. Leave empty for no minimum.

## `priceMax` (type: `integer`):

Only include properties at or below this price. Leave empty for no maximum.

## `bedroomsMin` (type: `integer`):

Only include properties with at least this many bedrooms. Leave empty for any.

## `bathroomsMin` (type: `integer`):

Only include properties with at least this many bathrooms. Leave empty for any.

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

Maximum number of results to collect. Set to 0 to collect all available results.

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

Proxy settings. Residential proxies are recommended for best results with Realtor.ca.

## Actor input object example

```json
{
  "mode": "properties",
  "location": "Toronto, ON",
  "transactionType": "buy",
  "propertyType": "residential",
  "maxResults": 200,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Table of scraped property listings or agent profiles.

## `details` (type: `string`):

Full details of each result with all 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 = {
    "mode": "properties",
    "location": "Toronto, ON",
    "transactionType": "buy",
    "propertyType": "residential",
    "maxResults": 200,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/realtorca-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 = {
    "mode": "properties",
    "location": "Toronto, ON",
    "transactionType": "buy",
    "propertyType": "residential",
    "maxResults": 200,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/realtorca-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 '{
  "mode": "properties",
  "location": "Toronto, ON",
  "transactionType": "buy",
  "propertyType": "residential",
  "maxResults": 200,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call solidcode/realtorca-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Realtor.ca Scraper| 💰 $0.5 / 1K",
        "description": "[💰 $0.5 / 1K] Extract property listings and real estate agent profiles from Realtor.ca. Search by location, filter by price, property type, bedrooms, and more. Collect detailed property data, photos, agent contact info, and social media links across Canada.",
        "version": "1.0",
        "x-build-id": "1ALbelTN1yvdDFcC3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~realtorca-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-realtorca-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~realtorca-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-realtorca-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~realtorca-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-realtorca-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": {
                    "mode": {
                        "title": "Scraping Mode",
                        "enum": [
                            "properties",
                            "agents"
                        ],
                        "type": "string",
                        "description": "Choose what to collect: property listings (homes, condos, etc.) or real estate agent profiles.",
                        "default": "properties"
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City or area to search, e.g. \"Toronto, ON\" or \"Vancouver, BC\". Leave empty if using Start URLs below."
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Paste one or more Realtor.ca URLs directly. Supports map views, search results, individual listings, and agent pages. When provided, these override the Location field.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "transactionType": {
                        "title": "Transaction Type",
                        "enum": [
                            "buy",
                            "rent"
                        ],
                        "type": "string",
                        "description": "Search for properties to buy or to rent. Only applies when scraping property listings.",
                        "default": "buy"
                    },
                    "propertyType": {
                        "title": "Property Type",
                        "enum": [
                            "residential",
                            "commercial",
                            "farm"
                        ],
                        "type": "string",
                        "description": "Type of property to search for.",
                        "default": "residential"
                    },
                    "priceMin": {
                        "title": "Minimum Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include properties at or above this price. Leave empty for no minimum."
                    },
                    "priceMax": {
                        "title": "Maximum Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include properties at or below this price. Leave empty for no maximum."
                    },
                    "bedroomsMin": {
                        "title": "Minimum Bedrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Only include properties with at least this many bedrooms. Leave empty for any."
                    },
                    "bathroomsMin": {
                        "title": "Minimum Bathrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Only include properties with at least this many bathrooms. Leave empty for any."
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of results to collect. Set to 0 to collect all available results.",
                        "default": 200
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. Residential proxies are recommended for best results with Realtor.ca.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
