Rentals APIrentals.ca ↗
Search and retrieve Canadian rental listings from Rentals.ca. Filter by city, bedrooms, bathrooms, and price. Returns floor plans, amenities, images, and contact details.
What is the Rentals API?
The Rentals.ca API exposes 4 endpoints for searching and retrieving rental property listings across Canadian cities. The search_listings endpoint accepts city slugs like toronto or vancouver alongside filters for bedrooms, bathrooms, and price range, returning paginated summaries with rent ranges, bed/bath counts, and GPS coordinates. A separate get_listing_details endpoint delivers full property records including floor plans, amenities, building specs, and contact information.
curl -X GET 'https://api.parse.bot/scraper/049153a1-4159-4897-8351-c96ef08f1c37/search_listings?city=toronto&page=1&limit=5&bedrooms=2&bathrooms=1&max_price=5000&min_price=1000' \ -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 including rent range, bed/bath counts, and location coordinates. The city parameter accepts slugs like 'toronto', 'montreal', 'vancouver'. Pagination advances via the page parameter; total_count in the response gives the full result set size.
| 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": "cmVudGFsbGlzdGluZzoyNTcxNjk=",
"url": "https://rentals.ca/york/the-heathview",
"path": "york/the-heathview",
"title": "The Heathview",
"location": [
-79.414559,
43.685894
],
"verified": true,
"beds_range": [
1,
2
],
"rent_range": [
2495,
5895
],
"baths_range": [
1,
2.5
],
"property_type": "apartment"
}
],
"total_count": 8588,
"total_floor_plans": 12334
},
"status": "success"
}
}About the Rentals API
Searching Rental Listings
search_listings and get_listings_by_city both return paginated arrays of listing summaries. Each summary includes id, title, url, rent_range, beds_range, baths_range, location coordinates, and a verified flag. search_listings accepts min_price, max_price, bedrooms, and bathrooms filters in addition to city and pagination params; get_listings_by_city takes only city, page, and limit, making it better suited for broad city-level browsing. Both responses include total_count and total_floor_plans for accurate pagination.
Full Listing Details
get_listing_details takes a base64-encoded listing_id sourced from any summary response and returns the complete property record: structured address (street, postal code, city, neighbourhood), contact object (name, phone, email), building metadata (total units, stories, year built), parking options, an images array, and a [longitude, latitude] location pair. Property type and URL path are also included.
Bulk Search with Full Detail
search_listings_full combines the filter set of search_listings with the expanded data shape of get_listing_details for every result in a single response. It adds a created_after ISO 8601 datetime parameter, allowing incremental ingestion of listings updated after a specific timestamp. Response objects include description, published_at, updated_at, property_type, and the full address structure — useful for pipelines that need to avoid calling get_listing_details per listing.
Coverage and Identifiers
All four endpoints operate on Canadian cities via slug strings (toronto, montreal, vancouver, calgary, ottawa). Listing IDs are base64-encoded strings throughout; the id field returned by search endpoints feeds directly into get_listing_details without decoding. Floor plan counts (total_floor_plans) reflect individual unit configurations within multi-unit buildings, which can exceed total_count significantly for apartment complexes.
The Rentals API is a managed, monitored endpoint for rentals.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when rentals.ca changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official rentals.ca API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate rent prices by city and bedroom count to track Canadian rental market trends over time
- Build a rental alert system using
search_listings_fullwithcreated_afterto detect newly posted listings - Map available rentals in a neighbourhood using
locationcoordinates fromsearch_listings - Populate a property comparison tool with floor plan counts, building stories, and year built from
get_listing_details - Qualify leads for property management software by pulling contact name, phone, and email from listing detail responses
- Feed a rental affordability dashboard by filtering
min_priceandmax_priceacross multiple Canadian cities
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Rentals.ca offer an official developer API?+
What does `get_listing_details` return that the search endpoints don't?+
get_listing_details returns fields not present in search summaries: address (with street, postal code, and neighbourhood), contact (name, phone number, email), building (total units, stories, year built), parking details, and an images array of property photo URLs. Search endpoints return only rent_range, beds_range, baths_range, location, and verified.Does the API cover rental listings outside Canada?+
Can I retrieve individual room or sublet listings?+
How does pagination work across the search endpoints?+
search_listings, get_listings_by_city, search_listings_full) accept page and limit parameters and return total_count in every response. Divide total_count by your chosen limit to determine the total number of pages. Note that total_floor_plans will often differ from total_count because a single building listing can contain multiple floor plans.