Realtor.ca Scraper| π° $0.5 / 1K
Pricing
from $0.50 / 1,000 results
Realtor.ca Scraper| π° $0.5 / 1K
[π° $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
Actor stats
1
Bookmarked
8
Total users
4
Monthly active users
7 days ago
Last modified
Categories
Share
Realtor.ca Scraper
Pull MLS-grade property listings and licensed real-estate agent profiles from Realtor.ca at scale β prices, full Canadian addresses, GPS coordinates, photos, brokerage details, parking, amenities, and social media links across every province and territory. One actor handles both for-sale and rental listings plus the realtor directory, so you can run market analytics and agent prospecting from a single configuration. Built for Canadian real estate investors, mortgage brokers, brokerage data teams, and CRM platforms that need fresh Realtor.ca data without standing up their own collection pipeline.
Why This Scraper?
- All 13 provinces and territories, every postal code β search any Canadian city, region, or paste a Realtor.ca map URL. No need to hand-build map coordinates or chase per-province endpoints.
- Two record types in one actor β switch the
modedropdown between Property Listings and Real Estate Agents. No second actor or second subscription. - Server-side filters that match Realtor.ca exactly β buy vs. rent, residential / commercial / farm, price min/max, minimum bedrooms, minimum bathrooms β every filter is forwarded to the official search so you only pay for matching results.
- Dense-area auto-subdivision (up to 6 levels deep) β Realtor.ca caps each query at 600 listings; the scraper recursively splits Toronto, Vancouver, and Montreal bounding boxes into quadrants until every listing is captured.
- Both Realtor.ca listing ID and MLS number on every property β link rows back to your existing brokerage feeds, KW Command, or Lone Wolf systems with no manual cross-walk.
- High-resolution photo URLs (every photo, not just the cover) β direct CDN paths to the full gallery for downstream image analysis or CRM enrichment.
- Four social media links per agent β Facebook, Instagram, LinkedIn, and Twitter/X URLs lifted from the agent's Realtor.ca card alongside name, phone, brokerage, designation, and personal website.
- Numeric and formatted prices side by side β
price("$1,249,900") for display pluspriceNumeric(1249900) for sorting, charting, and BI tools.
Use Cases
Real Estate Investment & Analysis
- Compare list 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 by postal-code prefix (FSA)
Lead Generation for Real Estate Services
- Build agent contact lists by city or province with phone, brokerage, and social links
- Prospect new licensees by sweeping the Real Estate Agents mode each month
- Identify the highest-volume brokerages in target markets via office-logo grouping
Market Research & Data Enrichment
- Track property-type mix (condos vs. detached vs. farm) by region
- Map listings on a heatmap using built-in GPS coordinates
- Enrich existing CRM rows with MLS number, listing URL, and agent contact
Relocation & Property Search
- Aggregate listings across multiple cities into one spreadsheet
- Compare provinces side-by-side for cost-of-living research
- Watch a custom map polygon (zoom into the area on Realtor.ca, paste the 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:
{"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"). Leave empty if using Start URLs |
startUrls | string[] | [] | Paste Realtor.ca URLs directly. Supports map views, search results, and agent pages. Overrides location when provided |
maxResults | integer | 200 | Maximum results to collect. Set to 0 for all available results |
Property Filters
These apply only in property mode and are forwarded to Realtor.ca's search endpoint.
| Parameter | Type | Default | Description |
|---|---|---|---|
transactionType | string | "buy" | Buy or Rent |
propertyType | string | "residential" | Residential, Commercial, or Farm |
priceMin | integer | β | Minimum price (CAD) |
priceMax | integer | β | Maximum price (CAD) |
bedroomsMin | integer | β | Minimum bedrooms (0β10) |
bathroomsMin | integer | β | Minimum bathrooms (0β10) |
Output
The actor writes 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,"address": "45 Broadview Ave","city": "Toronto","province": "Ontario","postalCode": "M4M 2E4","latitude": 43.6615,"longitude": -79.3522,"propertyType": "Single Family","buildingType": "House","ownershipType": "Freehold","bedrooms": 4,"bathrooms": 3,"sizeInterior": "2000 sqft","stories": "2","parkingSpaces": 2,"parkingType": "Garage","amenities": "Exercise centre, Party room","description": "Stunning renovated 4-bedroom home in the heart of Riverside...","photos": ["https://cdn.realtor.ca/listing/TS638..../high_res_1.jpg","https://cdn.realtor.ca/listing/TS638..../high_res_2.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": "12 days","listedDate": "2026-04-01T00:00:00Z"}
Core Fields
| Field | Type | Description |
|---|---|---|
listingId | string | Unique Realtor.ca listing ID |
mlsNumber | string | MLS listing number |
propertyType | string | "Single Family", "Condo", "Vacant Land", etc. |
buildingType | string | "House", "Apartment", "Row / Townhouse", etc. |
ownershipType | string | "Freehold", "Condominium/Strata", etc. |
bedrooms | integer | Number of bedrooms |
bathrooms | integer | Number of bathrooms |
sizeInterior | string | Interior size with unit (e.g. "2000 sqft") |
stories | string | Number of stories |
description | string | Full listing public remarks |
listingUrl | string | Direct link to the listing on Realtor.ca |
timeOnMarket | string | How long the listing has been active |
listedDate | string | First-listed date (ISO 8601) |
Address & Location
| Field | Type | Description |
|---|---|---|
address | string | Street address |
city | string | City name |
province | string | Province name |
postalCode | string | Canadian postal code (e.g. "M4M 2E4") |
latitude | number | GPS latitude |
longitude | number | GPS longitude |
Price & Inventory
| Field | Type | Description |
|---|---|---|
price | string | Formatted price (e.g. "$525,000") |
priceNumeric | integer | Price as a number for sorting and BI |
parkingSpaces | integer | Total parking spaces |
parkingType | string | "Underground", "Garage", "Visitor", etc. (multi-value) |
amenities | string | Building amenities (e.g. "Exercise centre, Party room") |
photos | string[] | All high-resolution photo URLs from the gallery |
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": "403-555-6789","office": "RE/MAX First","officeDesignation": "Brokerage","officeAddress": "123 Centre St SW, Calgary, AB T2G 1A1","officeLogo": "https://cdn.realtor.ca/organization/logo/12345.jpg","photo": "https://cdn.realtor.ca/individual/photo/67890.jpg","website": "https://www.michaelchenrealty.ca","profileUrl": "https://www.realtor.ca/agent/1234567/michael-chen","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 |
name | string | Agent's full name |
position | string | Role (e.g. "Salesperson", "Broker") |
phone | string | Direct phone number |
photo | string | Agent's profile photo URL |
website | string | Agent's personal website |
profileUrl | string | Profile page on Realtor.ca |
Brokerage
| Field | Type | Description |
|---|---|---|
office | string | Brokerage / office name |
officeDesignation | string | "Brokerage", "Independently Owned", etc. |
officeAddress | string | Office street address |
officeLogo | string | Office logo image URL |
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
- Anchor on a single city for fastest runs. "Toronto, ON" or "Vancouver, BC" returns within minutes; province-level queries trigger heavy bounding-box subdivision.
- Use the map URL trick for tight neighbourhoods. Zoom into the exact polygon on realtor.ca, copy the URL from the address bar, and paste it into
startUrls. The scraper readsLatitudeMax/LongitudeMinetc. directly from the URL hash. - Filter server-side, not after the fact.
priceMin,priceMax,bedroomsMin, andbathroomsMinare sent to Realtor.ca, so you only pay for matching listings instead of filtering a huge dump in your own pipeline. - For dense urban areas, leave
maxResultsgenerous. Each Realtor.ca query caps at 600 results β Toronto and downtown Vancouver routinely exceed this and need quadrant subdivision to capture every listing. - Sweep agents Canada-wide by leaving
locationempty inagentsmode. The directory then iterates across all provinces and territories without any per-region setup. - Both English and French listings appear in the same query. Realtor.ca returns Quebec listings with French descriptions in
description; pair them with the structured fields (price, bedrooms, postal code) for downstream translation. - Pair
mlsNumberwithlistingIdin your CRM. MLS numbers can be reused after a property re-lists, butlistingIdis unique per Realtor.ca record β use both as a composite key.
Pricing
$1.50 per 1,000 property results | $1.00 per 1,000 agent results
| Results | Properties | Agents |
|---|---|---|
| 100 | $0.15 | $0.10 |
| 1,000 | $1.50 | $1.00 |
| 10,000 | $15.00 | $10.00 |
| 100,000 | $150.00 | $100.00 |
A "result" is one property row or one agent row in the dataset. Apify platform fees (compute and storage) are billed separately based on your plan.
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.