REALTOR APIrealtor.ca ↗
Search active, sold, and rented Canadian property listings from REALTOR.ca. Get MLS details, photos, agent info, pricing, and pagination across all of Canada.
What is the REALTOR API?
This API provides access to Canadian real estate data from REALTOR.ca across 4 endpoints, covering active listings, sold properties, and rented units. The search_listings endpoint accepts a geographic bounding box plus filters for price, bedrooms, and sort order, returning paginated results with MLS numbers, addresses, photos, and agent details. Use get_listing_details to fetch full property records by MLS number.
curl -X GET 'https://api.parse.bot/scraper/74c62a3e-07d2-4eb2-a736-d1542f09450d/search_listings?sort=6-D&price_max=3000000&price_min=1000000&bedrooms_min=3¤t_page=1&latitude_max=43.85&latitude_min=43.45&longitude_max=-79.00&longitude_min=-79.76&records_per_page=10&transaction_type_id=2&property_type_group_id=1&property_search_type_id=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for property listings within a geographic bounding box with price and property filters. Returns paginated results ordered by the sort parameter. The bounding box coordinates define the search area; omitting them searches across all of Canada. Each listing in the response carries an mls_number usable with get_listing_details for full property information.
| Param | Type | Description |
|---|---|---|
| sort | string | Sort order for results |
| price_max | string | Maximum price filter. Omitting returns all prices above price_min. |
| price_min | string | Minimum price filter |
| bedrooms_min | string | Minimum number of bedrooms. Omitting returns all bedroom counts. |
| current_page | integer | Page number for pagination (1-based) |
| latitude_max | string | Maximum latitude of search bounding box |
| latitude_min | string | Minimum latitude of search bounding box |
| longitude_max | string | Maximum longitude of search bounding box |
| longitude_min | string | Minimum longitude of search bounding box |
| building_type_id | string | Building type filter ID. Omitting returns all building types. |
| records_per_page | string | Number of results per page (max 50) |
| transaction_type_id | string | Transaction type filter |
| property_type_group_id | string | Property type group: 1 (residential) |
| property_search_type_id | string | Property search type: 1 (residential), 0 (all) |
{
"type": "object",
"fields": {
"listings": "array of listing objects with id, mls_number, url, address, price, bedrooms, bathrooms, photos, agents, and more",
"pagination": "object containing current_page, total_pages, total_records, records_per_page, records_showing"
}
}About the REALTOR API
Searching Active Listings
The search_listings endpoint accepts up to eight parameters: bounding box coordinates (latitude_min, latitude_max, longitude_min, longitude_max), price_min, price_max, bedrooms_min, sort, and current_page. Omitting the bounding box searches all of Canada. Each listing object in the listings array includes mls_number, url, address, price, bedrooms, bathrooms, photos, and agents. Pagination is returned as a separate object with current_page, total_pages, total_records, records_per_page, and records_showing.
Listing Details
The get_listing_details endpoint takes a single required property_id (the MLS number from a search_listings result) and returns the full record for that listing. Response fields include media (typed media objects with URLs), multi-resolution photos (high, medium, low), parking types, stories, price, address, and agents with name, position, phone numbers, and brokerage details. MLS numbers expire when listings are removed; stale IDs return a stale_input error with kind input_not_found.
Sold and Rented Listings
The search_sold_listings endpoint uses the same geographic and price filter parameters as search_listings but targets completed sales. Each result includes sold_price, sold_date, and sold_on_realtor_utc alongside standard address and bedroom/bathroom fields. The search_rented_listings endpoint works identically but targets completed rentals; its price_min and price_max filters apply to monthly rent, and results include lease_rent and lease_rent_raw fields. Both endpoints return the same pagination structure as the active listings search.
The REALTOR API is a managed, monitored endpoint for realtor.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when realtor.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 realtor.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?+
- Build a Canadian property search tool filtered by city bounding box, price range, and minimum bedrooms using
search_listings. - Track recent sale prices in a neighbourhood by querying
search_sold_listingswith a tight latitude/longitude bounding box. - Aggregate rental market data for a postal code area using
search_rented_listingsand thelease_rent_rawfield. - Display full listing pages with high-resolution photos and agent contact details via
get_listing_details. - Monitor new listings in a target area by polling
search_listingswithsortset to newest and comparing returned MLS numbers. - Compile brokerage and agent activity reports by extracting agent and brokerage fields from listing detail responses.
- Support a mortgage or valuation tool by pairing active listing prices with nearby sold prices from
search_sold_listings.
| 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 REALTOR.ca have an official developer API?+
What does `get_listing_details` return beyond what `search_listings` includes?+
high_res, med_res, and low_res URLs; a media array with typed media objects; parking type strings; stories; and fuller agent records including individual phone numbers and complete brokerage details.How does pagination work across these endpoints?+
pagination object alongside the listings array. It contains current_page, total_pages, total_records, records_per_page, and records_showing. Pass the current_page integer parameter (1-based) to step through result sets. There is no cursor-based pagination; all navigation is page-number driven.Does the API expose property tax records, walk scores, or neighbourhood statistics?+
Are sold prices always available in `search_sold_listings` results?+
sold_price field is included when available, but some provincial real estate board rules restrict disclosure of exact sale prices. In those cases the field may be absent or null even though the listing appears in results. The sold_date and sold_on_realtor_utc fields are more consistently populated.