Canadian real estate, Realtor.ca
Realtor.ca API options: DDF®, board feeds and public listings
REALTOR.ca has no public API. Listing data reaches other websites through REALTOR.ca DDF®, which CREA runs for REALTORS® and broker owners, and through local board feeds. If you are neither, the remaining route is the public listing results anyone can see, which this site's Actor returns at $0.001 per listing. Here is who can use each route and what it gives you.
- No public API
- DDF® for members
- Public listings: $1 per 1,000
- 18 cities, newest first
The short answer
CREA describes REALTOR.ca DDF® as "a managed service for REALTORS® and broker owners who are looking to share listings with multiple third-party websites". Developers can join as DDF® technology providers, but only to build websites for REALTORS® (REALTOR.ca DDF® technology providers, both read October 6, 2026). There is no self-serve API key for anyone else.
Your options
| Route | Who can use it | What you get | Cost |
|---|---|---|---|
| REALTOR.ca DDF®, member feeds | REALTORS® and broker owners | Your own and your brokerage's listings, plus the National Shared Pool of participating brokerages (Quebec and Manitoba boards don't take part in the pool) | Through CREA membership; ask CREA |
| REALTOR.ca DDF®, technology providers | Companies that build websites for REALTORS®, under a data access agreement | The feeds of the members they work for; "Technology providers can build personal websites for REALTORS® only" | A $1,500 onboarding fee, then tiers by number of feeds |
| Local board or association feeds (IDX, VOW) | Members of that board and their vendors | IDX for advertising each other's listings; VOW feeds "often include private remarks and sold prices", under their own rules | Set by each board |
| Public listing results (this Actor) | Anyone | Active listings for sale or rent in 18 cities, up to about 500 per city per run, newest first | $0.001 per listing, plus a run start fee |
If you are a member, or build sites for members, DDF® is the right route: it is CREA's own feed, with rules about how the listings may be shown. VOW feeds from local boards are where sold prices usually are, under each board's rules. For research, alerts or analysis on what is publicly listed right now, the public results are the practical option.
The public-listings route
The Realtor.ca Property Scraper reads the listing results REALTOR.ca shows any visitor and returns one row per active listing: MLS® number, asking price, beds, baths, interior size, property and ownership type, address, postal code, coordinates, listing date, photo, the listing link and the listing agent with brokerage and phone. It searches 18 cities only (Toronto, Mississauga, Brampton, Vaughan, Markham, Oakville, Hamilton, Ottawa, London, Vancouver, Surrey, Burnaby, Victoria, Calgary, Edmonton, Montreal, Winnipeg and Halifax), up to about 500 listings per city per run, newest first, so a big market returns its most recent listings rather than the whole market. The listings scraper guide has every field, the inputs and the setup.
What none of the public routes give you
- Sold prices and price history. The Actor returns active listings only. Sold prices come through board feeds, under board rules.
- Agent emails. REALTOR.ca doesn't publish them; rows carry the agent's name, brokerage and phone.
- Every listing in Canada. The Actor covers 18 cities and caps each one per run.
What it costs
| Event | Price | Charged for |
|---|---|---|
| Listing saved | $0.001 | Each listing saved to your dataset |
| Run start | $0.002 | Once per run at the default 1 GB of memory (one event per GB) |
All 18 cities at about 500 listings each is up to 9,000 listings: $9.00 plus the run start. Set the run's maximum cost to at least that before a run that size, or it stops early. Two other Realtor.ca Actors list similar per-listing prices on 2026-10-15: igolaizola/realtor-canada-scraper-ppe at $0.001 per listing on Free plus $0.0005 per run, and scrapemind/realtor-ca-scraper at $0.00099 on Free. Compare their inputs: if you need a city outside our 18, another Actor may cover it. More example code for the Realtor.ca Property Scraper is in the realtor-ca-data repository on GitHub.
Use it from an AI assistant
The Realtor.ca Property Scraper works as a tool in ChatGPT, Claude, Cursor and VS Code through Apify's hosted MCP server. Add this URL as a custom connector and sign in with your Apify account; runs bill to that account. Then ask in plain English, for example "get the 200 newest for-sale listings in Ottawa and give me the median asking price by bedrooms".
https://mcp.apify.com/?tools=fetch-actor-details,yugenox/realtor-ca-property-scraperclaude mcp add --transport http yugenox-realtor-ca-listings "https://mcp.apify.com/?tools=fetch-actor-details,yugenox/realtor-ca-property-scraper"The AI setup guide walks through each client; use this URL in place of the YouTube or Instagram one.
Run it from code
The 100 newest for-sale listings in Calgary and Edmonton: 200 listings, $0.20 plus the run start.
// Save as run.mjs, then: npm i apify-client && APIFY_TOKEN=... node run.mjs
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('yugenox/realtor-ca-property-scraper').call({
locations: [
"Calgary, AB",
"Edmonton, AB"
],
limitPerLocation: 100,
transactionType: "sale",
propertyType: "residential"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) console.log(item.mlsNumber, item.priceValue, item.cityProvince);import os
from apify_client import ApifyClient # pip install apify-client
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("yugenox/realtor-ca-property-scraper").call(run_input={
"locations": ["Calgary, AB", "Edmonton, AB"],
"limitPerLocation": 100,
"transactionType": "sale",
"propertyType": "residential",
})
if run is None:
raise RuntimeError("Run did not finish")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item.get("mlsNumber"), item.get("priceValue"), item.get("cityProvince"))# Small jobs: runs the Actor and returns the rows in one call (up to 5 minutes).
curl -X POST "https://api.apify.com/v2/acts/yugenox~realtor-ca-property-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"locations":["Calgary, AB","Edmonton, AB"],"limitPerLocation":100,"transactionType":"sale","propertyType":"residential"}'Not affiliated with or endorsed by The Canadian Real Estate Association (CREA) or REALTOR.ca. MLS® and Multiple Listing Service® are trademarks owned by CREA, and REALTOR® is a trademark controlled by CREA.
Questions people ask
Does Realtor.ca have a public API?
No. REALTOR.ca DDF® is CREA's listing feed for REALTORS®, broker owners and technology providers building their websites. Everyone else can use the public listing results.
How do I get a DDF® feed?
As a REALTOR® or broker owner, through CREA's DDF® member tools. As a developer, by applying to become a DDF® technology provider, which carries a $1,500 onboarding fee and limits you to building websites for REALTORS®.
Can I get sold prices from an API?
Not from DDF® or from this Actor. VOW feeds from local boards often include sold prices, under the board's rules for its members.
How do I get MLS® listings without being a REALTOR®?
Use the public listing results REALTOR.ca shows any visitor. This Actor returns them for 18 cities at $0.001 per listing.
Which cities does the Actor cover?
Toronto, Mississauga, Brampton, Vaughan, Markham, Oakville, Hamilton, Ottawa, London, Vancouver, Surrey, Burnaby, Victoria, Calgary, Edmonton, Montreal, Winnipeg, Halifax. Write Montreal without the accent.
Run it on your own data
Open the Realtor.ca Property Scraper on Apify, pick your cities and press Start. You pay per listing from your own Apify account, with no subscription to us.
Last updated 2026-10-15.