Royal LePage Listings Scraper — Canada MLS & Photos avatar

Royal LePage Listings Scraper — Canada MLS & Photos

Pricing

from $1.96 / 1,000 royal lepage property records

Go to Apify Store
Royal LePage Listings Scraper — Canada MLS & Photos

Royal LePage Listings Scraper — Canada MLS & Photos

Scrape Royal LePage listings across Canada: CAD price, MLS number, address, beds, baths, photos, rooms and brokerage. USD 2.44 per 1,000 listings.

Pricing

from $1.96 / 1,000 royal lepage property records

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Share

Royal LePage Listings Scraper exports public Royal LePage property listings across Canada: asking price in CAD, MLS number, address, property type, bedrooms, bathrooms, description, photos, feature table, room sizes and brokerage. It costs USD 2.44 per 1,000 listings on the FREE tier (USD 0.002444 per listing), and you pay only for listings saved to your dataset.

It is built for Canadian investors, agents, proptech teams and researchers who track new listings in a city, and for AI agents that need structured Canadian listing data.

What does the Royal LePage listings scraper return?

One record per listing, deduplicated by Royal LePage listing ID. Missing values are null, empty arrays or empty objects.

FieldWhat you get
listingId, mlsNumber, url, titleRoyal LePage ID, MLS® number, listing link and address headline
price, priceCurrencyAsking price as a number, in CAD
status, transactionType, propertyTypeFlag such as "new listing", sale or rent, House / Apartment / Townhouse
streetAddress, city, province, postalCode, countryLocation
latitude, longitudeCoordinates as published on the page
bedrooms, bathroomsCounts from the listing
description, datePostedProperty remarks and posting date
imageUrl, imageUrlsMain photo and up to 100 photo URLs
featuresLabel-to-value map, for example Heating Type, Floor Space, Parking
roomsRoom name, level, and metric and imperial dimensions
brokerageListing brokerage
sourceUrl, scrapedAt, detailLevelSource search page, time, and full or summary

The run also writes SUMMARY with the outcome (DATA, EMPTY, BLOCKED, FAILED or REJECTED), records delivered and charged, stop reason, collection pages visited, failed requests and warnings. A run that is blocked or fails with no listings ends as failed, not green.

How do I scrape Royal LePage listings for a city?

Open the city or neighbourhood results on royallepage.ca, apply your filters, and paste the URL into startUrls. The Actor follows the result pages, opens each listing for the full record, and stops at maxResults.

{
"startUrls": [{ "url": "https://www.royallepage.ca/en/bc/vancouver/properties/" }],
"maxResults": 50,
"maxPages": 3,
"includeDetails": true
}
InputDefaultMeaning
startUrlsToronto propertiesRoyal LePage result-page or property-page URLs (English /en/ or French /fr/)
maxResults25Listings per run, 1–1,000; also your billing cap
maxPages5Result pages to follow, 1–100; property URLs do not count
includeDetailstrueOpens each listing for description, photos, features, rooms and brokerage; false keeps the result-card data
maxConcurrency3Pages fetched at the same time, 1–10

The Actor chooses its own access route; there is no proxy setting to configure.

Is the Royal LePage scraper working right now?

Yes. On 2026-10-26 runs from Apify's cloud were refused on every listing page (HTTP 403) and one hit the 300-second timeout. The 2026-10-27 repair routes requests through an access path Royal LePage accepts, adds a time guard that stops the crawl and writes SUMMARY 30 seconds before the run timeout, and makes a blocked run end as failed. Apart from the start event, you pay only for listings saved.

When should I use it, and when not?

Use it when you need:

  • new Royal LePage listings in one Canadian city or neighbourhood, with MLS numbers and photos;
  • room dimensions and feature tables for comparing homes;
  • the brokerage behind each listing.

Do not use it when you need:

What does the output look like?

Two listings from a default Toronto run on 2026-10-26 (descriptions, photos, features and rooms shortened):

[
{
"listingId": "29490014",
"mlsNumber": "W14113820",
"title": "50 MAYDOLPH ROAD , Toronto, Ontario M9B 1W5",
"url": "https://www.royallepage.ca/en/property/ontario/toronto/50-maydolph-road/29490014/mlsw14113820/",
"status": "new listing",
"transactionType": "SALE",
"propertyType": "House",
"price": 1399900,
"priceCurrency": "CAD",
"city": "Toronto",
"province": "ON",
"postalCode": "M9B 1W5",
"bedrooms": 4,
"bathrooms": 4,
"datePosted": "2026-10-24",
"imageUrls": ["https://rlp.jumplisting.com/photos/29/49/0/14/29490014_0_lg.jpg"],
"features": { "Style": "Detached", "Architectural Style": "Bungalow", "Exterior Finish": "Brick" },
"rooms": [{ "name": "3rd Bedroom", "level": "Basement Level", "dimensionsMetric": "4.72 m x 3.05 m", "dimensionsImperial": "15.49 ft x 10.01 ft" }],
"brokerage": "PANORAMA R.E. LIMITED",
"detailLevel": "full"
},
{
"listingId": "29490472",
"mlsNumber": "C14114272",
"propertyType": "Apartment",
"price": 375000,
"priceCurrency": "CAD",
"streetAddress": "918 - 1 KING STREET W",
"bedrooms": 0,
"bathrooms": 1,
"features": { "Amenities": "Exercise Centre, Party Room, Sauna", "Floor Space": "0 - 499 sqft Square Feet" },
"brokerage": "DREAM HOME REALTY INC.",
"detailLevel": "full"
}
]

Pricing: how much does Royal LePage Listings Scraper cost?

Pay per event, with Apify platform usage included. The listing event is charged automatically for each listing saved to the dataset; duplicates are skipped.

EventFREEBRONZESILVERGOLD / PLATINUM / DIAMOND
Actor start (per started GB of allocated memory)USD 0.006251USD 0.006094USD 0.005938USD 0.005
Royal LePage property recordUSD 0.002444USD 0.002382USD 0.002321USD 0.001955

The default memory is 512 MB, so a run has one start event.

  • Default run, 25 listings (FREE): 0.006251 + 25 × 0.002444 = about USD 0.07.
  • 1,000 listings (FREE): 0.006251 + 1,000 × 0.002444 = about USD 2.45.

The status message and SUMMARY show costs from the live prices of your pricing tier.

What are the limits?

  • Speed. Up to 60 requests per minute with three retries per page. With details on, every listing is one extra page; includeDetails: false reads about 45 listings per result page and is much faster.
  • Timeout. The default run timeout is 300 seconds. The Actor stops cleanly 30 seconds before it and reports the stop reason in SUMMARY. Listing pages take several seconds each: on 2026-10-27, 25 detailed listings took about 2 minutes at the default concurrency of 3, and 40 took about 1.5 minutes at concurrency 8. For more than about 60 detailed listings, raise maxConcurrency or the run timeout.
  • Access. After 10 failed requests with nothing saved, the Actor stops and reports BLOCKED.
  • Public data only. No sold data, no agent emails or phone numbers.

Use it from an AI assistant

The Actor works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/royal-lepage-canada-scraper to your client.

Example prompt: "Get 20 new Royal LePage listings in Calgary with price, MLS number, bedrooms, bathrooms and brokerage, and sort them by price."

Run it from the API

JavaScript (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/royal-lepage-canada-scraper').call({
startUrls: [{ url: 'https://www.royallepage.ca/en/on/ottawa/properties/' }],
maxResults: 25,
includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python (apify-client 3.x):

from apify_client import ApifyClient
client = ApifyClient(token='YOUR_APIFY_TOKEN')
run = client.actor('muhammadafzal/royal-lepage-canada-scraper').call(run_input={
'startUrls': [{'url': 'https://www.royallepage.ca/en/bc/vancouver/properties/'}],
'maxResults': 25,
'includeDetails': False,
})
items = client.dataset(run.default_dataset_id).list_items().items

FAQ

Do I need a Royal LePage account or API key?

No. The Actor reads the public listing pages and returns JSON, CSV or Excel through your Apify dataset.

Does it return MLS numbers?

Yes, in mlsNumber, when the listing page shows one.

Can I scrape French Royal LePage pages?

URLs under /fr/ are accepted. The parser was built on the English pages, so check a small run before a large French one.

Can I get sold prices?

No. Sold data needs a Royal LePage login, and the Actor only reads public pages.

How fresh is the data?

Each run reads the live pages, so prices and status are current as of scrapedAt. Schedule the same input daily to track new listings.

Why did my run end with no listings?

Check SUMMARY. BLOCKED means Royal LePage refused the requests; retry later. EMPTY means the search had no matching listings.

Responsible use

Collect only public listing data and respect Royal LePage's terms, the rights of listing brokerages and CREA's DDF® rules. Keep request rates low, process any personal data under Canadian privacy law, and do not republish listing content without permission. Verify every listing before a financial decision.

Last verified: 2026-10-27