Realtor.ca [Only $1] Scraper: Listings + Agent Database (Phone)
Pricing
from $1.00 / 1,000 listing records
Realtor.ca [Only $1] Scraper: Listings + Agent Database (Phone)
[Only $1/1k] Realtor.ca scraper with an instant agent database — pull 44,000+ Canadian agents by Province/City/Brokerage (phone + brokerage + website, uncapped, no scraping needed), or live-scrape listings (sale/sold/rental) across Canada. Pure API. JSON/CSV
Pricing
from $1.00 / 1,000 listing records
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Realtor.ca Scraper — Listings + Agent Database (Phone)
Pull Canadian real-estate agent contacts instantly from a pre-collected database of 44,000+ Realtor.ca agents across all 13 provinces & territories — phone, brokerage, website, areas served — or live-scrape listings anywhere in Canada. No CREA token juggling, no blocking, no per-search cap.
This is the only Realtor.ca scraper on Apify that ships an instant agent database. Every other Realtor.ca actor is a property/listings scraper — this one hands you the agents directly.
⚡ Instant Realtor.ca Agent Database — 44,000+ agents, all of Canada
The fastest way to get Realtor.ca agent contacts: skip scraping entirely and pull straight from our continuously-growing database of 44,663 agents — instant, uncapped, and nothing to get blocked.
How to use it: in the ⚡ Instant Database Mode section of the input, set a Province (2-letter code, e.g. ON, BC, AB) — optionally narrow by City or Brokerage, or filter to only agents with a phone, email or website on file — and run. Leave the live-scraping Start URLs empty. You're billed only per agent delivered.
Each database agent includes: name, phone, brokerage (name + address), position (Salesperson / Broker), personal website, areas served, board, photo, and the Realtor.ca profile URL.
Coverage: 44,663 agents — 99.6% with a phone number, 55% with a personal website, 100% with a brokerage. A postal-code-level sweep (down to the FSA — the first 3 characters of a Canadian postal code) across all 1,657 FSAs in the country. Realtor.ca hides agent emails behind a contact form, so email is available via optional enrichment (see Pricing). Top provinces: Ontario (19,742), Quebec (7,483), British Columbia (6,682), Alberta (5,407), plus every other province and territory down to Nunavut.
Need a whole province as a clean CSV, or pushed to your CRM via API? Reach out via the Support section below.
Why Use This Scraper?
- ✅ The only Realtor.ca agent database — 44,000+ agents with phone, instantly, no scraping needed
- ✅ All 13 provinces & territories covered, filterable by province / city / brokerage
- ✅ 99.6% phone coverage — phone is the strongest single lead-gen field
- ✅ Beats the CREA anti-bot wall — built-in token handshake, no external unblocker
- ✅ Live-scrape listings too — search any Realtor.ca map/search URL for property data
- ✅ Optional email enrichment — for the ~55% of agents with a website, plus name-based discovery
- ✅ Pure API — no headless browser; JSON or CSV out
Overview
This actor serves two audiences from one tool: lead-gen teams and brokerages who want Canadian agent contacts without scraping, and analysts and proptech teams who want Realtor.ca listing data.
Instant Database runs (set a Province) emit a flat agent row per agent, served from our store — no requests to Realtor.ca. Live-scrape runs (a Realtor.ca map/search URL) return property listings, and every listing's agent is harvested into the database as a byproduct.
Supported Inputs
Instant Database filters (no URL needed)
| Field | Example | Notes |
|---|---|---|
dbProvince | ON | 2-letter province code — triggers Instant Database mode |
dbCity | Toronto | optional city narrow |
dbBrokerage | RE/MAX | optional brokerage-name substring |
dbHasPhone | true | only agents with a phone (99.6% do) |
dbHasEmail | true | only agents with an enriched email |
dbHasWebsite | true | only agents with a personal website |
instantDatabase | true | force Instant Database mode |
Provinces: ON QC BC AB MB SK NS NB NL PE YT NT NU
Live-scrape URL
| URL type | Example |
|---|---|
| Realtor.ca map / search | https://www.realtor.ca/map#ZoomLevel=11&Center=43.65,-79.38&...&TransactionTypeId=2 |
Unsupported inputs
- ❌ Realtor.ca content behind a login (saved searches, messaging)
- ❌ Direct agent emails (Realtor.ca exposes only a contact form — use enrichment instead)
Use Cases
| Audience | Use case |
|---|---|
| Lead-gen teams / brokerages | Pull thousands of Canadian agent phone contacts instantly by province or city |
| Recruiters | Build brokerage rosters filtered by province, city, or brokerage name |
| Proptech / CRM | Seed a Canadian agent directory with phone + brokerage + website |
| Market analysts | Live-scrape Realtor.ca listings for pricing and inventory data |
| Marketing agencies | Deliver client-ready Canadian real-estate agent lists without writing scrapers |
How It Works

- Choose a mode — Instant Database (province/city/brokerage filters) for agent contacts, or live scrape (a Realtor.ca map/search URL) for listings
- Instant Database path — the actor queries our pre-collected store and returns matching agents in seconds; no requests to Realtor.ca at all
- Live-scrape path — the actor performs the CREA device-token handshake (beating the Incapsula anti-bot wall), calls Realtor.ca's own PropertySearch API, and paginates the results
- Agent harvesting — every listing carries its agent inline, harvested into the database (deduped by CREA IndividualID)
- Output — one row per agent or listing, JSON or CSV
Input Configuration
Input fields
| Field | Type | Default | Notes |
|---|---|---|---|
dbProvince | string | — | Instant Database: 2-letter province code |
dbCity | string | — | Instant Database: city, optional |
dbBrokerage | string | — | Instant Database: brokerage-name contains, optional |
dbHasPhone / dbHasEmail / dbHasWebsite | boolean | false | Instant Database filters |
instantDatabase | boolean | false | Force Instant Database mode |
startUrls | array | — | Realtor.ca map/search URLs (live scrape) |
includeListingDetails | boolean | false | Fetch full detail per listing on a live scrape |
enrichEmails | boolean | false | Opt-in email enrichment (billed separately, see Pricing) |
maxItems | integer | 100 | Cap on delivered rows |
maxConcurrency / minConcurrency / maxRequestRetries | integer | 10 / 1 / 3 | Live-scrape throughput |
proxy | object | Residential | Proxy configuration (live scrape only) |
Common scenarios
1. Instant Database — every agent in a province
{ "dbProvince": "BC", "maxItems": 1000 }
2. Instant Database — narrow by city and brokerage
{ "dbProvince": "ON", "dbCity": "Toronto", "dbBrokerage": "RE/MAX", "maxItems": 200 }
3. Live-scrape listings
{"startUrls": [{ "url": "https://www.realtor.ca/map#ZoomLevel=11&Center=45.50,-73.57&LatitudeMax=45.80&LongitudeMax=-73.27&LatitudeMin=45.20&LongitudeMin=-73.87&TransactionTypeId=2&PropertySearchTypeId=0&Currency=CAD" }],"includeListingDetails": false,"maxItems": 200}
Pricing
This actor uses Apify's pay-per-event pricing — you're billed only for what's delivered:
| Event | Price | Charged when |
|---|---|---|
| Agent record | $2.00 / 1k | Per agent delivered — Instant Database or live scrape |
| Listing record | $1.00 / 1k | Per property listing delivered on a live scrape |
| Email enrichment | $0.02 / email | Per email found via enrichEmails — never charged on a miss |
| Actor start | Apify platform rate | Standard per-GB run-start charge |
Instant Database queries report the total number of matching agents alongside the delivered rows, so you can see how many match your filters before raising maxItems.
Output Overview
- Database agent (Instant Database mode) — a flat agent row: name, phone, brokerage, website, position, areas, photo, profile URL.
- Live-scraped listing — a Realtor.ca property listing with its embedded agent.
Free-tier users receive the first 2 Instant Database records in full as proof of data quality; every record after that has its phone/email masked with an upgrade prompt. Paying users always receive full contact info.
Output Samples
Instant Database agent:
{"agent_id": "1970829","name": "MELISSA JOAN PERRY","first_name": "MELISSA JOAN","last_name": "PERRY","position": "Salesperson","phone": "416-494-7653","website": "http://www.facebook.com/melissaperryhomes","has_website": true,"brokerage_name": "RE/MAX HALLMARK REALTY LTD.","brokerage_address": "685 SHEPPARD AVE E #401 | TORONTO, Ontario M2K1B6","province": "ON","city": "Toronto","profile_url": "https://www.realtor.ca/agent/1970829/melissa-joan-perry-..."}
Key Output Fields
| Group | Fields |
|---|---|
| Identity | agent_id, name, first_name, last_name, position, profile_url, photo_url |
| Contact | phone, phone_area, phone_number, website, has_website, email (enriched) |
| Brokerage | brokerage_name, brokerage_id, brokerage_address, brokerage_phone, board |
| Location | province, city, areas_served, languages |
FAQ
What's the difference between Instant Database mode and live scraping?
Instant Database mode (dbProvince/dbCity/dbBrokerage) serves agents straight from our pre-collected store — no requests to Realtor.ca, results in seconds. Live scraping (startUrls) hits Realtor.ca directly for current listings.
Do I get agent email addresses?
Not directly — Realtor.ca deliberately hides agent emails behind a contact form (the API returns only a relay contact-id, never an @ address). Enable enrichEmails to discover an email for agents who list a personal website (~55%) or via name-based lookup. Enrichment is opt-in and billed only on success.
Do I need a URL for Instant Database mode?
No — just set a Province (and optionally city/brokerage) and leave startUrls empty.
Which provinces are covered?
All 13 — every province and territory. Ontario, BC, Quebec and Alberta are the deepest; the territories (YT/NT/NU) are naturally sparse.
How does it get past Realtor.ca's anti-bot protection?
The actor performs Realtor.ca's own CREA device-token handshake (challenge → solve → token), which authenticates against their Incapsula-protected API — no third-party unblocker needed.
Can I scrape private or login-gated content?
No. The actor only accesses publicly available Realtor.ca data.
JSON or CSV?
Both — export from your Apify dataset in whichever format you need.
Support
Found a bug or want a field added? Open an issue on the actor's Issues tab and we'll take a look.
Additional Services
Need a custom Canadian real-estate feed (full-province CSV, scheduled monitoring, a webhook/Sheets/DB push, or a tailored schema)? Reach out — custom scraping and data-pipeline work is available.
Explore More Scrapers
- Realtor.com Scraper — 200,000+ US agent instant database
- Redfin Scraper — US agent instant database (email & phone)
- Zillow Agents & Leads Scraper — 373,000+ US agent database
- Realtor.ca Scraper (rental) — Canadian listings, flat monthly pricing
See the full memo23 actor catalog →
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by The Canadian Real Estate Association (CREA), Realtor.ca, or any of their subsidiaries. All trademarks mentioned — including REALTOR® and Realtor.ca — are the property of their respective owners.
The scraper accesses only publicly available Realtor.ca pages and pre-collected public agent-directory data — no authenticated endpoints, paid features, or content behind a login wall. Users are responsible for ensuring their use complies with Realtor.ca's Terms of Use, applicable data-protection law (PIPEDA, GDPR, CCPA, etc.), and any contractual obligations of their own organization.
SEO Keywords
realtor.ca scraper, realtor.ca api, realtor.ca agent scraper, canadian real estate agent database, realtor.ca agent phone numbers, canada real estate leads, real estate agent contacts canada, realtor.ca listings scraper, canadian mls scraper, ontario real estate agents, bc real estate agents, real estate lead generation canada, brokerage roster scraper, realtor.ca bulk export, canada property data, realtor.ca json csv export