---
title: "Rentals.ca API: JSON data, 6 endpoints, 1 credit per call"
description: "Rentals.ca API for Canadian rental search, listings, floor plans, property managers, cities and filter facets as JSON. 1 credit per successful call."
url: https://perceptlayer.com/apis/rentals-ca
---

[APIs](https://perceptlayer.com/apis) / [Real estate](https://perceptlayer.com/verticals/real-estate) / Rentals.ca

1 credit per call 6 endpoints 19 datapoints

# Rentals.ca API

Rentals.ca API for Canadian rental search, listings, floor plans, property managers, cities and filter facets as JSON. 1 credit per successful call.

[Get a free API key](https://perceptlayer.com/signup) Run it below

Rentals.ca

GET /v1/rentals-ca/search?city=Toronto&region=ON&max\_price=3000&min\_beds=2&sort=cheapest 

```
{
  "success": true,
  "data": {
    "search_metadata": {
      "status": "Success",
      "total_floor_plans": 3952
    },
    "search_parameters": {
      "place": "toronto, on, ca",
      "sort": "cheapest",
      "filters": {
        "max_price": "3000",
        "min_beds": "2"
      }
    },
    "total": 2280,
    "filtered_count": 18,
    "page": 1,
    "per_page": 20,
    "has_next_page": true,
    "next_page": 2,
    "warning": "Some buildings were left out because none of their units fit the filters. A page can hold fewer than per_page listings.",
    "listings": [
      {
        "id": "cmVudGFsbGlzdGluZzo5MTM4OTE=",
        "path": "toronto/davisville-avenue-id913891",
        "url": "https://rentals.ca/toronto/davisville-avenue-id913891",
        "name": "Davisville Avenue",
        "type": "shared_room",
        "listing_type": "residential:room:shared-room",
        "verified": true,
        "beds": {
          "min": 2,
          "max": 2
        },
        "baths": {
          "min": 1,
          "max": 1
        },
        "rent": {
          "min": 450,
          "max": 450
        },
        "size": {},
        "floor_plans": [
          {
            "beds": 2,
            "baths": 1,
            "rent": 450,
            "available_now": false
          }
        ],
        "latitude": 43.70075,
        "longitude": -79.39088,
        "address": {
          "street": "Uptown",
          "postal_code": "M4S 1G7",
          "city": "Toronto",
          "city_path": "toronto",
          "region": "ON",
          "address_hidden": false
        },
        "thumbnail": {
          "small": "https://images.rentals.ca/property-pictures/small/toronto-on/913891/shared-room-2237881593.jpg",
          "medium": "https://images.rentals.ca/property-pictures/medium/toronto-on/913891/shared-room-2237881593.jpg",
          "large": "https://images.rentals.ca/property-pictures/large/toronto-on/913891/shared-room-2237881593.jpg"
        },
        "images_count": 3,
        "created": "2024-11-28T15:54:00.179086+00:00",
        "modified": "2026-11-12T07:48:59.251178+00:00"
      },
      {
        "id": "cmVudGFsbGlzdGluZzo5MTQ3MzU=",
        "path": "toronto/niska-road",
        "url": "https://rentals.ca/toronto/niska-road",
        "name": "Niska Road",
        "type": "room",
        "listing_type": "residential:room:room",
        "verified": true,
        "beds": {
          "min": 2,
          "max": 2
        },
        "baths": {
          "min": 1,
          "max": 1
        },
        "rent": {
          "min": 650,
          "max": 650
        },
        "size": {},
        "floor_plans": [
          {
            "beds": 2,
            "baths": 1,
            "rent": 650,
            "available_now": false
          }
        ],
        "latitude": 43.7644,
        "longitude": -79.5094,
        "address": {
          "street": "Niska Road",
          "postal_code": "M3N 2S3",
          "city": "Toronto",
          "city_path": "toronto",
          "region": "ON",
          "address_hidden": false
        },
        "thumbnail": {
          "small": "https://images.rentals.ca/property-pictures/small/toronto-on/914735/room-2237886161.jpg",
          "medium": "https://images.rentals.ca/property-pictures/medium/toronto-on/914735/room-2237886161.jpg",
          "large": "https://images.rentals.ca/property-pictures/large/toronto-on/914735/room-2237886161.jpg"
        },
        "images_count": 5,
        "created": "2024-11-28T15:55:15.867977+00:00",
        "modified": "2026-11-12T07:50:05.504158+00:00"
      },
      {
        "id": "cmVudGFsbGlzdGluZzoxNjA1OTM2",
        "path": "toronto/roomies-1605936",
        "url": "https://rentals.ca/toronto/roomies-1605936",
        "name": "Rose Avenue",
        "type": "room",
        "listing_type": "residential:room:room",
        "verified": true,
        "beds": {
          "min": 2,
          "max": 2
        },
        "baths": {
          "min": 1,
          "max": 1
        },
        "rent": {
          "min": 790,
          "max": 790
        },
        "size": {},
        "floor_plans": [
          {
            "beds": 2,
            "baths": 1,
            "rent": 790,
            "available_now": false
          }
        ],
        "latitude": 43.66937,
        "longitude": -79.37045,
        "address": {
          "street": "Rose Avenue",
          "postal_code": "M4X 1P1",
          "city": "Toronto",
          "city_path": "toronto",
          "region": "ON",
          "neighbourhood": "St. James Town",
          "neighbourhood_path": "toronto/st-james-town",
          "address_hidden": false
        },
        "thumbnail": {
          "small": "https://cloudinary.roomies.pics/image/upload/c_scale,dpr_1.0,f_jpg,fl_lossy,q_auto:good,w_672/ednvdwgteyx1f6wfrixx",
          "medium": "https://cloudinary.roomies.pics/image/upload/c_scale,dpr_1.0,f_jpg,fl_lossy,q_auto:good,w_672/ednvdwgteyx1f6wfrixx",
          "large": "https://cloudinary.roomies.pics/image/upload/c_scale,dpr_1.0,f_jpg,fl_lossy,q_auto:good,w_672/ednvdwgteyx1f6wfrixx"
        },
        "images_count": 3,
        "created": "2026-11-06T07:30:15.905608+00:00",
        "modified": "2026-11-12T07:31:49.102006+00:00"
      }
    ]
  },
  "meta": {
    "endpoint_family": "search",
    "request_id": "req_deb4fde8df4c4fd7b8f7af98d721aa65",
    "credits_charged": 1,
    "credits_remaining": 1814
  }
}
```

200 OK JSON X-Credits-Used: 1

Recorded from our API and shortened.

Sample data

## What one call returns

A recorded run of `search`: the fields and shapes you will get, shortened to 3 items.

| # | id string | path string | url url | name string | type string | listing\_type string | verified boolean | beds object | baths object | rent object | size object | floor\_plans object\[\] | latitude number | longitude number | address object | thumbnail object | images\_count integer | created string | modified string |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | cmVudGFsbGlzdGluZzo5MTM4OTE= | toronto/davisville-avenue-id913891 | https://rentals.ca/toronto/davisville-avenue-id913891 | Davisville Avenue | shared\_room | residential:room:shared-room | true | {2 fields} | {2 fields} | {2 fields} | {0 fields} | \[1 item\] | 43.70075 | \-79.39088 | {6 fields} | {3 fields} | 3 | 2024-11-28T15:54:00.179086+00:00 | 2026-11-12T07:48:59.251178+00:00 |
| 2 | cmVudGFsbGlzdGluZzo5MTQ3MzU= | toronto/niska-road | https://rentals.ca/toronto/niska-road | Niska Road | room | residential:room:room | true | {2 fields} | {2 fields} | {2 fields} | {0 fields} | \[1 item\] | 43.7644 | \-79.5094 | {6 fields} | {3 fields} | 5 | 2024-11-28T15:55:15.867977+00:00 | 2026-11-12T07:50:05.504158+00:00 |
| 3 | cmVudGFsbGlzdGluZzoxNjA1OTM2 | toronto/roomies-1605936 | https://rentals.ca/toronto/roomies-1605936 | Rose Avenue | room | residential:room:room | true | {2 fields} | {2 fields} | {2 fields} | {0 fields} | \[1 item\] | 43.66937 | \-79.37045 | {8 fields} | {3 fields} | 3 | 2026-11-06T07:30:15.905608+00:00 | 2026-11-12T07:31:49.102006+00:00 |

Recorded from our API · 3 items shown · 19 datapoints per item GET /v1/rentals-ca/search?city=Toronto&region=ON&max\_price=3000&min\_beds=2&sort=cheapest

19 datapoints

### Identity

-   id string
-   name string
-   type string
-   listing\_type string

### Contact

-   url url

### Location

-   latitude number
-   longitude number
-   address object

### Reputation

-   verified boolean
-   images\_count integer

### Other

-   path string
-   beds object
-   baths object
-   rent object
-   size object
-   floor\_plans object\[\]
-   thumbnail object
-   created string
-   modified string

Playground

## Run this API

cURL shell 

```
curl "https://api.perceptlayer.com/v1/rentals-ca/search?city=Toronto&region=ON&max_price=3000&min_beds=2&sort=cheapest" \
  -H "X-API-Key: $API_KEY"
```

Rentals.ca · 6 endpoints

## Endpoints

Every endpoint takes the same key. Open one for its parameters and an example request.

| Endpoint | Required parameters | Cost |
| --- | --- | --- |
| [GET `/v1/rentals-ca/agency`](https://perceptlayer.com/apis/rentals-ca/agency) | none +3 optional | 1 credit |
| [GET `/v1/rentals-ca/autocomplete`](https://perceptlayer.com/apis/rentals-ca/autocomplete) | `query` +1 optional | 1 credit |
| [GET `/v1/rentals-ca/cities`](https://perceptlayer.com/apis/rentals-ca/cities) | none +3 optional | 1 credit |
| [GET `/v1/rentals-ca/facets`](https://perceptlayer.com/apis/rentals-ca/facets) | none | 1 credit |
| [GET `/v1/rentals-ca/listing`](https://perceptlayer.com/apis/rentals-ca/listing) | none +3 optional | 1 credit |
| [GET `/v1/rentals-ca/search`](https://perceptlayer.com/apis/rentals-ca/search) | none +23 optional | 1 credit |

Overview

## About the Rentals.ca API

## What you can get

The Rentals.ca API returns Rentals.ca rental data as JSON through 6 endpoints.

-   **Search:** `search` takes a `city`, `region` or `location`, with `min_price`, `max_price`, `min_beds`, `max_beds`, `min_baths`, `max_baths`, `min_size`, `max_size`, `property_type[]`, `categories[]`, `lease_terms[]`, `furnished[]`, `parking_types[]` and `amenities[]` (all repeatable), `pets` (all or none), `verified`, `has_images`, `sort` (relevant, recent, cheapest, expensive, newest or ranked), `page` and `per_page`.
-   **Listings:** `listing` takes a `path`, `url` or `id`.
-   **Agencies:** `agency` takes a `path`, `url` or `id`.
-   **Places and filters:** `cities` takes a `region` (AB, BC, MB, NB, NL, NS, NT, NU, ON, PE, QC, SK or YT), with `page` and `per_page`; `autocomplete` takes a `query`, with `limit`; `facets` takes no parameters.

The recorded `search` for Toronto, ON with `max_price=3000`, `min_beds=2` and `sort=cheapest` returns `listings`, each with `id`, `path`, `url`, `name`, `type`, `listing_type`, `verified`, `beds`, `baths`, `rent`, `size`, `floor_plans`, `latitude`, `longitude`, `address`, `thumbnail`, `images_count`, `created` and `modified`. It also returns `total`, `filtered_count`, `page`, `per_page`, `has_next_page`, `next_page`, a `warning`, and `search_metadata` with `total_floor_plans`.

## How a call works

Search a city: `GET /v1/rentals-ca/search?city=Toronto&region=ON&max_price=3000&min_beds=2&sort=cheapest` with your key in the `X-API-Key` header. Each listing's `path` (such as toronto/davisville-avenue-id913891) is what `listing` takes. Use `next_page` when `has_next_page` is true. Every successful call costs 1 credit; failed calls cost nothing.

Real estate JSON REST MCP

### More real estate APIs

[28Hse](https://perceptlayer.com/apis/28hse) [4zida](https://perceptlayer.com/apis/4zida) [591](https://perceptlayer.com/apis/591-house) [99.co](https://perceptlayer.com/apis/99co) [99acres](https://perceptlayer.com/apis/99acres) [Adondevivir](https://perceptlayer.com/apis/adondevivir) [Apartment List](https://perceptlayer.com/apis/apartment-list) [Apartments.com](https://perceptlayer.com/apis/apartments-com) [Aqar](https://perceptlayer.com/apis/aqar) [Aqarmap](https://perceptlayer.com/apis/aqarmap) [Argenprop](https://perceptlayer.com/apis/argenprop) [athome](https://perceptlayer.com/apis/athome)

Use cases

### Track asking rents by bedroom count in a Canadian city

`Use the Rentals.ca API to track asking rents by bedroom count in a Canadian city` 

### Compare rent ranges across a building's \`floor\_plans\`

`` Use the Rentals.ca API to compare rent ranges across a building's `floor_plans` `` 

### Filter rentals by lease term, furnishing, parking and pets

`Use the Rentals.ca API to filter rentals by lease term, furnishing, parking and pets` 

### List the cities with rentals in a province or territory with \`cities\`

`` Use the Rentals.ca API to list the cities with rentals in a province or territory with `cities` `` 

FAQ

## Questions

**Do I need a Rentals.ca account?**

No. You call this Rentals.ca API with your Perceptlayer key in the \`X-API-Key\` header, with no Rentals.ca login.

**How much does the Rentals.ca API cost?**

Each successful call costs one credit. New accounts get free credits to start, and credit packs bring the price down as you scale.

**What format are responses in?**

Every endpoint returns JSON, with no HTML parsing on your side.

**Why can a page hold fewer listings than \`per\_page\`?**

Buildings are left out when none of their units fit your filters, so a page can come back short. The response says so in \`warning\`.

**Should I build a Rentals.ca scraper instead?**

You can, but a Rentals.ca scraper is code you maintain: page changes break it, requests get blocked, and Rentals.ca's terms govern how you collect data. The Rentals.ca API gives you 6 endpoints of named JSON fields for 1 credit per successful call, and failed calls cost nothing. A scraper makes sense only for data these endpoints don't return, so check the response in the playground on this page first.

## Try the Rentals.ca API with 100 free credits

No credit card. Failed calls are never billed.

[Get a free API key](https://perceptlayer.com/signup) [Read the docs](https://docs.perceptlayer.com)
