Realtor.ca Scraper| ๐ฐ $0.5 / 1K
Under maintenancePricing
from $0.50 / 1,000 results
Realtor.ca Scraper| ๐ฐ $0.5 / 1K
Under maintenance[๐ฐ $0.5 / 1K] Extract property listings and real estate agent profiles from Realtor.ca. Search by location, filter by price, property type, bedrooms, and more. Collect detailed property data, photos, agent contact info, and social media links across Canada.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
2
Bookmarked
60
Total users
13
Monthly active users
5 days ago
Last modified
Categories
Share
Realtor.ca Scraper
Pull MLS-grade property listings and licensed real-estate agent profiles from Realtor.ca โ asking prices, full Canadian addresses, GPS coordinates, building amenities, parking, brokerage details, agent phone numbers and social links, across every province and territory. One actor covers for-sale listings, rentals, and the realtor directory, so market analytics and agent prospecting run from a single configuration. Built for Canadian real estate investors, mortgage brokers, brokerage data teams, and CRM platforms that need current Realtor.ca data without building and maintaining a collection pipeline of their own.
Why This Scraper?
- Two record types, one actor โ flip the
modedropdown between Property Listings and Real Estate Agents. Listings and the licensed-agent directory come from the same run configuration, with no second actor or second subscription. - All 13 provinces and territories โ search any Canadian city or region by name, from Toronto to Whitehorse. No per-province setup and no hand-built map coordinates.
- Sale and rent in one schema, never confused โ every property row carries a
priceTypeofsaleorrent(100% of rows), so a rental row showing "$2,500/Monthly" can never be mistaken for a purchase price when you merge buy and rent runs into one table. - Compound bedroom counts handled the way Ontario boards write them โ a "3 + 1" listing arrives as
bedrooms: 4for filtering andbedroomsText: "3 + 1"so you keep the above-grade / below-grade split. On a Toronto run, 157 of 345 rows use the compound form. - Both the Realtor.ca listing ID and the MLS number on every property โ 100% fill on both, so rows join straight back to KW Command, Lone Wolf, or your own brokerage feed with no manual cross-walk.
- Building amenities as the board published them, not a checkbox โ full strings like "Security/Concierge, Recreation Centre, Exercise Centre, Party Room, Storage - Locker". It is a condo-market field, published board by board, and we measured it: 63% of Toronto rows, 43% of Vancouver's, 13% of Calgary's, and none in Montreal or Winnipeg, so you know which markets carry the column before you run.
- Agent contact block that actually contains contacts โ direct phone (99% of agent rows), full office street address (100%), personal website (43%), plus the agent's team or corporation name where they publish one.
- Four social profiles per agent โ Facebook, Instagram, LinkedIn, and Twitter/X URLs lifted straight from the agent's Realtor.ca card.
- Dense metros are not capped at 600 โ Realtor.ca limits any single query to 600 listings; this actor splits a busy city into progressively smaller map areas, up to 6 levels deep, so Toronto and downtown Vancouver keep producing past that ceiling.
Use Cases
Real Estate Investment & Analysis
- Compare asking prices across Canadian metros (Toronto vs. Calgary vs. Halifax)
- Track time-on-market by neighbourhood to spot softening segments
- Filter rentals by
priceMaxand bedroom count to model gross yield - Build comparable-listing tables grouped by postal-code prefix (FSA)
Lead Generation for Real Estate Services
- Build agent call lists by city with phone number, brokerage, and office address
- Prospect new licensees by re-running the Real Estate Agents mode each month
- Rank the highest-volume brokerages in a target market by office name
- Target team leaders specifically using the corporation / team name field
Market Research & Data Enrichment
- Track property-type mix (condos vs. detached vs. agricultural) by region
- Map listings on a heatmap using the built-in GPS coordinates
- Enrich existing CRM rows with MLS number, listing URL, and listing-agent contact
- Measure amenity prevalence (concierge, gym, party room) across a condo market
Relocation & Property Search
- Aggregate listings from several cities into one spreadsheet
- Compare provinces side by side for cost-of-living research
- Watch one exact neighbourhood by pasting its map URL
Getting Started
Search Properties in a City
Just a location โ defaults handle the rest.
{"mode": "properties","location": "Toronto, ON","maxResults": 100}
Filtered Buy Search
Combine price, bedroom, and bathroom filters:
{"mode": "properties","location": "Vancouver, BC","transactionType": "buy","propertyType": "residential","priceMin": 500000,"priceMax": 1500000,"bedroomsMin": 3,"bathroomsMin": 2,"maxResults": 200}
Rental Hunt with Price Cap
{"mode": "properties","location": "Montreal, QC","transactionType": "rent","priceMax": 2500,"bedroomsMin": 2,"maxResults": 100}
Find Real Estate Agents
{"mode": "agents","location": "Calgary, AB","maxResults": 50}
Custom Map Area
Zoom into a neighbourhood on Realtor.ca and paste the URL from your address bar:
{"mode": "properties","startUrls": ["https://www.realtor.ca/map#ZoomLevel=13&LatitudeMax=43.7&LongitudeMax=-79.3&LatitudeMin=43.6&LongitudeMin=-79.5"],"maxResults": 500}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | "properties" | Choose Property Listings or Real Estate Agents |
location | string | "Toronto, ON" | City and province, e.g. "Vancouver, BC". If both this and Start URLs are empty, the run falls back to Toronto, ON โ it does not sweep the whole country |
startUrls | string[] | [] | Realtor.ca map URLs and agent directory URLs (e.g. https://www.realtor.ca/realtors/on/toronto). Single-listing pages are not supported. Overrides location when provided |
maxResults | integer | 200 | Maximum results to collect. Set to 0 for everything available |
Property Filters
These apply only in property mode and are sent to Realtor.ca's own search, so you collect only matching rows.
| Parameter | Type | Default | Description |
|---|---|---|---|
transactionType | string | "buy" | Buy or Rent |
propertyType | string | "residential" | Residential, Commercial, or Farm / Agriculture |
priceMin | integer | โ | Minimum price (CAD) |
priceMax | integer | โ | Maximum price (CAD) |
bedroomsMin | integer | โ | Minimum bedrooms (0โ10) |
bathroomsMin | integer | โ | Minimum bathrooms (0โ10) |
Output
One row per result. Property Listings and Real Estate Agents have separate field sets.
Property Listing Example
{"listingId": "27045321","mlsNumber": "E9345812","price": "$1,249,900","priceNumeric": 1249900,"priceType": "sale","address": "45 Broadview Ave","city": "Toronto (Riverdale)","province": "Ontario","postalCode": "M4M2E4","latitude": 43.6615,"longitude": -79.3522,"propertyType": "Single Family","buildingType": "House","ownershipType": "Freehold","bedrooms": 5,"bedroomsText": "4 + 1","bathrooms": 3,"sizeInterior": "1959.95 sqft","stories": "2","parkingSpaces": 2,"parkingType": "Garage","amenities": "Exercise Centre, Party Room, Storage - Locker","photos": ["https://cdn.realtor.ca/listing/TS638.../highres_1.jpg"],"agentName": "Jane Smith","agentPhone": "(416) 555-1234","agentOffice": "Royal LePage Premium","listingUrl": "https://www.realtor.ca/real-estate/27045321/45-broadview-ave-toronto","timeOnMarket": "24 min ago","listedDate": "2026-08-10T18:33:20Z"}
Property Identity
| Field | Type | Description |
|---|---|---|
listingId | string | Unique Realtor.ca listing ID |
mlsNumber | string | MLS listing number |
listingUrl | string | Direct link to the listing on Realtor.ca |
propertyType | string | "Single Family", "Vacant Land", "Agriculture", "Retail", etc. |
buildingType | string | "House", "Apartment", "Row / Townhouse", etc. |
ownershipType | string | "Freehold", "Condominium/Strata", etc. |
timeOnMarket | string | How long the listing has been live, as Realtor.ca phrases it |
listedDate | string | First-listed date and time (ISO 8601) |
Address & Location
| Field | Type | Description |
|---|---|---|
address | string | Street address, including unit number where the board publishes one |
city | string | City or municipality. Quebec and Ontario boards often append the neighbourhood, e.g. "Toronto (Riverdale)" |
province | string | Province or territory name |
postalCode | string | Canadian postal code |
latitude | number | GPS latitude |
longitude | number | GPS longitude |
Price
| Field | Type | Description |
|---|---|---|
price | string | Price as displayed. Rentals keep their "/Monthly" suffix |
priceNumeric | integer | Same value as a number, for sorting and charting |
priceType | string | sale or rent โ which kind of price this row carries |
Size, Rooms & Building
| Field | Type | Description |
|---|---|---|
bedrooms | integer | Total bedrooms. Compound counts such as "4 + 1" are summed to 5 |
bedroomsText | string | The count exactly as the board wrote it, e.g. "4 + 1" |
bathrooms | integer | Total bathrooms, compound counts summed the same way |
sizeInterior | string | Interior size with its unit. Boards publish either imperial ("1404 sqft") or metric ("139.3534 m2") |
stories | string | Number of stories. Published by some boards only |
parkingSpaces | integer | Total parking spaces |
parkingType | string | "Underground", "Garage", "Visitor", etc. (multi-value) |
amenities | string | Building amenities as published, e.g. "Exercise Centre, Party Room, Storage - Locker". Published board by board, so fill swings by market: 63% of Toronto rows, 43% of Vancouver's, 13% of Calgary's, and none in Montreal or Winnipeg |
photos | string[] | Listing cover photo at full resolution. Realtor.ca's search results carry the cover image only, so this is one URL per row |
Listing Agent
| Field | Type | Description |
|---|---|---|
agentName | string | Listing agent's name |
agentPhone | string | Listing agent's phone, formatted |
agentOffice | string | Listing brokerage / office name |
Agent Profile Example
{"individualId": "1234567","name": "Michael Chen","position": "Salesperson","phone": "416-555-6789","office": "RE/MAX First Realty","officeDesignation": "Brokerage","corporationName": "MRKT Group","officeAddress": "123 Bay St, Toronto, ON M5J 2T3","officeLogo": "https://cdn.realtor.ca/organizations/.../lowres/1242191.jpg","photo": "https://cdn.realtor.ca/individual/.../photo.jpg","website": "https://www.michaelchenrealty.ca","profileUrl": "https://www.realtor.ca/agent/1234567/michael-chen-123-bay-st-toronto-ontario-m5j2t3","facebook": "https://www.facebook.com/michaelchenrealty","instagram": "https://www.instagram.com/michaelchenrealty","linkedin": "https://www.linkedin.com/in/michael-chen-realty","twitter": "https://www.twitter.com/mchenrealty"}
Agent Identity & Contact
| Field | Type | Description |
|---|---|---|
individualId | string | Realtor.ca agent ID โ always present |
name | string | Agent's full name โ always present |
profileUrl | string | Agent's profile page on Realtor.ca โ always present |
phone | string | Direct phone number, on virtually every card |
website | string | Agent's personal website, where they publish one (roughly 4 in 10) |
photo | string | Agent's headshot URL, where they publish one. How many do varies by market, from about half a city's agents to nearly all of them |
position | string | Role, e.g. "Salesperson" or "Broker". Published board by board โ common in Ontario, absent in some Atlantic and Prairie markets |
Brokerage
| Field | Type | Description |
|---|---|---|
office | string | Brokerage / office name โ always present |
officeAddress | string | Office street address โ always present |
officeLogo | string | Office logo image URL, on most cards (7 to 8 in 10) |
corporationName | string | The agent's own team or corporation name, e.g. "MRKT Group", where they registered one |
officeDesignation | string | Brokerage designation. An Ontario-board field: filled on about 99% of Toronto and Ottawa cards and on almost none elsewhere in Canada |
Social Media
| Field | Type | Description |
|---|---|---|
facebook | string | Facebook profile URL |
instagram | string | Instagram profile URL |
linkedin | string | LinkedIn profile URL |
twitter | string | Twitter / X profile URL |
Tips for Best Results
- Name one city per run. "Toronto, ON" or "Vancouver, BC" finishes quickly. Leaving
locationempty does not sweep Canada โ the run falls back to Toronto, so cover several regions by queueing one run per city or province, or by pasting several agent directory URLs intostartUrls. - Set
maxResultsto 0 when you want a whole city. A capped run in a large metro fills from one part of the map before moving on, so a 300-row cap on Toronto gives you a slice of the city rather than an even spread across it. Uncapped runs cover the full area. - Read
bedroomsTextbefore you trust a bedroom count in the GTA. Ontario boards write "4 + 1" for a four-bedroom house with a finished basement bedroom.bedroomsgives you 5 for filtering, andbedroomsTexttells you one of those rooms is below grade โ a strong signal for in-law suites and rental potential. - Filter before you collect, not after.
priceMin,priceMax,bedroomsMin, andbathroomsMingo to Realtor.ca directly, so you pay only for matching rows instead of trimming a large dump on your side. - Use the map URL for a tight neighbourhood. Zoom to the exact area on realtor.ca, copy the URL from your address bar, and paste it into
startUrls. The map corners come straight from that link, so you get the polygon you drew and nothing outside it. - Split sale from lease with
priceType. If you merge a buy run and a rent run into one table, sort or group onpriceTypeโ$2,500/Monthlyand$2,500,000sit in the samepricecolumn otherwise. - Key your CRM on
listingId, join onmlsNumber. MLS numbers get reused when a property re-lists;listingIdstays unique per Realtor.ca record, so use both together as a composite key.
Pricing
From $0.50 per 1,000 results โ one flat rate for property rows and agent rows alike, and it is the same rate on every Apify discount tier, so a free-plan run costs exactly what a Gold-tier run costs.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.05 | $0.05 | $0.05 | $0.05 |
| 1,000 | $0.50 | $0.50 | $0.50 | $0.50 |
| 10,000 | $5.00 | $5.00 | $5.00 | $5.00 |
| 100,000 | $50.00 | $50.00 | $50.00 | $50.00 |
A "result" is one property row or one agent row in your dataset. There are no compute or time-based charges โ you pay per result, plus a small fixed fee each time a run starts. Standard Apify platform fees apply on top.
Integrations
Export results in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n โ Workflow automation
- Google Sheets โ Direct spreadsheet export
- Slack / Email โ Notifications when new listings appear
- Webhooks โ Trigger downstream APIs on run completion
- Apify API โ Full programmatic access
Legal & Ethical Use
This actor is intended for legitimate real estate research, market analysis, and prospecting. You are responsible for complying with applicable Canadian privacy laws (PIPEDA and provincial equivalents), CASL (Canada's Anti-Spam Legislation) when contacting agents, and Realtor.ca's Terms of Service. Do not use collected data for spam, harassment, or any illegal purpose, and respect the personal information of agents and listing parties.