Realtor.ca Scraper - Canada Real Estate, Agents & Leads
Pricing
from $0.70 / 1,000 property listings
Realtor.ca Scraper - Canada Real Estate, Agents & Leads
Scrape Realtor.ca homes for sale & rent across Canada: price, beds/baths, size, address & geo, full description, all photos, MLS#, plus listing agent & brokerage leads. Any city, map URL or MLS number. New-listing & price-drop alerts. Independent tool, not affiliated with CREA.
Pricing
from $0.70 / 1,000 property listings
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Realtor.ca Scraper - Canada Real Estate Listings, Agents & Leads
Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the Canadian Real Estate Association (CREA) or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "REALTOR.ca" is referenced only to describe the publicly available website this Actor collects data from.
Extract complete Realtor.ca real-estate data for any Canadian city, town, neighbourhood or map area: the listings and the people behind them. Every listing comes with its full description, every photo, price, beds/baths, size, year built, lot, community, address & geo, open houses, virtual tours and floor plans, MLS® number, plus the listing agent and brokerage as ready-to-use leads (name, phone, office, website). Search a whole metro, any place name, a map search with its filters, a point + radius, or exact MLS® numbers and listing links, and monitor a market for new listings and price drops.
No login, no API key, no browser: fast JSON extraction straight from Realtor.ca's own public listing data.
Why this Realtor.ca scraper?
Realtor.ca (operated by CREA) is the national real-estate portal of Canada. This actor completes every listing from its detail record and turns every listing into a lead:
| Data | This actor |
|---|---|
| Price, beds, baths, size (sq ft), property & building type, MLS# | ✅ |
| Full description and every high-res photo on every listing | ✅ |
| Address, postal code, community, neighbourhood, lat/long | ✅ |
| Year built, stories, lot size & frontage, parking, nearby & building amenities | ✅ |
| Open houses (dates & times), virtual tours, floor plans, brochures | ✅ |
| Any Canadian place name, not just a list of big cities | ✅ |
| Filters: price, beds, baths, property/building type, ownership, keywords, listed in the last N days, open houses only | ✅ |
| Listing agent: name, phone, website, photo, profile | ✅ |
| Brokerage: name, phone, fax, office address, website, logo | ✅ |
| Deduplicated agent-lead list with active listings, price range & lead score | ✅ |
| Optional full property facts: tax, condo fee, rooms, heating/cooling, basement, features, zoning, sale history | ✅ |
| New-listing & price-drop monitoring | ✅ |
| Whole-metro coverage past Realtor.ca's 600-per-search cap (automatic map tiling) | ✅ |
What you get
Every listing (Properties mode): id, mlsNumber, url, transactionType, price, priceFormatted, priceUnit (for listings priced per sq ft), leasePerTime, propertyType, buildingType, ownershipType, address, streetAddress, city, community, neighbourhood, province, postalCode, latitude, longitude, bedrooms (+ above/below grade), bathroomsTotal, halfBathrooms, storiesTotal, totalUnits (multi-unit buildings), sizeInterior, sizeInteriorSqft, floorArea, yearBuilt, buildingAge, lotSize, lotFrontage, parkingTotal, parkingType, amenitiesNearby, buildingAmenities, pool, publicRemarks (the full description), status, timeOnRealtor, listedDate, isNewListing, priceChangeDate, openHouses, virtualTourUrl, floorPlanUrl, mediaLinks, photoCount, primaryPhoto, photos, agents (each with brokerage), and the flattened listingAgentName, listingAgentPhone, listingAgentWebsite, brokerageName, brokeragePhone, brokerageWebsite and contactWebsite (the agent's site, else the brokerage's).
With "Enrich full property details" on, each listing also gets: taxAmount, maintenanceFee (+ frequency and what it includes), managementCompany, rooms (type, level, size), appliances, heating, heatingFuel, cooling, fireplace, basement (type, development, features), exteriorFinish, flooring, foundation, constructionStyle, water, sewer, utilities, features, communityFeatures, viewType, waterfront, zoning, crossStreets, lotDepth, saleHistory, priceChanges, assessmentHistory and the listingBoard.
Agents mode: one row per unique agent with name, position, phone, tollFreePhone, fax, website, photo, profileUrl, the brokerage's name/phone/fax/website/address/logo, cities, activeListings (for sale / for rent), minListingPrice / maxListingPrice / avgListingPrice, sample MLS numbers and listing links, contactWebsite (agent's site, else the brokerage's) and a 0-100 leadScore.
Use cases
- Real-estate lead generation: every listing carries the listing agent and brokerage with phone numbers, websites and office details. Run
Agentsmode for a clean, deduplicated agent/brokerage prospect list per market, ranked by lead score and listing volume. - Investing & market analysis: pull active inventory or rentals for a city, filter by price, beds, building type and ownership, and compare prices, rents, sizes and days-on-market across neighbourhoods.
- Pricing & inventory intelligence: track new listings, price cuts and rent levels for any Canadian market over time.
- New-listing & price-drop alerts: run in monitoring mode on a schedule to get only listings that are new or whose price/status changed since the last run. The first run returns the current listings up to your limit; after that you only get what is new or changed.
- Proptech, CRM, valuation & AI: feed clean, structured Canadian listings (with full descriptions and photos), geo and agent data straight into your own models, dashboards, CRM or LLM pipelines.
How to use
- Sign up for Apify: the free plan is enough to try this actor.
- Open the Realtor.ca Scraper, type one or more cities or places (e.g.
Toronto,Canmore,North Vancouver), pick For sale or For rent, and click Start. - Watch results stream into the dataset table and switch between the Listings, Photos & description, Full property details, Listing agents and Agent leads views.
- Export as JSON, CSV, Excel, XML or RSS, or pull results programmatically via the Apify API.
Input
{"mode": "properties","transactionType": "sale","searchCities": ["Toronto", "Canmore"],"buildingType": "house","priceMin": 500000,"priceMax": 1200000,"bedsMin": 3,"keywords": "pool, basement apartment","sort": "newest","maxResults": 500}
- mode:
properties(one record per listing, agent embedded) oragents(deduplicated agent/brokerage leads). - transactionType:
sale,rent, orall. - searchCities: any Canadian city, town, district or neighbourhood. 55+ major metros use a built-in metro-area box (Toronto, Vancouver, Calgary, Edmonton, Ottawa, Montreal, Halifax, Winnipeg, Quebec City and many more); every other name is looked up on Realtor.ca and searched inside its exact boundary. Add the province to an ambiguous name (
Springfield, MB). - startUrls: a realtor.ca map search (search your area, set any filters, copy the
…/map#…address: the area and the map's own filters are used), or listing links (https://www.realtor.ca/real-estate/…) to scrape those exact listings. urlsFromFile takes a pasted list or a linked file / Google Sheet of such URLs. - boundingBoxes: explicit
latMin,lngMin,latMax,lngMaxrectangles. centerPoints: alat,lng,radiusKmcatchment around a point. - mlsNumbers: look up exact listings by MLS® number (e.g.
W13874426). - propertyType / buildingType / ownershipType / priceMin / priceMax / bedsMin / bathsMin / keywords / listedSinceDays / openHouseOnly / sort: listing filters, all applied by Realtor.ca itself, so only matching listings are fetched and billed.
- enrichDetails (default off): add the full property facts (tax, condo fee, rooms, systems, features, history...).
- maxResults / maxResultsPerArea: global and per-area caps. Several areas share
maxResultsfairly. - subdivideLargeAreas / maxSubdivisionDepth: Realtor.ca returns at most 600 listings per search; busy areas are split into map tiles automatically for full coverage.
- monitorMode / monitorStoreName: emit ONLY new or changed (price/status) listings vs. the previous run; pairs with Schedules.
Output
One record per property (agent & brokerage embedded). A real listing, with the agent's personal details replaced by placeholders:
{"id": "30378014","mlsNumber": "A2350757","url": "https://www.realtor.ca/real-estate/30378014/34-kincora-drive-nw-calgary-kincora","transactionType": "For sale","price": 649000,"priceFormatted": "$649,000","propertyType": "Single Family","buildingType": "House","ownershipType": "Freehold","address": "34 Kincora Drive NW, Calgary, Alberta T3R1K8","city": "Calgary","community": "Kincora","neighbourhood": "Kincora","province": "Alberta","postalCode": "T3R1K8","latitude": 51.1581175,"longitude": -114.1266534,"bedrooms": 3,"bathroomsTotal": 3,"halfBathrooms": 1,"storiesTotal": 2,"sizeInterior": "1672.22 sqft","sizeInteriorSqft": 1672,"yearBuilt": 2003,"lotSize": "387 m2","lotFrontage": "10.94 m","parkingTotal": 4,"parkingType": "Concrete, Attached Garage (2)","amenitiesNearby": "Park, Playground, Schools, Shopping","publicRemarks": "!! Open House Saturday, October 10th @ 1-3pm !! Kincora is a thoughtfully designed community where green space and everyday convenience come…","status": "Active","timeOnRealtor": "3 hours ago","listedDate": "2026-10-07T22:15:54.333Z","isNewListing": true,"openHouses": [{ "start": "2026-10-10T13:00:00-06:00", "end": "2026-10-10T15:00:00-06:00", "description": "Oct 10/26 - 1:00 PM To 3:00 PM", "type": "in person" }],"virtualTourUrl": "https://unbranded.youriguide.com/34_kincora_dr_nw_calgary_ab/","photoCount": 42,"primaryPhoto": "https://cdn.realtor.ca/listings/TS639269937543370000/reb9/highres/7/A2350757_1.jpg","listingAgentName": "Agent Name","listingAgentPhone": "(403) 555-0100","brokerageName": "Real Broker","brokeragePhone": "(855) 623-6900","brokerageWebsite": "http://www.joinreal.com/","agents": [{"agentId": 1000000,"name": "Agent Name","position": "Associate","phone": "(403) 555-0100","website": "https://agent-website.example","profileUrl": "https://www.realtor.ca/agent/1000000/agent-name-...","brokerage": {"name": "Real Broker","phone": "(855) 623-6900","website": "http://www.joinreal.com/","address": "#700, 1816 CROWCHILD TRAIL NW, CALGARY, Alberta T2M3Y7","profileUrl": "https://www.realtor.ca/office/firm/291033/real-broker-700-1816-crowchild-trail-nw-calgary-alberta-t2m3y7"}}],"detailFetched": true,"detailEnriched": false,"searchArea": "Calgary","scrapedAt": "2026-10-08T01:46:05.797Z"}
In monitoring mode each listing also carries changeType (new / price_drop / price_increase / status_change) and previousPrice.
Good to know
- Some fields depend on the listing. Lot size and frontage exist for houses and land, condo fees for condos, open houses and virtual tours only when the agent added them. A missing value is
null: it means the listing does not publish it. - Full property facts vary by real-estate board. Every board publishes the description, photos and core facts; property tax, appliances and cross streets come from most boards outside Quebec, while Quebec listings carry fewer of those fields.
- Agent contact details: Realtor.ca publishes each agent's direct phone (plus fax and toll-free numbers where given) and website. It does not publish email addresses (agents are contacted through a form) and has no separate mobile-number field.
- Sold prices are not public on Realtor.ca.
saleHistoryandpriceChangesare filled only for the listings where Realtor.ca shows them. - Price units: some land and commercial listings are priced per square foot or per acre (
priceUnit); commercial rents show their period inleasePerTime. - Sale + rent with a price filter: sales and rentals are each filtered by their own price (sale price vs. monthly rent).
- Monitoring mode: the first run returns the current listings up to your limit; every later run returns only listings that are new since that first run (with a two-hour grace for listings Realtor.ca shows a little late), plus price and status changes. Each run checks every listing in the area (that is how price drops are found), so a large metro takes a minute or two even when nothing changed, and a run with nothing new costs nothing.
How much does it cost to scrape Realtor.ca?
This Actor uses Apify's pay-per-event pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:
- Property listing: each listing written to the dataset, with its full description, photos, address & geo, facts and the listing agent & brokerage.
- Property detail: once per listing when "Enrich full property details" is on (tax, condo fee, rooms, systems, features, history).
- Agent lead: each unique agent / brokerage lead in Agents mode.
The current price of each event is shown on the Pricing tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches. Nothing is charged for listings that are skipped by monitoring mode or that do not match your filters.
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API: start runs, fetch datasets and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python: official SDKs.
- Schedules: run it hourly or daily to monitor a market for new listings and price drops.
- Webhooks: trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/realtor-ca-scraper').call({mode: 'properties',transactionType: 'sale',searchCities: ['Toronto'],bedsMin: 3,monitorMode: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} Realtor.ca listings`);
Integrate with any app
Connect the dataset to 5,000+ apps, no code required:
- Make: multi-step automation scenarios.
- Zapier: push new listings or agent leads straight into your CRM.
- Slack: get notified when a monitored market gets new listings or price cuts.
- Google Drive / Sheets: auto-export every run to a spreadsheet.
- Airbyte: pipe results into your data warehouse.
- GitHub: trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. You can call this actor from Claude, ChatGPT or any agent framework through the Apify MCP server: ask your assistant to "find 3-bed houses under $900k in Calgary with a basement apartment and list the agents" and let it run this scraper for you.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready: AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server, with no account and no API key.
- Skyfire: agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
More scrapers from scrapesage
Build a complete property & local-market intelligence stack:
- Redfin Scraper: US listings, sold comps, Redfin Estimate & agent leads.
- Rightmove Scraper: UK for-sale & to-rent properties with agent leads.
- Rent.com Scraper: US apartment & rental listings with property-management leads.
- Property Finder Scraper: UAE/GCC real estate, off-plan projects & agent leads.
- FastExpert Scraper: US real-estate agent leads, stats & reviews.
- Craigslist Scraper: FSBO housing, real estate & classifieds with phone/email leads.
- Houzz Scraper: home-improvement pros, contacts and reviews.
Tips
- Small towns and neighbourhoods: just type the name (
Collingwood,Tofino,Le Plateau-Mont-Royal). For a hand-drawn area, paste a realtor.ca map URL or give a bounding box. - Whole-metro coverage: Realtor.ca returns at most 600 results per search. Keep
subdivideLargeAreason (default) so busy cities are tiled automatically, and raisemaxSubdivisionDepthfor exhaustive coverage of a large market. - Newest first: with a small
maxResults, you get the newest (or cheapest, priciest...) listings of the whole area, in the order you picked under "Sort by". - Agent prospecting: switch
modetoagentsfor a deduplicated agent/brokerage lead list with phone, office, price range and a lead score, best leads first. - Recurring monitoring: combine Schedules with
monitorModeto get only new listings and price drops. Use onemonitorStoreNameper market. - Proxies: keep the default. The actor uses datacenter proxies and switches to Canadian residential proxies on its own when Realtor.ca refuses a request.
FAQ
How do I scrape Realtor.ca for a specific city or town? Type it into searchCities (Toronto, Vancouver, Canmore, Moose Jaw…). Any Canadian place name works; for a custom area paste a realtor.ca map URL, a bounding box or a center point.
Can I get rentals? Yes: set transactionType to rent (or all for both). Price filters apply to the monthly rent for rentals.
Does every listing include the description and photos? Yes. Each listing is completed from its Realtor.ca detail record, so you get the full description and every high-resolution photo, not just the thumbnail from the search results.
Does it include the listing agent's contact? Yes: every listing carries the listing agent (name, direct phone, website, photo, profile link) and the brokerage (name, phone, fax, office address, website, logo). Run agents mode for a deduplicated agent-lead list.
Why is there a 600-result cap per search? That is Realtor.ca's own per-search limit. The actor works around it by splitting busy areas into smaller map tiles automatically.
Can I scrape specific listings? Yes: paste listing links into startUrls or MLS® numbers into mlsNumbers.
Can I export to Google Sheets, CSV or Excel? Yes: one click in the dataset view, or automatically on every run via the Google Drive integration.
How do I monitor new listings automatically? Turn on monitorMode and create a Schedule. Each run emits only listings that are new or changed since the last run, tagged with changeType. The first run returns the current listings (up to maxResults) and remembers them, and listings that were on Realtor.ca more than two hours before that first run never come back later as "new".
Is scraping Realtor.ca legal? This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws and Realtor.ca's terms.
A field is null: why? Some listings genuinely don't publish a lot size, condo fee, open house or amenity list. Fields are null only when the listing does not publish the data.
Data & lawful use
This Actor reads business and professional listings that the professionals themselves published to be found: names, roles, firms, ratings and the contact details shown on the public listing. Because those details belong to identifiable people, treat the output as personal data. If you are in the EU or UK you are the data controller for what you do with it: have a lawful basis (usually legitimate interest for B2B prospecting or market research), keep any outreach relevant to the professional's line of work, honour opt-outs and deletion requests, and do not use the output for spam.
Under Apify's Standard Actor Contract, which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.
Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the Canadian Real Estate Association (CREA) or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.
"REALTOR.ca" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official REALTOR.ca product, is not authorised or certified by the Canadian Real Estate Association (CREA), and does not distribute REALTOR.ca software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.
Need help?
Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome: this actor is actively maintained.