# REALTOR.ca (Canadian Real Estate Association) > REALTOR.ca is the national residential listing portal of the Canadian Real Estate Association > (CREA). Its developer surface is the REALTOR.ca Data Distribution Facility (DDF) Web API — a > single national OData v4 service at https://ddfapi.realtor.ca/odata/v1 that republishes MLS > System listing data from roughly 60 Canadian member boards, normalized to the RESO Data > Dictionary. Unlike the United States, where ~500 independent MLSs each run their own pipe, > Canadian syndication is consolidated through one rail. The documentation, the OpenAPI and the > OpenID Connect discovery document are all public; the data is not. Every endpoint — including the > OData $metadata document — returns HTTP 401 without a Bearer token, and tokens are issued only > with data-feed credentials that a licensed REALTOR or broker owner must create and link first. Generated by API Evangelist on 2026-07-26 from the apis.yml catalog entry and the artifacts in this repository. CREA publishes no llms.txt of its own (probed 2026-07-26: 404 on ddfapi.realtor.ca, ddfapi-docs.realtor.ca and www.crea.ca; the 200 on www.realtor.ca/llms.txt is an Imperva challenge shell, not a document). ## Access model — read this first - No self-serve signup. No developer portal. No sandbox. No free tier. - You must be, or be sponsored by, a CREA member (a licensed REALTOR or broker owner). The member registers a DDF "Destination" (data feed) at https://member.realtor.ca/Distribution/Default.aspx and links it to you. - Your `client_id` / `client_secret` are the *username and password of that Destination*, not a developer key. A Technology Provider enumerates the feeds linked to it with GET /odata/v1/Destination. - Display obligations ride with the data: a clickable "Powered by REALTOR.ca" badge on every listing, and "Email REALTOR" forms must be routed through the Lead API because member email addresses are withheld from the payloads. ## APIs - [REALTOR.ca DDF Web API](https://ddfapi-docs.realtor.ca/): OData v4 read access to Property, Member, Office, OpenHouse and Destination, plus per-resource Replication endpoints for incremental sync. Base URL https://ddfapi.realtor.ca/odata/v1 - [REALTOR.ca DDF Lead API](https://ddfapi-docs.realtor.ca/): POST /v1/Lead/CreateLead — the only write operation in the surface. Base URL https://ddfapi.realtor.ca/v1 - [CREA Analytics Web Service](https://ddfapi-docs.realtor.ca/): fire-and-forget View / Click / email_realtor event logging against a ListingID and DestinationID. Base URL https://analytics.crea.ca/LogEvents.svc - [CREA Identity Server](https://identity.crea.ca/.well-known/openid-configuration): OAuth 2.0 / OpenID Connect authorization server issuing every DDF access token. ## Authentication - POST https://identity.crea.ca/connect/token, `application/x-www-form-urlencoded` - `grant_type=client_credentials`, `client_id`=Destination username, `client_secret`=Destination password, `scope=DDFApi_Read` - Response: `access_token`, `expires_in` 3600, `token_type` Bearer, `scope` DDFApi_Read - Send `Authorization: Bearer {access_token}` on every call. Tokens are NOT sliding — re-mint hourly. - Server-to-server only; CREA explicitly warns against client-to-server token requests. ## Conventions - OData query options: `$select`, `$filter`, `$top`, `$skip`, `$orderby`, `$count` - Operators: eq ne gt lt ge le and or not in has. Functions: `any`, `contains` (string fields only). - Pagination: default 20 per page, max 100 via `$top`; follow `@odata.nextLink`. Always `$orderby` — without it, pages can repeat records. Past 10,000 records you must switch to the Replication endpoints. - Incremental sync: poll `{Resource}Replication()` (or `Replication(DestinationId={id})`) sorted by `ModificationTimestamp`; `PhotoChangeTimestamp` for media. All timestamps UTC. - No webhooks, no events, no streaming. No `$expand` — Media, Rooms and SocialMedia come inline. - No idempotency key on the one write operation. No documented rate limits. - Errors: `{"error":{"message","code","details"}}` on OData; a flat `{success,message,code,details}` body on the Lead API. Not RFC 9457. - Testing: no sandbox. `POST /v1/Lead/CreateLead?SuppressEmail=true` runs a real submission without emailing the REALTOR. ## Specs - [OpenAPI 3.0.4, live copy](https://ddfapi.realtor.ca/swagger/v1/swagger.json): 17 operations, 157 schemas. Caveats: `servers` is left at `https://localhost:7051`, there is no `components.securitySchemes` block, and 14 of 17 operations have no `operationId`. - [OpenAPI 3.0.4, documentation copy](https://ddfapi-docs.realtor.ca/): same paths and schemas plus the full 35,698-character narrative (quickstart, authorization, OData guide, Technology Provider guide, analytics, Lead API, error codes). - [OData $metadata](https://ddfapi.realtor.ca/odata/v1/$metadata): the authoritative contract and the home of every lookup enumeration. Returns 401 anonymously — it is not publicly readable. ## Docs - [DDF Web API documentation](https://ddfapi-docs.realtor.ca/) - [Release notes / changelog](https://ddfapi-docs.realtor.ca/releasenotes) - [CREA DDF product pages](https://www.crea.ca/ddf/) - [Support](https://support.crea.ca/) — support@realtor.ca, English only - [Developer forum](https://crea.vanillacommunity.com/) ## Standards posture - OData v4 / RESO Web API shape: yes. RESO Data Dictionary field names: yes. - RESO *certified*: no evidence found. CREA appears in RESO's Canadian member list; no CREA, REALTOR.ca or DDF entry could be confirmed in the RESO certification directory, and CREA never publishes a Data Dictionary version or a Web API Core certification level. Treat as aligned, not certified. - No RESO Universal Property Identifier (UPI). Records are keyed on ListingKey / MemberKey / OfficeKey / OpenHouseKey / DestinationKey. ## Not offered No public consumer search API for realtor.ca. No open dataset (CREA's housing statistics at https://stats.crea.ca/ are web reports only). No property/title records — Canadian land registration is provincial and largely operated under private concession. No valuation/AVM, documents or payments products. No first-party SDKs, no CLI, no Postman collection, no status page, no roadmap.