# RentFaster Scraper: Canada Rentals, Rents & Landlord Phones (`fayoussef/rentfaster-scraper`) Actor

Scrape Canadian rental listings from RentFaster.ca in 105 cities (Calgary, Edmonton, Toronto, Montreal...). Filter by type, bedrooms, rent, pets and utilities. Export rent, beds, baths, sq ft, address, GPS, landlord phone and website to JSON, CSV or Excel.

- **URL**: https://apify.com/fayoussef/rentfaster-scraper.md
- **Developed by:** [Youssef Farhan](https://apify.com/fayoussef) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.30 / 1,000 rental listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## RentFaster Scraper: Canada Rental Listings, Rents & Landlord Phones

> **What is the RentFaster Scraper?** It is an Apify Actor that scrapes rental listings from [RentFaster.ca](https://www.rentfaster.ca), one of Canada's biggest rental sites, and returns 44 structured fields per listing (rent range, bedrooms, bathrooms, square feet, address, GPS, landlord or property manager phone and website, utilities, pets, parking and features) as JSON, CSV or Excel.

**Scrape RentFaster rental listings at scale** for Calgary, Edmonton, Toronto, Montreal, Ottawa, Winnipeg, Vancouver and 100 more Canadian cities. Pick one or more cities, apply the same filters as the RentFaster search panel (property type, bedrooms, bathrooms, rent range, furnishing, dogs, cats, utilities included, lease term, neighbourhood) and export every matching listing. A whole city like Calgary (about 6,800 listings) takes under a minute; all of Canada (about 15,000 listings) about four minutes.

Built for **landlords and property managers** pricing their units, **real estate investors** checking rent yields, **relocation and corporate housing** teams, **lenders and appraisers** who need rent comps, and **researchers and journalists** tracking Canadian rents. Runs on Apify, so you get the API, scheduling, integrations and proxy rotation for free.

### Key features at a glance

- **Canadian rental listings from RentFaster.ca** in 105 cities across Alberta, Ontario, BC, Quebec, Saskatchewan, Manitoba and Nova Scotia. Any city RentFaster adds later works too.
- **Rent, size and layout**: monthly rent (low and high end for buildings with several units), bedrooms, dens, bathrooms, square feet.
- **Landlord and property manager contacts**: phone in +1 format on about 90% of listings, a second phone, website, and how they prefer to be contacted.
- **Location**: street address, neighbourhood, city, province and GPS coordinates.
- **Amenities**: utilities included, parking, pets (cats and dogs), smoking, lease term, building and unit features.
- **Every RentFaster filter** from the search panel, so you only pay for the listings you want.
- **Fast and light**: reads RentFaster's own listing data, 500 listings per request, no browser.
- **No duplicates**: each listing appears once, even across several cities.
- **Export anywhere**: JSON, CSV, Excel, XML or JSONL, or straight into Google Sheets, Airtable, Make, Zapier or n8n.

### What data does the RentFaster scraper extract?

| Field | Example | Description |
|---|---|---|
| `title` | The HAT @ 9th - Apartment Rentals in Downtown Calgary | Listing headline |
| `property_type` | Apartment | Apartment, Condo Unit, House, Townhouse, Basement, Main Floor, Room For Rent... |
| `rent_cad` / `rent_max_cad` | 2199 / null | Monthly rent in CAD; `rent_max_cad` is set when the listing has several units at different rents |
| `bedrooms_min` / `bedrooms_max` | 2 / 2 | Bedrooms as numbers (bachelor and studio = 0), plus `bedrooms_text` as shown |
| `den` | No | Whether the unit has a den |
| `bathrooms_min` / `bathrooms_max` | 1 / 1 | Bathrooms, half baths as .5 |
| `sq_feet_min` / `sq_feet_max` | 717 / 717 | Size in square feet |
| `available` | Immediate | Availability date |
| `address` | 205 9 Avenue SE | Street address (empty when the landlord hides it) |
| `neighborhood`, `city`, `province` | Downtown, Calgary, AB | Location |
| `latitude`, `longitude` | 51.044305, -114.060026 | GPS coordinates |
| `phone`, `phone_2` | +15873303596 | Landlord or property manager phone |
| `website` | https://... | Property manager website |
| `accepts_email`, `preferred_contact` | true, \[Phone, Text, Email] | How to reach them |
| `lease_term` | Long Term | Long Term, Short Term or Negotiable |
| `cats_allowed`, `dogs_allowed` | true, true | Pet policy |
| `utilities_included` | \[Heat, Water] | Utilities included in the rent |
| `parking`, `features` | \[outdoor], \[Elevator, Air Conditioning] | Parking types and unit or building features |
| `verified_landlord`, `landlord_id` | false, 2272884 | Verification badge and RentFaster account id (group listings by landlord) |
| `listed_on` | 2026-01-19 | Date the listing was posted |
| `image_url`, `thumbnail_url` | https://... | Main photo |
| `url` | https://www.rentfaster.ca/properties/... | Listing page |

#### Sample output

```json
{
  "id": 710052,
  "url": "https://www.rentfaster.ca/properties/205-9-avenue-se-calgary-710052",
  "title": "The HAT @ 9th - Apartment Rentals in Downtown Calgary",
  "property_type": "Apartment",
  "rent_cad": 2199,
  "rent_max_cad": null,
  "bedrooms_text": "2",
  "bedrooms_min": 2,
  "bedrooms_max": 2,
  "bathrooms_min": 1,
  "sq_feet_min": 717,
  "available": "Immediate",
  "address": "205 9 Avenue SE",
  "neighborhood": "Downtown",
  "city": "Calgary",
  "province": "AB",
  "latitude": 51.044305,
  "longitude": -114.060026,
  "phone": "+15873303596",
  "accepts_email": true,
  "preferred_contact": ["Phone", "Text", "Email"],
  "lease_term": "Long Term",
  "cats_allowed": true,
  "dogs_allowed": true,
  "utilities_included": ["Heat", "Water"],
  "parking": ["outdoor"],
  "features": ["Elevator", "Storage Lockers", "Zero-Step Entrance", "Air Conditioning"],
  "listed_on": "2026-01-19",
  "status": "active"
}
```

### How to scrape RentFaster rental listings

1. Open the Actor and go to the **Input** tab.
2. Type one or more **cities** (`Calgary`, `Edmonton`, `Toronto`), or tick **All cities**.
3. Optionally set **filters**: property type, bedrooms, bathrooms, rent range, furnishing, dogs, cats, utilities, lease term, neighbourhoods.
4. Set **Max results** if you only want a sample.
5. Click **Start**, then download the results as JSON, CSV or Excel from the **Output** tab.

### Input

| Field | Description |
|---|---|
| `cities` | One per line: `Calgary`, `Montreal`, `London, ON`, `ab/calgary`, or a RentFaster city page like `https://www.rentfaster.ca/ab/calgary/rentals/` |
| `all_cities` | Scrape every RentFaster city, busiest first |
| `max_items` | Stop after this many listings in total |
| `property_types` | Apartment, Condo Unit, Loft, House, Townhouse, Room For Rent, Duplex, Basement, Main Floor... (OR) |
| `bedrooms` | Bachelor, 1, 1 + Den, 2, 2 + Den, 3... (OR) |
| `bathrooms` | 1, 1.5, 2, 2.5, 3... (OR) |
| `price_min`, `price_max` | Monthly rent range in CAD |
| `furnishing` | Unfurnished, Semi-Furnished, Furnished, Negotiable |
| `dogs_allowed`, `cats_allowed` | Only pet-friendly listings |
| `utilities_included` | Heat, Electricity, Water, Cable, Internet (all chosen must be included) |
| `lease_terms` | Long Term, Short Term, Negotiable |
| `neighborhoods` | Neighbourhood names as spelled on RentFaster (`Beltline`, `Downtown`) |

Example: pet-friendly 2-bedroom rentals under $2,500 in Calgary and Edmonton.

```json
{
  "cities": ["Calgary", "Edmonton"],
  "bedrooms": ["2"],
  "price_max": 2500,
  "dogs_allowed": true,
  "max_items": 500
}
```

Filters match per unit, like on the site: a building with 1 and 2-bedroom units matches a 2-bedroom search, and its row shows the full ranges.

### Which cities does RentFaster cover?

RentFaster is strongest in Alberta and growing across Canada. Busiest cities on 2026-09-25, with the number of rental units listed: **Calgary** (8,669), **Edmonton** (4,179), **Toronto** (3,184), **Montreal** (1,997), **Ottawa** (1,300), **Winnipeg** (989), **London ON** (788), **Vancouver** (657), **Hamilton** (470), **Halifax** (379), **Saskatoon** (366), **Regina** (316), **Mississauga** (313), **Kingston** (266), **Victoria** (251), then Kitchener, Airdrie, Barrie, Kelowna, Surrey, Red Deer, Cochrane, Waterloo, Brampton, Guelph, Gatineau and about 75 more. A city missing from this list, such as Banff or Whistler, is looked up on RentFaster when you enter it with its province (`Banff, AB`).

### Who uses a RentFaster scraper?

- **Landlords and property managers**: price a unit against every comparable listing in the neighbourhood.
- **Real estate investors**: compare rents by city, neighbourhood and unit size before buying.
- **Relocation, corporate housing and student housing teams**: shortlist furnished or short-term rentals in bulk.
- **Lenders, appraisers and analysts**: build rent comps and rent indexes for Canadian cities.
- **Researchers and journalists**: track rents over time with a scheduled run.
- **Proptech and rental apps**: feed a map, an alert service or a pricing model.

### Pricing

This Actor is **pay per result**: you pay for each listing saved to the dataset, plus a tiny per-run start event. Listings removed by your filters are never charged. **The current rate is shown on this Actor's Store page.**

On the Apify Free plan, each run returns up to 50 listings from the first city, so you can check the data before subscribing to an [Apify plan](https://apify.com/pricing?fpr=youssef).

### Tips

- **Track rents over time**: schedule a weekly run for your city and add [Dataset Diff](https://apify.com/fayoussef/dataset-diff?fpr=youssef) to get only new or changed listings by Slack, Telegram or email.
- **Pay only for what you need**: set filters instead of scraping a whole city and filtering later.
- **Rent comps**: filter by neighbourhood, bedrooms and property type, then sort the export by `rent_cad`.
- **Group by landlord**: `landlord_id` is shared by all listings of the same RentFaster account, useful to find large property managers.

### Frequently asked questions (FAQ)

**What is RentFaster?**
RentFaster.ca is a Canadian rental listings site, founded in Calgary and part of the Rentals.ca network, with apartments, condos, houses, basement suites and rooms for rent across the country.

**Is there a RentFaster API?**
RentFaster has no public API for listings. This Actor works as a RentFaster API alternative: call it through the Apify API and get clean JSON.

**Why does a city show more units than listings?**
RentFaster counts units: an apartment building advertising 12 units counts 12, but it is one listing. The Actor returns one row per listing, with `rent_cad` and `rent_max_cad` covering all its units.

**Why do some listings have no phone or address?**
Some landlords hide their address or phone on RentFaster. The Actor returns everything the listing publishes and never guesses. About 9 in 10 listings have a phone.

**Can I scrape all of Canada?**
Yes. Tick **All cities**. It takes about four minutes for roughly 15,000 listings.

**Does it support scheduling?**
Yes. Use the Apify scheduler to refresh daily or weekly, and [Dataset Diff](https://apify.com/fayoussef/dataset-diff?fpr=youssef) to receive only new listings.

**Is it legal to scrape RentFaster?**
The Actor collects publicly listed rental information. You are responsible for using it in line with RentFaster's terms and applicable law, including Canada's privacy and anti-spam rules (PIPEDA, CASL) when you contact a private landlord.

**Something is not working?**
Open an issue in the **Issues** tab and I will fix it quickly.

### Use via API or MCP

Call this Actor through the Apify REST API, or connect it to an AI agent (Claude, ChatGPT, Cursor) through the Apify MCP server:

```
https://mcp.apify.com/actors/fayoussef/rentfaster-scraper
```

Full API docs: <https://docs.apify.com/api/v2>

### Need a custom scraper?

Need another Canadian rental site, extra fields or a scheduled rent report? Email youssefarhan24@gmail.com or [suggest a site](https://automationbyexperts.com/apify). More Canadian data by me: [Kijiji](https://apify.com/fayoussef/kijiji-scraper?fpr=youssef), [Centris](https://apify.com/fayoussef/centris-property-scraper?fpr=youssef), [AutoTrader.ca](https://apify.com/fayoussef/autotrader-canada?fpr=youssef), [Canada411](https://apify.com/fayoussef/canada411-ca?fpr=youssef).

# Actor input Schema

## `cities` (type: `array`):

One city per line: a name (`Calgary`, `Edmonton`, `Montreal`), a name with its province when two provinces share it (`London, ON`), or a RentFaster city page (`https://www.rentfaster.ca/ab/calgary/rentals/`). RentFaster covers over 100 Canadian cities, strongest in Alberta (Calgary, Edmonton, Airdrie, Red Deer...) and growing in Ontario, BC, Saskatchewan, Manitoba and Quebec.

## `all_cities` (type: `boolean`):

Scrape every RentFaster city in Canada (105 cities, about 15,000 listings on 2026-09-25, in about 4 minutes), busiest first. The Cities list is ignored when this is on.

## `max_items` (type: `integer`):

Stop after this many listings in total. Leave empty to scrape every listing that matches.

## `property_types` (type: `array`):

Only these kinds of rental. Leave empty for all. Several choices are combined with OR.

## `bedrooms` (type: `array`):

Only listings with this many bedrooms. Several choices are combined with OR (2 and 3 = two or three bedrooms).

## `bathrooms` (type: `array`):

Only listings with this many bathrooms. Several choices are combined with OR.

## `price_min` (type: `integer`):

Lowest monthly rent, in Canadian dollars.

## `price_max` (type: `integer`):

Highest monthly rent, in Canadian dollars.

## `furnishing` (type: `array`):

Only listings with this furnishing. Several choices are combined with OR.

## `dogs_allowed` (type: `boolean`):

Only listings where the landlord accepts dogs (RentFaster shows these as 'Negotiable').

## `cats_allowed` (type: `boolean`):

Only listings where the landlord accepts cats (RentFaster shows these as 'Negotiable').

## `utilities_included` (type: `array`):

Only listings whose rent includes these utilities. Several choices must ALL be included (Heat + Water = both).

## `lease_terms` (type: `array`):

Only listings with this lease term.

## `neighborhoods` (type: `array`):

Only these neighbourhoods, spelled as on RentFaster (`Beltline`, `Downtown`, `Kensington`). Several are combined with OR. Leave empty for the whole city.

## Actor input object example

```json
{
  "cities": [
    "Calgary"
  ],
  "all_cities": false,
  "max_items": 100,
  "dogs_allowed": false,
  "cats_allowed": false
}
```

# Actor output Schema

## `results` (type: `string`):

One record per RentFaster listing: rent range, bedrooms, bathrooms, size, address, GPS, landlord phone and website, utilities, pets and features.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "cities": [
        "Calgary"
    ],
    "max_items": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("fayoussef/rentfaster-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "cities": ["Calgary"],
    "max_items": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("fayoussef/rentfaster-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "cities": [
    "Calgary"
  ],
  "max_items": 100
}' |
apify call fayoussef/rentfaster-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fayoussef/rentfaster-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/MtApicUvxEC6dQyns/builds/ha4jRQGbMDgQnYHlD/openapi.json
