Realtor.ca Listings & Price Changes Scraper
Pricing
from $5.00 / 1,000 listing scrapeds
Realtor.ca Listings & Price Changes Scraper
Scrape public Realtor.ca Canadian MLS listings by city, map bounds, listing URL, or MLS#. Returns price, beds, baths, agents, photos, and price-change signals. Optional detail enrich and cross-run price monitor. Cookieless to the user. MCP-ready.
Pricing
from $5.00 / 1,000 listing scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What does Realtor.ca Listings & Price Changes Scraper do?
Scrape public Canadian MLS listings from Realtor.ca by city, map bounding box, map/listing URL, or MLS#. Each dataset row includes list price, beds/baths, address, agent/brokerage, photo URLs, and public price-change signals when Realtor.ca exposes them. Optional detail enrich pulls remarks and any public price history; optional monitor mode compares prices across scheduled runs. Runs on Apify with Residential proxy, scheduling, API/MCP access — cookieless to the user.
Why use it?
- Canadian market inventory for investors, agents, and proptech pipelines
- Price-drop monitoring without fabricating history (public labels + your own cross-run snapshot)
- MCP-ready inputs/outputs for AI agents (
apify--realtor-ca-listings-scraper) - Honest empty/block outcomes instead of hollow successes
Data fields
| Field | Description |
|---|---|
mlsNumber | MLS / Realtor.ca reference |
propertyId | Realtor.ca property ID |
listingUrl | Public listing URL |
price / priceDisplay | Numeric CAD price + display string |
address | Street, city, province, postal, raw text |
lat / lon | Coordinates when published |
bedrooms / bathrooms | Counts from building payload |
propertyType / buildingType / sqft | Type and size when present |
photoUrls / photoCount | Up to 20 photo URLs |
agentName / agentPhone / brokerageName | Listing contact |
priceChangeDetected | Public change and/or monitor diff |
previousPrice / newPrice / monitorDiff | Cross-run monitor fields |
priceHistory | Public detail history only (never invented) |
scrapedAt | ISO-8601 scrape time |
How to use
- Open the Actor in Apify Console and use the downtown Toronto map prefill, or set
city/startUrls/mlsNumbers. - Set
maxResults(prefill 5 for a cheap sample). EnableenrichDetailsand/ormonitorModeif needed. - Keep RESIDENTIAL proxy (required for Imperva).
- Run → download the dataset as JSON/CSV/Excel, or call via API/MCP.
Input
Provide at least one of: mapBoundingBox, city, startUrls, mlsNumbers. See the Input tab for full field help.
{"mapBoundingBox": {"LatitudeMin": 43.63,"LatitudeMax": 43.68,"LongitudeMin": -79.43,"LongitudeMax": -79.35,"ZoomLevel": 13},"transactionType": "for-sale","maxResults": 5,"enrichDetails": false,"monitorMode": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output example
{"mlsNumber": "C1234567","propertyId": "27891234","listingUrl": "https://www.realtor.ca/real-estate/27891234/123-example-st-toronto","price": 899000,"priceDisplay": "$899,000","address": {"street": "123 Example St","city": "Toronto","province": "Ontario","postalCode": "M5V2T6","text": "123 Example St|Toronto, Ontario M5V2T6"},"bedrooms": 2,"bathrooms": 2,"agentName": "Jane Agent","brokerageName": "Example Realty Inc.","priceChangeDetected": false,"priceHistory": [],"source": "property-search","scrapedAt": "2026-09-15T12:00:00.000Z"}
You can download the dataset in JSON, HTML, CSV, or Excel.
Pricing (PAY_PER_EVENT)
| Event | Price |
|---|---|
apify-actor-start | $0.00005 |
listing-scraped (primary) | $0.005 / listing |
listing-detail-enriched | $0.008 / enriched listing |
Platform usage is passed through to the run user. Example: 5 search listings ≈ $0.025 + start + Residential compute.
Honest scope & limitations
- Canada / Realtor.ca only — not Realtor.com (US).
- No fabricated price history —
priceHistoryis empty unless PropertyDetails exposes it; monitor mode only compares your prior snapshot. - Imperva + Residential — datacenter proxies usually fail; blocks finish as
UPSTREAM_FAILED/PARTIALwith truthful warnings. - Public listing fields only; no login, no private MLS feeds, no off-market data.
MCP
Expose as apify--realtor-ca-listings-scraper via Apify MCP. Input titles/descriptions are written for tool-calling agents.
Legal disclaimer
This Actor collects publicly available listing information from Realtor.ca for legitimate research, analysis, and automation. You are responsible for complying with Realtor.ca terms, applicable Canadian privacy/consumer laws, and your own data-use policies. Do not use scraped data for spam, harassment, or unauthorized solicitation. The Actor author is not affiliated with the Canadian Real Estate Association (CREA) or Realtor.ca.