APIs / Real estate / Rentals.ca

1 credit per call6 endpoints19 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.

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 OKJSONX-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.

#idstringpathstringurlurlnamestringtypestringlisting_typestringverifiedbooleanbedsobjectbathsobjectrentobjectsizeobjectfloor_plansobject[]latitudenumberlongitudenumberaddressobjectthumbnailobjectimages_countintegercreatedstringmodifiedstring
1cmVudGFsbGlzdGluZzo5MTM4OTE=toronto/davisville-avenue-id913891https://rentals.ca/toronto/davisville-avenue-id913891Davisville Avenueshared_roomresidential:room:shared-roomtrue{2 fields}{2 fields}{2 fields}{0 fields}[1 item]43.70075-79.39088{6 fields}{3 fields}32024-11-28T15:54:00.179086+00:002026-11-12T07:48:59.251178+00:00
2cmVudGFsbGlzdGluZzo5MTQ3MzU=toronto/niska-roadhttps://rentals.ca/toronto/niska-roadNiska Roadroomresidential:room:roomtrue{2 fields}{2 fields}{2 fields}{0 fields}[1 item]43.7644-79.5094{6 fields}{3 fields}52024-11-28T15:55:15.867977+00:002026-11-12T07:50:05.504158+00:00
3cmVudGFsbGlzdGluZzoxNjA1OTM2toronto/roomies-1605936https://rentals.ca/toronto/roomies-1605936Rose Avenueroomresidential:room:roomtrue{2 fields}{2 fields}{2 fields}{0 fields}[1 item]43.66937-79.37045{8 fields}{3 fields}32026-11-06T07:30:15.905608+00:002026-11-12T07:31:49.102006+00:00

Recorded from our API · 3 items shown · 19 datapoints per itemGET /v1/rentals-ca/search?city=Toronto&region=ON&max_price=3000&min_beds=2&sort=cheapest

19 datapoints

Identity

  • idstring
  • namestring
  • typestring
  • listing_typestring

Contact

  • urlurl

Location

  • latitudenumber
  • longitudenumber
  • addressobject

Reputation

  • verifiedboolean
  • images_countinteger

Other

  • pathstring
  • bedsobject
  • bathsobject
  • rentobject
  • sizeobject
  • floor_plansobject[]
  • thumbnailobject
  • createdstring
  • modifiedstring

Playground

Run this API

cURLshell
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.

EndpointRequired parametersCost
GET/v1/rentals-ca/agency
none+3 optional
1 credit
GET/v1/rentals-ca/autocomplete
query+1 optional
1 credit
GET/v1/rentals-ca/cities
none+3 optional
1 credit
GET/v1/rentals-ca/facets
none
1 credit
GET/v1/rentals-ca/listing
none+3 optional
1 credit
GET/v1/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 estateJSONRESTMCP

More real estate APIs

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.