rentals.ca APIrentals.ca ↗
Search and retrieve Canadian rental listings from Rentals.ca. Filter by city, bedrooms, bathrooms, and price. Get full property details including floor plans and amenities.
curl -X GET 'https://api.parse.bot/scraper/049153a1-4159-4897-8351-c96ef08f1c37/search_listings?city=vancouver&page=1&limit=5&bedrooms=2&max_price=3000' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for rental listings in a specific Canadian city with optional filters for bedrooms, bathrooms, and price range. Returns paginated results with listing summaries.
| Param | Type | Description |
|---|---|---|
| city | string | City slug for the search area (e.g., 'toronto', 'montreal', 'vancouver', 'calgary', 'ottawa'). |
| page | integer | Page number for pagination. |
| limit | integer | Number of results per page. |
| bedrooms | integer | Filter by number of bedrooms. |
| bathrooms | number | Filter by minimum number of bathrooms. |
| max_price | number | Maximum rent price filter. |
| min_price | number | Minimum rent price filter. |
{
"type": "object",
"fields": {
"city": "string, the city slug used for the search",
"page": "integer, current page number",
"limit": "integer, number of results per page",
"listings": "array of listing summary objects with id, title, path, url, rent_range, beds_range, baths_range, location, verified, and property_type",
"total_count": "integer, total number of matching listings",
"total_floor_plans": "integer, total number of floor plans across all matching listings"
},
"sample": {
"data": {
"city": "toronto",
"page": 1,
"limit": 5,
"listings": [
{
"id": "cmVudGFsbGlzdGluZzoxMDE3OTM5",
"url": "https://rentals.ca/etobicoke/the-markwood",
"path": "etobicoke/the-markwood",
"title": "The Markwood",
"location": [
-79.578725,
43.629792
],
"verified": true,
"beds_range": [
1,
3
],
"rent_range": [
2253,
4187
],
"baths_range": [
1,
3
],
"property_type": "apartment"
}
],
"total_count": 8568,
"total_floor_plans": 12267
},
"status": "success"
}
}About the rentals.ca API
The Rentals.ca API provides access to Canadian rental listings across 3 endpoints, covering cities like Toronto, Vancouver, Montreal, Calgary, and Ottawa. Use search_listings to query listings with filters for bedrooms, bathrooms, and price range, get_listing_details to retrieve full property information by listing ID, or get_listings_by_city to browse all active rentals in a given city with pagination support.
Search and Filter Listings
The search_listings endpoint accepts a city slug along with optional filters: bedrooms, bathrooms, min_price, max_price, page, and limit. Results include an array of listing summary objects, each carrying id, title, url, rent_range, beds_range, baths_range, location coordinates, and a verified flag. The response also includes total_count (total matching listings) and total_floor_plans (aggregate floor plan count across results), which are useful for building pagination UI or estimating inventory depth.
Listing Details
The get_listing_details endpoint takes a base64-encoded listing_id — the same id field returned by search results — and returns the full property record. This includes a structured address object with street, postalCode, city, and neighbourhood; a contact object with name, phoneNumber, and email; parking details covering parkingTypes and parkingSpotsPerRental; and building metadata such as totalUnits, stories, and yearBuilt. Geographic coordinates are returned as a [longitude, latitude] array in the location field.
City-Level Browsing
The get_listings_by_city endpoint mirrors the structure of search_listings but requires a city slug and omits bedroom, bathroom, and price filters. It is suitable for building city-level inventory views or computing aggregate statistics across a market. The total_count and total_floor_plans fields in the response give a snapshot of supply in each city without needing to iterate all pages.
- Build a rental market tracker comparing
total_countandrent_rangeacross Canadian cities over time. - Create a listing alert tool that monitors new entries via
search_listingswithmin_price/max_pricefilters. - Populate a neighbourhood-level map using
locationcoordinates andaddress.neighbourhoodfrom listing details. - Generate landlord contact lists for a given city using
contact.phoneNumberandcontact.emailfromget_listing_details. - Filter listings by
bedroomsandbathroomsto match specific tenant profiles in apartment-finding tools. - Enrich real estate datasets with
building.yearBuilt,building.stories, andbuilding.totalUnitsfor property analysis. - Display verified-only listings by filtering on the
verifiedboolean in search result summaries.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Rentals.ca have an official developer API?+
What does `get_listing_details` return beyond what appears in search results?+
search_listings and get_listings_by_city return summary fields: title, rent_range, beds_range, baths_range, location, and verified. get_listing_details adds structured address (including neighbourhood and postalCode), contact (name, phone, email), parking (types and spots), building (units, stories, year built), and the property type. You need the base64 id from a summary result to call this endpoint.Can I filter listings by neighbourhood or property type?+
search_listings endpoint supports filtering by city, bedrooms, bathrooms, min_price, and max_price. Neighbourhood and property-type filters are not available as inputs, though address.neighbourhood and type are present in detail responses. You can fork this API on Parse and revise it to add those filter parameters.Does the API cover all Canadian provinces, or only major cities?+
city parameter currently accepts slugs for major Canadian cities including Toronto, Montreal, Vancouver, Calgary, and Ottawa. Smaller cities and rural areas are not confirmed to be covered. You can fork this API on Parse and revise it to test or add additional city slugs for broader geographic coverage.How does pagination work across the search endpoints?+
page and limit parameters. The response includes total_count so you can calculate the number of pages needed. There is no cursor-based pagination; page numbers are integer-indexed starting from 1.