# Realtor.ca Scraper - Canadian MLS Listings (`lentic_clockss/realtor-ca-scraper`) Actor

Scrape Realtor.ca Canadian MLS listings by city. Extract for-sale and rental prices, beds, baths, sqft, MLS numbers, agents, and photos. A Realtor.ca / CREA API alternative for Excel, CSV, or JSON.

- **URL**: https://apify.com/lentic\_clockss/realtor-ca-scraper.md
- **Developed by:** [kane liu](https://apify.com/lentic_clockss) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 — Canadian MLS Listings

**Scrape Realtor.ca for-sale and rental listings by Canadian city — then download structured MLS data as Excel, CSV, or JSON.**

This Actor is a practical **Realtor.ca / CREA API alternative** for market research, investor screening, rental comps, and lead lists. Enter a city such as `Toronto, ON`, choose **For sale**, **For rent**, or **Both**, and get listing rows with MLS numbers, prices, beds, baths, size, agents, photos, and addresses.

- Pull **Canadian homes for sale** and **rentals** from [Realtor.ca](https://www.realtor.ca/)
- Resolve cities to map bounding boxes, then call CREA `PropertySearch_Post`
- Optionally enrich with **PropertyDetails** (remarks, extra photos)
- Filter by CAD price range — or paste a realtor.ca city URL
- Export to **Excel / CSV / JSON**, or connect Make, n8n, Zapier, Python, or MCP
- **Pay per event** — Actor start + each Dataset listing; no subscription

> **Worker URL is config, not code:** the Actor reads `WORKER_BASE_URL` from Actor environment variables (plus optional per-run `workerBaseUrl`). If you migrate the worker to a new host, update `WORKER_BASE_URL` (and `WORKER_AUTH` if the API key changes) in Apify Console — no Actor code change required. Set `WORKER_PROVIDES_PROXY=1` when the worker supplies its own `PROXY_URL`.

#### Free Apify plan limits (set by this Actor's developer)

| Limit | Free Apify plan | Paid Apify plan |
| --- | --- | --- |
| Runs of this Actor | **10** total | Unlimited |
| Results per run | Up to **200** (`maxResults`) | Up to schema max (**200**) |

These limits are set by the Actor developer, **not Apify**. Hitting the run cap finishes with a clear status message — it is not a platform bug. Upgrade to a paid Apify plan for unlimited runs.

***

### What does the Realtor.ca Scraper do?

It turns a Canadian city search on Realtor.ca into a clean Apify Dataset of MLS listings.

Under the hood, this thin Actor:

1. Validates input and mints an Apify **Canadian RESIDENTIAL** sticky `proxyUrl`
2. Calls the hosted Cloud Run scrape worker over HTTPS + API key
3. The worker resolves your city bbox, warms a stealth browser on Realtor.ca (Imperva-aware), and calls CREA `PropertySearch_Post` / `PropertyDetails` from page context
4. Pushes normalized Dataset rows (same field names as before: `country=CA`, `source=realtor.ca`, MLS fields, `scrapedAt`, …)

When `WORKER_PROVIDES_PROXY` is unset, Apify **Canadian RESIDENTIAL** proxy (country `CA`) is minted and passed to the worker. With `WORKER_PROVIDES_PROXY=1`, the worker uses its own `PROXY_URL` instead.

***

### What data can you extract from Realtor.ca?

| Data point | For sale | For rent |
| --- | :---: | :---: |
| Address / listing name | ✅ | ✅ |
| MLS number & listing ID | ✅ | ✅ |
| List price or rent (CAD) | ✅ | ✅ |
| Beds / baths / size | ✅ | ✅ |
| Property type & ownership | ✅ | ✅ |
| GPS coordinates | ✅ | ✅ |
| Listing URL & main image | ✅ | ✅ |
| Agent / office | ✅ | ✅ |
| Time on Realtor.ca | ✅ | ✅ |
| Public remarks (when enriched) | ✅ | ✅ |

Every Dataset row also includes `scrapedAt`, `country` = `CA`, and `source` = `realtor.ca`. A `RUN_SUMMARY` record in the key-value store reports counts and warnings.

***

### What you can do with it

#### 1. Scrape Canadian homes for sale in a metro

Enter a city like `Toronto, ON`, set listing type to **For sale**, and get structured rows with MLS number, price, beds, baths, size, agent, and a direct listing URL — ready for comps or investor shortlists.

#### 2. Scrape Canadian rentals

Set listing type to **For rent**. Rows include rent/price display, beds/baths, size, and agent/office when present.

#### 3. Cover sale and rent in one run

Set `listingType` to `both`. `maxResults` is split across sale and rent when both are selected.

#### 4. Feed Canadian MLS data into automations

Schedule the Actor and send the Dataset to Sheets, Slack, CRM, Make, n8n, Zapier, or an AI agent via Apify MCP / API.

***

### More Actors like this

Need **US Realtor.com**, **Zillow**, other country portals, or a different vertical? Use a **dedicated Actor** below for structured fields. Stay on **Realtor.ca Scraper** for Canadian MLS for-sale and rental listings.

#### Similar real estate scrapers

- [Realtor.com Scraper](https://apify.com/lentic_clockss/realtor-com-scraper)
- [Realtor.com Agents Scraper](https://apify.com/lentic_clockss/realtor-com-agents-scraper)
- [Zillow & Zumper Scraper](https://apify.com/lentic_clockss/us-real-estate-scraper)
- [Zillow Group Scraper](https://apify.com/lentic_clockss/zillow-group-scraper)
- [Apartments.com Rental Scraper](https://apify.com/lentic_clockss/apartments-com-rental-scraper)
- [Rightmove Scraper](https://apify.com/lentic_clockss/rightmove-property-scraper)
- [Idealista Scraper](https://apify.com/lentic_clockss/idealista-scraper)
- [realestate.com.au Scraper](https://apify.com/lentic_clockss/realestate-com-au-scraper)
- [PropertyGuru Scraper](https://apify.com/lentic_clockss/propertyguru-sg-scraper)
- [Funda Scraper](https://apify.com/lentic_clockss/funda-scraper)
- [ImmoScout24 Scraper](https://apify.com/lentic_clockss/immobilienscout24-scraper)
- [Bayut Scraper](https://apify.com/lentic_clockss/bayut-uae-scraper)

#### Prefer another specialized scraper?

If your target has a specialized Actor below, use that first — usually cheaper and more structured than a generic scrape.

**Jobs & Freelance**

- [LinkedIn Jobs Scraper](https://apify.com/lentic_clockss/linkedin-jobs-scraper)
- [Indeed Jobs Scraper](https://apify.com/lentic_clockss/indeed-jobs-scraper)
- [Upwork Jobs Scraper](https://apify.com/lentic_clockss/upwork-jobs-scraper)
- [Glassdoor Scraper](https://apify.com/lentic_clockss/glassdoor-scraper)
- [Fiverr Gigs Scraper](https://apify.com/lentic_clockss/fiverr-programming-tech-gigs-scraper)
- [Bayt Jobs Scraper](https://apify.com/lentic_clockss/bayt-scraper)

**E-commerce**

- [Walmart Product Scraper](https://apify.com/lentic_clockss/walmart-scraper)
- [Amazon Search Scraper](https://apify.com/lentic_clockss/amazon-search-results-collector)
- [Shopee Search Scraper](https://apify.com/lentic_clockss/shopee-search-scraper)
- [Etsy Scraper](https://apify.com/lentic_clockss/etsy-scraper)
- [SHEIN Product Scraper](https://apify.com/lentic_clockss/shein-scraper)
- [Temu Product Scraper](https://apify.com/lentic_clockss/temu-scraper)
- [Target Product Scraper](https://apify.com/lentic_clockss/target-scraper)
- [Allegro Scraper](https://apify.com/lentic_clockss/allegro-scraper)

**Travel & Stays**

- [Booking.com Hotels Scraper](https://apify.com/lentic_clockss/booking-hotels-scraper)
- [Airbnb Listings Scraper](https://apify.com/lentic_clockss/airbnb-listings-scraper)
- [Expedia Scraper](https://apify.com/lentic_clockss/expedia-scraper)
- [TripAdvisor Scraper](https://apify.com/lentic_clockss/tripadvisor-scraper)

**Social & Content**

- [YouTube Research Scraper](https://apify.com/lentic_clockss/youtube-research-scraper)
- [TikTok Scraper](https://apify.com/lentic_clockss/tiktok-scraper)
- [Reddit Scraper](https://apify.com/lentic_clockss/reddit-scraper)
- [YouTube Shorts Scraper](https://apify.com/lentic_clockss/youtube-shorts-scraper)

**Ads Intelligence**

- [Facebook Ad Library Scraper](https://apify.com/lentic_clockss/facebook-ad-library-scraper)
- [TikTok Ads Scraper](https://apify.com/lentic_clockss/tiktok-ads-top-ads-actor)

**Local & Maps**

- [Google Maps Scraper](https://apify.com/lentic_clockss/google-maps-scraper)

#### General tools

- [Stealth Web Scraper](https://apify.com/lentic_clockss/stealth-web-scraper)
- [Email Risk Validator](https://apify.com/lentic_clockss/email-risk-validator)
- [Phone Number Intelligence](https://apify.com/lentic_clockss/phone-number-intelligence)

→ See the full catalog in [Related Actors](#related-actors) below, or browse [apify.com/lentic\_clockss](https://apify.com/lentic_clockss).

***

### How to scrape Realtor.ca (no code required)

1. Click **Try for free**
2. Enter a location (`Toronto, ON` or `Vancouver, BC`)
3. Choose **For sale**, **For rent**, or **Both**
4. Optionally set max results and CAD price filters
5. Keep **Apify RESIDENTIAL** proxy enabled (Canada)
6. Click **Start** — open the **Dataset** tab when the run finishes

Start with `maxResults: 5–10` to verify the market, then scale up.

<details>
<summary>For developers: minimal input</summary>

```json
{
  "location": "Toronto, ON",
  "listingType": "sale",
  "maxResults": 10,
  "maxPrice": 1500000,
  "enrichDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "CA"
  }
}
```

</details>

***

### Pricing — how much does it cost to scrape Realtor.ca?

**Pay per event. No subscription.**

| Event | Price | When charged |
| --- | ---: | --- |
| `apify-actor-start` | **$0.005** | When a normal run starts (scaled by allocated memory GB) |
| `apify-default-dataset-item` (`result`) | **$2.50 / 1,000** ($0.0025 each) | Each listing written to the default Dataset |

**User pays platform usage costs: Yes** — compute, residential proxy, and other platform usage are billed to the user in addition to event charges.

**Example product charges (events only):**

| Scenario | Approx. event charge |
| --- | ---: |
| Canary: 10 listings | $0.005 + 10 × $0.0025 = **$0.030** |
| City scan: 100 listings | $0.005 + $0.25 = **$0.255** |
| 1,000 listings | $0.005 + $2.50 = **$2.505** |

Platform usage (especially residential proxy) is separate and depends on run duration and memory. Browser acquisition runs on Cloud Run, not inside Actor CU.

***

### Input

| Field | Description |
| --- | --- |
| `location` | City and province, e.g. `Toronto, ON` / `Saskatoon, SK`, or a realtor.ca city URL |
| `listingType` | `sale`, `rent`, or `both` |
| `propertyTypeGroup` | `residential`, `commercial`, or `all` (default `residential`) |
| `propertySearchType` | Residential subtype: `any`, `condo`, `vacant_land`, `multi_family`, etc. (default `any`; only with residential) |
| `maxResults` | 1–200 (default 20; free users capped at 200/run) |
| `minPrice` / `maxPrice` | Optional CAD filters |
| `enrichDetails` | Fetch PropertyDetails per listing (default `true`) |
| `detailConcurrency` | Parallel detail fetches 1–4 (default 2) |
| `maxDetailFailRatio` | Fail when detail errors exceed this ratio (default 0.5) |
| `applicationId` | Advanced CREA ApplicationId override (optional) |
| `proxyConfiguration` | Apify RESIDENTIAL CA when Actor mints proxy; ignored if `WORKER_PROVIDES_PROXY=1` |
| `workerBaseUrl` | Optional per-run worker origin override (Advanced) |

Open the **Input** tab in Console for the full form and tooltips.

***

### Output example

You can download the Dataset as **JSON, CSV, Excel, or HTML**.

```json
{
  "name": "123 King St W",
  "listingType": "sale",
  "mlsNumber": "C1234567",
  "city": "Toronto",
  "state": "ON",
  "listPrice": 899000,
  "currency": "CAD",
  "beds": "2 + 1",
  "baths": "2",
  "sqft": "900 sqft",
  "agentName": "Jane Smith",
  "listingUrl": "https://www.realtor.ca/real-estate/...",
  "source": "realtor.ca",
  "scrapedAt": "2026-07-17T00:00:00+00:00"
}
```

Core fields include `listingId`, `mlsNumber`, address/price/size/GPS, `listingUrl`, `imageUrl`, agent/office, and detail extras such as `descriptionText` when enrichment is enabled.

***

### Live View endpoints

When Standby / Live View is enabled, the Actor exposes a small OpenAPI surface for readiness and discovery:

| Endpoint | Purpose |
| --- | --- |
| `GET /` | Readiness / service info |
| `GET /health` | Health check |
| `GET /input-example` | Low-cost example input |
| `GET /openapi.json` | Deployed OpenAPI document |

Scraping still runs through a **normal Actor run** — Live View does not scrape Realtor.ca by itself.

***

### Connect from code

Actor ID: `lentic_clockss/realtor-ca-scraper`

```python
from apify_client import ApifyClient

client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("lentic_clockss/realtor-ca-scraper").call(
    run_input={
        "location": "Toronto, ON",
        "listingType": "sale",
        "maxResults": 10,
        "proxyConfiguration": {
            "useApifyProxy": True,
            "apifyProxyGroups": ["RESIDENTIAL"],
            "apifyProxyCountry": "CA",
        },
    }
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item.get("name"), item.get("listPrice"), item.get("listingUrl"))
```

Use the same Actor ID in Make, n8n, Zapier, or Apify MCP for AI-agent workflows.

***

### FAQ

#### Why did my free-plan run stop after 10 runs?

Free Apify plan users get **10 runs** of this Actor and **up to 200 results per run**. These limits are set by the Actor developer (not Apify). When you hit the run cap, the run finishes with a clear status message — it is not a platform bug. Upgrade to a paid Apify plan for unlimited runs.

#### Is there a free Realtor.ca / CREA API?

CREA / Realtor.ca does not offer a simple public listing API for bulk third-party export. This Actor gives you structured Canadian MLS data through Apify runs, Dataset exports, and integrations.

#### Can I scrape commercial or condo-only inventory?

Yes. Set `propertyTypeGroup` to `residential`, `commercial`, or `all`. For residential subtypes use `propertySearchType` (`condo`, `vacant_land`, `multi_family`, etc.). Commercial and `all` require `propertySearchType: any`. Each dataset row includes the requested `propertyTypeGroup` and `propertySearchType`.

#### Can I scrape both for-sale and rental listings?

Yes. Set `listingType` to `both`. `maxResults` is split across sale and rent when both are selected.

#### Why is a Canadian residential proxy required?

Realtor.ca sits behind Imperva and blocks many datacenter/direct IPs. Apify RESIDENTIAL with country `CA` is required for reliable runs.

#### Why might a dense metro return fewer than maxResults?

CREA search uses a map bounding box with an internal result cap (~600). The worker paginates within that cap and stops at `maxResults`. Very dense metros may need tighter price filters or smaller areas. Partial worker responses surface as warnings in `RUN_SUMMARY`.

#### How are unknown Canadian cities resolved?

Major metros use a versioned curated bbox table. Other Canadian cities are geocoded (Nominatim, Photon fallback) and expanded to an approximate map box.

#### Can I schedule daily Realtor.ca scrapes?

Yes. Create an Apify schedule with the same input and send the Dataset to Sheets, Slack, a CRM, or your pipeline.

#### Is it legal to scrape Realtor.ca?

Use this Actor for legitimate research and analysis only. Respect Realtor.ca / CREA terms of use and applicable law. Results may include publicly displayed listing information; do not use personal data without a lawful basis.

***

### Related Actors

All **77** public Actors from \[[lentic\_clockss](https://apify.com/lentic_clockss)]. Click a name to open the Store detail page.

#### Jobs & Freelance

- [LinkedIn Jobs Scraper](https://apify.com/lentic_clockss/linkedin-jobs-scraper)
- [Bayt Jobs Scraper](https://apify.com/lentic_clockss/bayt-scraper)
- [Fiverr Gigs Scraper](https://apify.com/lentic_clockss/fiverr-programming-tech-gigs-scraper)
- [Freelancer.com Scraper](https://apify.com/lentic_clockss/freelancer-scraper)
- [Glassdoor Scraper](https://apify.com/lentic_clockss/glassdoor-scraper)
- [Himalayas Jobs Scraper](https://apify.com/lentic_clockss/himalayas-jobs-scraper)
- [Indeed Jobs Scraper](https://apify.com/lentic_clockss/indeed-jobs-scraper)
- [Jobicy Remote Jobs Scraper](https://apify.com/lentic_clockss/jobicy-remote-jobs-scraper)
- [RemoteOK Jobs Scraper](https://apify.com/lentic_clockss/remoteok-all-jobs-scraper)
- [SEEK Jobs Scraper](https://apify.com/lentic_clockss/seek-scraper)
- [Upwork Jobs Scraper](https://apify.com/lentic_clockss/upwork-jobs-scraper)

#### Real Estate

- [Zillow & Zumper Scraper](https://apify.com/lentic_clockss/us-real-estate-scraper)
- [Realtor.com Scraper](https://apify.com/lentic_clockss/realtor-com-scraper)
- [99.co Scraper](https://apify.com/lentic_clockss/ninetynine-co-sg-scraper)
- [Realtor.com Agents Scraper](https://apify.com/lentic_clockss/realtor-com-agents-scraper)
- [Apartments.com Rental Scraper](https://apify.com/lentic_clockss/apartments-com-rental-scraper)
- [Bayut Scraper](https://apify.com/lentic_clockss/bayut-uae-scraper)
- [Craigslist Housing Scraper](https://apify.com/lentic_clockss/craigslist-housing-scraper)
- [Daft.ie Scraper](https://apify.com/lentic_clockss/daft-property-scraper)
- [Dot Property Scraper](https://apify.com/lentic_clockss/dot-property-th-scraper)
- [FINN.no Scraper](https://apify.com/lentic_clockss/finn-scraper)
- [Funda Scraper](https://apify.com/lentic_clockss/funda-scraper)
- [Hepsiemlak Scraper](https://apify.com/lentic_clockss/hepsiemlak-scraper)
- [Idealista Scraper](https://apify.com/lentic_clockss/idealista-scraper)
- [Immobiliare.it Scraper](https://apify.com/lentic_clockss/immobiliare-property-scraper)
- [ImmoScout24 Scraper](https://apify.com/lentic_clockss/immobilienscout24-scraper)
- [Naver Land Scraper](https://apify.com/lentic_clockss/naver-land-scraper)
- [OpenSooq Scraper](https://apify.com/lentic_clockss/opensooq-real-estate-scraper)
- [Otodom Scraper](https://apify.com/lentic_clockss/otodom-scraper)
- [Property Finder Scraper](https://apify.com/lentic_clockss/property-finder-uae-scraper)
- [PropertyGuru Scraper](https://apify.com/lentic_clockss/propertyguru-sg-scraper)
- [realestate.com.au Scraper](https://apify.com/lentic_clockss/realestate-com-au-scraper)
- [Realtor.ca Scraper](https://apify.com/lentic_clockss/realtor-ca-scraper)
- [Rightmove Scraper](https://apify.com/lentic_clockss/rightmove-property-scraper)
- [SeLoger Scraper](https://apify.com/lentic_clockss/seloger-property-scraper)
- [SUUMO Scraper](https://apify.com/lentic_clockss/suumo-property-scraper)
- [Zillow Group Scraper](https://apify.com/lentic_clockss/zillow-group-scraper)

#### E-commerce

- [Shopee Search Scraper](https://apify.com/lentic_clockss/shopee-search-scraper)
- [E-commerce Scraper](https://apify.com/lentic_clockss/ecommerce-scraper)
- [1688 Global Product Search Scraper](https://apify.com/lentic_clockss/1688-global-scraper)
- [Allegro Scraper](https://apify.com/lentic_clockss/allegro-scraper)
- [Amazon Search Scraper](https://apify.com/lentic_clockss/amazon-search-results-collector)
- [ASOS Product Scraper](https://apify.com/lentic_clockss/asos-scraper)
- [Cdiscount Product Scraper](https://apify.com/lentic_clockss/cdiscount-scraper)
- [Costco Product Scraper](https://apify.com/lentic_clockss/costco-scraper)
- [Coupang Product Scraper](https://apify.com/lentic_clockss/coupang-scraper)
- [Etsy Scraper](https://apify.com/lentic_clockss/etsy-scraper)
- [Lazada Scraper](https://apify.com/lentic_clockss/lazada-ph-search-results-collector)
- [MercadoLibre Scraper](https://apify.com/lentic_clockss/mercadolibre-scraper)
- [Mercari Japan Scraper](https://apify.com/lentic_clockss/mercari-scraper)
- [Rakuten Japan Scraper](https://apify.com/lentic_clockss/rakuten-scraper)
- [SHEIN Product Scraper](https://apify.com/lentic_clockss/shein-scraper)
- [Target Product Scraper](https://apify.com/lentic_clockss/target-scraper)
- [Temu Product Scraper](https://apify.com/lentic_clockss/temu-scraper)
- [Walmart Product Scraper](https://apify.com/lentic_clockss/walmart-scraper)

#### Travel & Stays

- [Booking.com & Airbnb Scraper](https://apify.com/lentic_clockss/booking-airbnb-scraper)
- [Agoda Scraper](https://apify.com/lentic_clockss/agoda-scraper)
- [Airbnb Listings Scraper](https://apify.com/lentic_clockss/airbnb-listings-scraper)
- [Booking.com Hotels Scraper](https://apify.com/lentic_clockss/booking-hotels-scraper)
- [Despegar Scraper](https://apify.com/lentic_clockss/despegar-scraper)
- [Expedia Scraper](https://apify.com/lentic_clockss/expedia-scraper)
- [Traveloka Scraper](https://apify.com/lentic_clockss/traveloka-scraper)
- [Travelstart Flights Scraper](https://apify.com/lentic_clockss/travelstart-scraper)
- [Trip.com Scraper](https://apify.com/lentic_clockss/trip-com-scraper)
- [TripAdvisor Scraper](https://apify.com/lentic_clockss/tripadvisor-scraper)

#### Social & Content

- [TikTok Scraper](https://apify.com/lentic_clockss/tiktok-scraper)
- [Reddit Scraper](https://apify.com/lentic_clockss/reddit-scraper)
- [YouTube Shorts Scraper](https://apify.com/lentic_clockss/youtube-shorts-scraper)
- [YouTube Research Scraper](https://apify.com/lentic_clockss/youtube-research-scraper)
- [Hacker News Scraper](https://apify.com/lentic_clockss/hacker-news-scraper)

#### Ads Intelligence

- [Facebook Ad Library Scraper](https://apify.com/lentic_clockss/facebook-ad-library-scraper)
- [Google Ads Transparency VN](https://apify.com/lentic_clockss/google-ads-transparency-center-vn)
- [TikTok Ads Scraper](https://apify.com/lentic_clockss/tiktok-ads-top-ads-actor)

#### Local & Maps

- [Google Maps Scraper](https://apify.com/lentic_clockss/google-maps-scraper)

#### General Tools

- [Stealth Web Scraper](https://apify.com/lentic_clockss/stealth-web-scraper)
- [Email Risk Validator](https://apify.com/lentic_clockss/email-risk-validator)
- [Phone Number Intelligence](https://apify.com/lentic_clockss/phone-number-intelligence)

→ Browse the full profile: [apify.com/lentic\_clockss](https://apify.com/lentic_clockss)

# Actor input Schema

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

Canadian city and province, e.g. 'Toronto, ON' or 'Saskatoon, SK'. Also accepts realtor.ca city URLs. Known metros use a curated bbox cache; other Canadian cities are geocoded automatically.

## `listingType` (type: `string`):

Scrape for-sale listings, rentals, or both.

## `propertyTypeGroup` (type: `string`):

Residential, commercial, or both groups (all splits maxResults across residential + commercial).

## `propertySearchType` (type: `string`):

Residential subtype filter (CREA PropertySearchTypeId). Only valid with propertyTypeGroup=residential. Use 'any' for commercial or all.

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

Maximum listings to collect (1–200; split evenly across sale and rent when listingType is both). Free Apify plan users are limited to 200 results per run and 10 total runs of this Actor — limits set by the Actor developer.

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

Optional minimum list price or rent in CAD.

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

Optional maximum list price or rent in CAD.

## `enrichDetails` (type: `boolean`):

Fetch PropertyDetails for each listing (remarks, extra photos when available).

## `detailConcurrency` (type: `integer`):

Parallel PropertyDetails fetches (1–4) on shared Camoufox cookies. Keep low under Imperva pressure.

## `maxDetailFailRatio` (type: `number`):

Fail the run when PropertyDetails failures exceed this ratio (after at least 2 attempts).

## `applicationId` (type: `string`):

Advanced: override CREA ApplicationId. Leave empty for default (1).

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

Apify RESIDENTIAL CA when the Actor mints proxyUrl (groups/country forced to CA). Ignored when Actor env WORKER\_PROVIDES\_PROXY=1 (worker uses its own PROXY\_URL).

## `workerBaseUrl` (type: `string`):

Override the Cloud Run worker origin for this run. Defaults to Actor env WORKER\_BASE\_URL. Use when testing a staging worker; production migrations should update WORKER\_BASE\_URL in Actor settings (no code change).

## Actor input object example

```json
{
  "location": "Toronto, ON",
  "listingType": "sale",
  "propertyTypeGroup": "residential",
  "propertySearchType": "any",
  "maxResults": 20,
  "enrichDetails": true,
  "detailConcurrency": 2,
  "maxDetailFailRatio": 0.5,
  "applicationId": "",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CA"
  },
  "workerBaseUrl": ""
}
```

# Actor output Schema

## `listings` (type: `string`):

Normalized Realtor.ca listing records.

## `runSummary` (type: `string`):

Location, listing type, counts, and timestamps for the run.

## `inputEcho` (type: `string`):

Normalized non-secret input for the run.

## `errorSummary` (type: `string`):

Structured failure details when input validation or acquisition fails.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "location": "Toronto, ON",
    "listingType": "sale",
    "propertyTypeGroup": "residential",
    "propertySearchType": "any",
    "maxResults": 20,
    "detailConcurrency": 2,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "CA"
    },
    "workerBaseUrl": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("lentic_clockss/realtor-ca-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "location": "Toronto, ON",
    "listingType": "sale",
    "propertyTypeGroup": "residential",
    "propertySearchType": "any",
    "maxResults": 20,
    "detailConcurrency": 2,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "CA",
    },
    "workerBaseUrl": "",
}

# Run the Actor and wait for it to finish
run = client.actor("lentic_clockss/realtor-ca-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "location": "Toronto, ON",
  "listingType": "sale",
  "propertyTypeGroup": "residential",
  "propertySearchType": "any",
  "maxResults": 20,
  "detailConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CA"
  },
  "workerBaseUrl": ""
}' |
apify call lentic_clockss/realtor-ca-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/WwwK9UPLhq4b1kvfg/builds/ORT7PkcQXW9jb2Ehy/openapi.json
