Realtor.ca API Canada | Search | Page Details | Agents Scraper avatar

Realtor.ca API Canada | Search | Page Details | Agents Scraper

Pricing

from $1.00 / 1,000 listing records

Go to Apify Store
Realtor.ca API Canada | Search | Page Details | Agents Scraper

Realtor.ca API Canada | Search | Page Details | Agents Scraper

Canadian real estate agents and Realtor.ca listings in one actor. Get 89,000+ agents by province, city or brokerage with phone, brokerage and website, and email on 10,800+ when you turn emails on. Or pull sale, sold and rental listings from any Realtor.ca search link. JSON or CSV.

Pricing

from $1.00 / 1,000 listing records

Rating

5.0

(10)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

8

Bookmarked

264

Total users

11

Monthly active users

2.1 days

Issues response

3 days ago

Last modified

Features

Limited permissions

Share

Realtor.ca Scraper - Listings + Agents (Phone & Email)

Pull Canadian real-estate agent contacts instantly for 89,000+ Realtor.ca agents in all 10 provinces, Yukon and the Northwest Territories - phone, brokerage, website, areas served, and email on 10,800+ agents - or live-scrape listings anywhere in Canada. No login, no setup, no per-search cap.

Most Realtor.ca actors on Apify return property listings. This one also hands you the agents directly, with email on 10,800+ of them.

⚡ Instant Realtor.ca Agents - 89,000+ agents, all of Canada

The fastest way to get Realtor.ca agent contacts: skip scraping and get 89,000+ agents straight away - results in seconds, uncapped.

How to use it: in the ⚡ Instant Agents 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 per agent delivered, plus per email when you turn emails on (see Pricing).

Each agent includes: name, phone, brokerage (name + address), position (Salesperson / Broker), personal website, areas served, board, photo, and the Realtor.ca profile URL. Turn on dbHasEmail or enrichEmails to add the email where an agent has one.

Coverage: 89,000+ agents - 99.6% with a phone number, 50% with a personal website, 100% with a brokerage, 10,800+ with an email (about 12%). Covers all 1,657 Canadian postal-code areas (FSAs, the first 3 characters of a postal code). Top provinces: Ontario (46,000+), British Columbia (13,500+), Quebec (12,600+), Alberta (9,900+), plus every other province down to the Northwest Territories. Emails by province: Ontario 3,800+, British Columbia 2,700+, Quebec 1,900+, Alberta 1,400+.

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?

  • ✅ Agent contacts without scraping - 89,000+ agents with phone, 10,800+ with email, results in seconds
  • ✅ All 10 provinces, Yukon and the Northwest Territories covered, filterable by province / city / brokerage
  • ✅ 99.6% phone coverage — phone is the strongest single lead-gen field
  • ✅ Reliable live scraping - no login, no cookies, no setup
  • ✅ Live-scrape listings too — search any Realtor.ca map/search URL for property data
  • ✅ Emails when you want them - 10,800+ agent emails ready to deliver, billed only per email delivered
  • ✅ No login or API key needed - 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 Agents runs (set a Province) return one flat row per agent, in seconds. Live-scrape runs (a Realtor.ca map/search URL) return property listings with their agents.

Supported Inputs

Instant Agents filters (no URL needed)

FieldExampleNotes
dbProvinceON2-letter province code - turns on Instant Agents mode
dbCityTorontooptional: agents whose brokerage office is in this city (capitals, accents and dots don't matter, St = Saint; Montreal covers the whole island)
dbBrokerageRE/MAXoptional brokerage-name substring
dbHasPhonetrueonly agents with a phone (99.6% do)
dbHasEmailtrueonly agents with an email, and delivers it (billed per email)
dbHasWebsitetrueonly agents with a personal website
instantDatabasetrueforce Instant Agents mode

Provinces: ON QC BC AB MB SK NS NB NL PE YT NT NU

Live-scrape URL

URL typeExample
Realtor.ca map / searchhttps://www.realtor.ca/map#ZoomLevel=11&Center=43.65,-79.38&...&TransactionTypeId=2

Unsupported inputs

  • ❌ Realtor.ca content behind a login (saved searches, messaging)

Use Cases

AudienceUse case
Lead-gen teams / brokeragesPull thousands of Canadian agent phone contacts instantly by province or city
RecruitersBuild brokerage rosters filtered by province, city, or brokerage name
Proptech / CRMSeed a Canadian agent directory with phone + brokerage + website
Market analystsLive-scrape Realtor.ca listings for pricing and inventory data
Marketing agenciesDeliver client-ready Canadian real-estate agent lists without writing scrapers

How It Works

How the Realtor.ca Agents Scraper works

  1. Choose a mode - Instant Agents (province/city/brokerage filters) for agent contacts, or live scrape (a Realtor.ca map/search URL) for listings
  2. Instant Agents - matching agents come back in seconds, nothing to set up
  3. Live scrape - a map or search link returns every listing in that search, with its agent
  4. Output - one row per agent or listing, JSON or CSV

Input Configuration

Input fields

FieldTypeDefaultNotes
dbProvincestring—Instant Agents: 2-letter province code
dbCitystring—Instant Agents: brokerage office city, optional
dbBrokeragestring—Instant Agents: brokerage-name contains, optional
dbHasPhone / dbHasEmail / dbHasWebsitebooleanfalseInstant Agents filters
instantDatabasebooleanfalseForce Instant Agents mode
startUrlsarray—Realtor.ca map/search URLs (live scrape)
includeListingDetailsbooleanfalseFetch full detail per listing on a live scrape
enrichEmailsbooleanfalseDeliver emails: adds the email to agent rows where one exists, and looks up a contact email for live-scraped listings. Billed per email delivered (see Pricing)
maxItemsinteger100Cap on delivered rows
maxConcurrency / minConcurrency / maxRequestRetriesinteger10 / 1 / 3Live-scrape throughput
proxyobjectResidentialProxy configuration (live scrape only)

Common scenarios

1. Instant Agents - every agent in a province

{ "dbProvince": "BC", "maxItems": 1000 }

2. Instant Agents - 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:

EventPriceCharged when
Agent record$2.90 / 1kPer agent delivered
Listing record$1.00 / 1kPer property listing delivered on a live scrape
Contact email$0.052 / emailPer email delivered, only when dbHasEmail or enrichEmails is on - never charged when there is no email
Actor start$0.01Standard per-GB run-start charge

A run with neither email option on pays only for agents and listings. Example: 1,000 agents with dbHasEmail on cost $2.90 + $52.00 = $54.90.

Instant Agents runs 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

  • Agent (Instant Agents mode) - a flat agent row: name, phone, brokerage, website, position, areas, photo, profile URL, and the email when you turn emails on.
  • Live-scraped listing — a Realtor.ca property listing with its embedded agent.

Free-tier users receive the first 2 Instant Agents 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 Agents row:

{
"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

GroupFields
Identityagent_id, name, first_name, last_name, position, profile_url, photo_url
Contactphone, phone_area, phone_number, website, has_website, email (when dbHasEmail or enrichEmails is on)
Brokeragebrokerage_name, brokerage_id, brokerage_address, brokerage_phone, board
Locationprovince, city (brokerage office city), areas_served, languages

FAQ

What's the difference between Instant Agents mode and live scraping?

Instant Agents mode (dbProvince/dbCity/dbBrokerage) returns agents in seconds, with nothing to set up. Live scraping (startUrls) returns the current listings in a Realtor.ca search, each with its agent.

Do I get agent email addresses?

Yes, for 10,800+ agents (about 12%). Turn on dbHasEmail to get only agents with an email, or enrichEmails to keep every agent and add the email where there is one. Each delivered email costs $0.052; an agent with no email costs nothing extra.

Do I need a URL for Instant Agents mode?

No — just set a Province (and optionally city/brokerage) and leave startUrls empty.

Which provinces are covered?

All 10 provinces, plus Yukon and the Northwest Territories. Ontario, BC, Quebec and Alberta are the deepest; the territories are naturally sparse.

Do I need an account, cookies or my own proxies?

No. No login, cookies or API key needed, and the default proxy setup works out of the box.

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

See the full memo23 actor catalog →

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/realtor-canada-search-cheerio-ppe).

Purpose: Deliver Canadian real-estate agent contacts in seconds (Instant Agents mode) or live-scrape Realtor.ca listings with their agents.

Minimal input:

{ "dbProvince": "BC", "maxItems": 50 }

For live listing scraping instead, pass "startUrls": [{ "url": "https://www.realtor.ca/map#ZoomLevel=11&Center=43.65,-79.38&TransactionTypeId=2&PropertySearchTypeId=0&Currency=CAD" }] and leave the db* fields empty. Optional filters: dbCity, dbBrokerage, dbHasPhone, dbHasEmail, dbHasWebsite, includeListingDetails, monitoringMode, enrichEmails.

Output: one row per agent (Instant Agents) or per listing (live scrape) — agent_id, name, first_name, last_name, position, profile_url, photo_url, phone, phone_area, phone_number, website, has_website, email (when dbHasEmail or enrichEmails is on), brokerage_name, brokerage_id, brokerage_address, brokerage_phone, board, province, city, areas_served, languages.

Behaviors an agent should know:

  • Two modes: Instant Agents (set dbProvince, leave startUrls empty) returns agents in seconds; live scrape (startUrls map/search URL) returns listings with their agents. Setting a province turns on Instant Agents.
  • maxItems caps delivered rows (default 100); Instant Agents runs report the total matching count so you can size maxItems before a full pull.
  • monitoringMode (live scrape) delivers only listings unseen in a prior run, deduped via monitoringStoreName; recognised-and-skipped listings bill at $0.20/1k vs $1.00/1k for a delivered listing.
  • Emails are opt-in: dbHasEmail returns only agents with an email and includes it, enrichEmails keeps every agent and adds the email where one exists. Each delivered email is billed; an agent without one costs nothing extra.
  • Free-tier accounts get the first 2 Instant Agents records in full, then phone/email masked; paying accounts always get full contact info.
  • Billing (pay-per-event): agent record $2.90/1k, listing record $1.00/1k, contact email $0.052/email, plus the $0.01 actor-start charge.

⚠️ 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 public agent profile 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 list, 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