Discover/REALTOR API
live

REALTOR APIrealtor.ca

Search and retrieve Canadian real estate listings from REALTOR.ca. Get MLS data, property details, photos, pricing, agent info, and pagination via 2 endpoints.

Endpoint health
verified 4d ago
get_listing_details
search_listings
2/2 passing latest checkself-healing
Endpoints
2
Updated
22d ago

What is the REALTOR API?

The REALTOR.ca API provides access to Canadian MLS property listings through 2 endpoints: search_listings for geographic bounding-box searches with price, bedroom, and sort filters, and get_listing_details for full property data on a specific MLS number. Responses include structured fields for price, address, bedrooms, bathrooms, parking, agent contacts, brokerage details, and multi-resolution photo URLs.

Try it
Sort order for results
Maximum price filter. Omitting returns all prices above price_min.
Minimum price filter
Minimum number of bedrooms. Omitting returns all bedroom counts.
Page number for pagination (1-based)
Maximum latitude of search bounding box
Minimum latitude of search bounding box
Maximum longitude of search bounding box
Minimum longitude of search bounding box
Building type filter ID. Omitting returns all building types.
Number of results per page (max 50)
Transaction type filter
Property type group: 1 (residential)
Property search type: 1 (residential), 0 (all)
api.parse.bot/scraper/74c62a3e-07d2-4eb2-a736-d1542f09450d/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/74c62a3e-07d2-4eb2-a736-d1542f09450d/search_listings?price_max=3000000&price_min=1000000&bedrooms_min=3&current_page=1&latitude_max=43.85&latitude_min=43.45&longitude_max=-79.00&longitude_min=-79.76&records_per_page=10&property_type_group_id=1&property_search_type_id=1&sort=6-D&transaction_type_id=2' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace realtor-ca-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: REALTOR.ca SDK — search listings, drill into details, handle errors."""
from parse_apis.realtor_ca_property_listings_api import RealtorCa, Sort, TransactionType, ListingNotFound

client = RealtorCa()

# Search for residential listings in Toronto area, sorted by price ascending.
for listing in client.listings.search(
    latitude_max="43.85",
    longitude_max="-79.00",
    latitude_min="43.45",
    longitude_min="-79.76",
    price_min="1000000",
    price_max="3000000",
    sort=Sort.PRICE_ASC,
    transaction_type_id=TransactionType.FOR_SALE,
    limit=3,
):
    print(listing.address, listing.price, listing.bedrooms, listing.building_type)

# Drill into one listing for full details.
first = client.listings.search(
    latitude_max="43.70",
    longitude_max="-79.30",
    latitude_min="43.60",
    longitude_min="-79.50",
    sort=Sort.NEWEST,
    limit=1,
).first()

if first:
    detail = client.listings.get(mls_number=first.mls_number)
    print(detail.price, detail.address, detail.parking_spaces)
    for agent in detail.agents:
        print(agent.name, agent.position, agent.brokerage.name)

# Typed error handling for an expired MLS number.
try:
    client.listings.get(mls_number="X00000000")
except ListingNotFound as exc:
    print(f"Listing gone: {exc}")

print("exercised: listings.search / listings.get / ListingNotFound")
All endpoints · 2 totalmissing one? ·

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.

Input
ParamTypeDescription
sortstringSort order for results
price_maxstringMaximum price filter. Omitting returns all prices above price_min.
price_minstringMinimum price filter
bedrooms_minstringMinimum number of bedrooms. Omitting returns all bedroom counts.
current_pageintegerPage number for pagination (1-based)
latitude_maxstringMaximum latitude of search bounding box
latitude_minstringMinimum latitude of search bounding box
longitude_maxstringMaximum longitude of search bounding box
longitude_minstringMinimum longitude of search bounding box
building_type_idstringBuilding type filter ID. Omitting returns all building types.
records_per_pagestringNumber of results per page (max 50)
transaction_type_idstringTransaction type filter
property_type_group_idstringProperty type group: 1 (residential)
property_search_type_idstringProperty search type: 1 (residential), 0 (all)
Response
{
  "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

Search Listings by Geography and Filters

The search_listings endpoint accepts a geographic bounding box defined by latitude_min, latitude_max, and longitude_max (along with implied longitude minimum) to return MLS listings within that area. You can narrow results with price_min, price_max, and bedrooms_min, and control ordering with the sort parameter — 6-D for price descending, 6-A for price ascending, or 1-A for newest first. Pagination is handled via current_page, and every response includes a pagination object with current_page, total_pages, total_records, and records_per_page so you can walk through large result sets.

Listing Detail Fields

The get_listing_details endpoint takes a single required input — property_id, which is an MLS number such as W13040146 — and returns a full property record. That record includes price (formatted with currency symbol), address, bedrooms, stories, parking (as an array of type strings), photos with high_res, med_res, and low_res URL variants, and media as an array of typed media objects. Agent data comes back as an array under agents, with each entry containing name, position, phones, and brokerage details.

MLS Number Lifecycle

MLS numbers are tied to active listings and expire when a property is removed from the market. Passing an expired or invalid property_id to get_listing_details returns a stale_input response with kind input_not_found rather than an error. For any production use, MLS numbers should be sourced from fresh search_listings results via results[*].mls_number to minimize stale lookups.

Coverage Scope

The API covers publicly listed properties across Canada on REALTOR.ca, including residential listings with bedroom, bathroom, parking, and multi-resolution photo data. Listing URLs are returned in both endpoints, pointing directly to the canonical REALTOR.ca page for each property.

Reliability & maintenanceVerified

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.

Last verified
4d ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a Canadian property search map using bounding-box coordinates and price filters from search_listings
  • Display MLS listing cards with multi-resolution photos and formatted price from get_listing_details
  • Track agent and brokerage contact details for lead generation or CRM enrichment
  • Monitor new listings in a target area by polling search_listings sorted by 1-A (newest first)
  • Filter properties by minimum bedroom count and maximum price for a buyer-facing search tool
  • Paginate through large metropolitan result sets using the pagination.total_pages field
  • Build a listing detail page with parking type arrays, stories, and full agent phone data
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does REALTOR.ca have an official developer API?+
REALTOR.ca does not offer a public developer API. Data access is restricted to its member MLS boards and affiliated brokerages through proprietary RETS or DDF feeds, which require a membership agreement and are not generally available to independent developers.
What does `search_listings` return beyond basic price and address?+
Each listing object in the results array includes the MLS number, a direct URL to the listing on REALTOR.ca, bedroom and bathroom counts, photos (with multiple resolution tiers), and an agents array with name and brokerage data. The pagination object in the response tells you total_records and total_pages so you can iterate through result sets page by page.
What happens when I request details for a listing that has been sold or removed?+
The get_listing_details endpoint returns a stale_input response with kind input_not_found for any MLS number that is expired or invalid. To reduce stale lookups, always source property_id values from recent search_listings results rather than storing MLS numbers long-term.
Does the API return rental listings or commercial properties?+
The current endpoints are designed around residential MLS listings and their associated fields (bedrooms, bathrooms, parking, stories). Rental-specific or commercial property filtering is not currently exposed as a distinct parameter. You can fork this API on Parse and revise it to add endpoints or filter parameters targeting those listing types.
Is historical listing data or sold price history available?+
Not currently. Both endpoints return data for active listings only — there is no sold price history, days-on-market, or delisted property record in the response fields. You can fork the API on Parse and revise it to add an endpoint targeting historical or sold listing data if that surface becomes accessible.
Page content last updated . Spec covers 2 endpoints from realtor.ca.
Related APIs in Real EstateSee all →
rew.ca API
Search rental and for-sale properties across Canada, get detailed listing information, explore neighbourhoods, and find real estate agents in your area. Access property details, agent profiles, and neighbourhood data all in one place.
rentals.ca API
Search and browse rental listings across Canada by city or neighbourhood, and view detailed property information including prices, amenities, and availability. Find your next home by filtering thousands of rental properties on Rentals.ca in real-time.
realtor.com API
Search millions of real estate listings on Realtor.com, view detailed property information, find qualified agents in your area, and access market analytics to understand pricing trends. Get location suggestions and property insights all in one place to help you make informed decisions about buying, selling, or investing in real estate.
zoocasa.com API
Search Canadian real estate listings on Zoocasa and retrieve detailed property information including active listings, sold homes, and rental properties. Access comprehensive listing details and discover comparable properties by location, property type, and listing status.
centris.ca API
Search and retrieve real estate listings from Centris.ca, Canada's largest real estate platform. Filter by location, property type, price range, and keywords to find houses, condos, plexes, and multi-generational properties across Quebec. Get detailed listing information including price, address, room counts, and photos.
condos.ca API
Search and browse comprehensive condo listings across Canada while accessing detailed building information, neighbourhood statistics, and mortgage calculators to make informed real estate decisions. Get instant market data, compare properties, and estimate mortgage payments all from one integrated platform.
realestate.com.au API
Search and retrieve property listing data from realestate.com.au, including listings for sale and rent, detailed property information, and nearby schools for any location across Australia.
realestateview.com.au API
Search and explore rental property listings across Australia with detailed information including photos, property types, agent details, and nearby listings. Find available rentals by location, compare properties, and discover similar listings in your area of interest.