A common question is whether Houski is "like the Multiple Listing Service (MLS), but for developers." It is not. The two products exist for different reasons, hold different data, and gate access differently. This post lays out the actual differences so you can decide which one fits the problem you are trying to solve.
Houski holds roughly 19 million Canadian properties with more than 200 fields each, sourced from public, government, and crowdsourced data. The MLS is a network of regional listing systems operated by real estate boards, used by their members to share active inventory and historical transactional data among themselves. Both are useful. They are not substitutes.
What each system actually contains
The MLS, at its core, is an inventory system for active and recently active listings, including private transactional data its members share with each other. Active listings on the MLS feed through to portals like realtor.ca, which mirror the inventory side. The deepest value of the MLS is internal: recorded sale prices, days on market history, agent-only remarks, and similar fields are available to board members but are not in any general-access dataset in Canada.
Houski is a normalized property dataset built from public, government, and crowdsourced sources. Every property in Canada is in it, whether or not it has ever been listed. The fields lean toward the physical and contextual rather than the transactional. Construction year, interior area, lot dimensions, roof age, heating type, basement type, assessment values, listing history, permit history, zoning, neighbourhood context, and our own model-based valuation estimates.
The two datasets overlap on listings. Houski ingests publicly available listing information, so list prices, days on market, and listing history are present. Recorded sale prices are not. Those sit behind the MLS and provincial land-titles registries and we do not have access to them.
If your workflow depends on recorded sales, the MLS or a land-titles pull is the right tool. If your workflow depends on physical property characteristics across the full Canadian housing stock, Houski is the right tool. A lot of work needs both.
Access shape
The MLS is access-controlled. You join a real estate board, you abide by its rules, and you get access through approved software. The Canadian Real Estate Association (CREA) runs a Data Distribution Facility that offers a feed for technology partners, but it covers active listings only and requires a participating broker.
Houski is a property data API. You sign up, you get an API key, you pay per usage. There is no membership and no licensing requirement. The whole product is designed around the idea that someone building a flood-risk tool, a relocation calculator, an investment underwriter, or a city-planning dashboard should not have to become a board member to read public data.
This is the part that most people are actually asking about when they ask "MLS or Houski." If the question is "I want to build software that needs to read property data," the access model is usually the deciding factor.
Coverage shape
The MLS shows you the slice of the market that is currently listed, plus historical listings that its members have logged. Houski shows you the universe of parcels, most of which are not listed and never will be in any given year. A typical year sees somewhere between three and five percent of Canadian housing stock change hands. The other ninety-five-plus percent is invisible to the MLS but is right there in Houski.
That matters or it does not depending on what you are doing. A buyer's agent shopping for inventory wants the active-listings view. A municipal planner wants the parcel view. A short-term rental operator scoring potential acquisitions wants the parcel view with listing context layered on top.
Where the two work well together
If you have MLS access through your brokerage and you want to enrich it, Houski is useful. You take an address from a listing, you call our API, and you get back physical characteristics, assessment values, permit history, listing history beyond what your local board carries, and an automated valuation as a sanity check. Same address, broader context.
The reverse also works. If you are building on Houski and you need recorded sale prices for a specific assignment, that data exists behind MLS access or behind a provincial land-titles pull, and you can layer it on top of the Houski record for that one address.
A quick technical look
Most of what people want from a property dataset is "give me an address and tell me what is there." The block below is a live call against the real API, the request code and the JSON response are generated every time this page is rendered:
const houski_data = async (): Promise<PropertiesResponse> => {
// You must copy the PropertiesResponse type declarations from the
// Houski API documentation to strongly type the response
const url = new URL('https://api.houski.ca/properties');
url.searchParams.set('api_key', 'YOUR_API_KEY');
url.searchParams.set('city', 'calgary');
url.searchParams.set('country_abbreviation', 'ca');
url.searchParams.set('province_abbreviation', 'ab');
url.searchParams.set('select', 'interior_sq_m,bedroom,bathroom_full,construction_year,property_type,assessment_value,latitude,longitude');
const response = await fetch(url);
const data = await response.json();
return data;
}
(async () => {
let data: PropertiesResponse = await houski_data();
// Log the response
console.log(data);
})();
{
"cache_hit": false,
"cost_cents": 3.299999713897705,
"data": [
{
"address": "31 Hawkside Park NW",
"assessment_value": 648500,
"bathroom_full": 3,
"bedroom": 3,
"construction_year": 1988,
"interior_sq_m": 126.34708404541016,
"latitude": 51.12946319580078,
"longitude": -114.17919921875,
"property_id": "10000f97f5cb7b9f",
"property_type": "Duplex"
},
{
"address": "6 1744 7 Street SW",
"bathroom_full": 2,
"bedroom": 3,
"construction_year": 2006,
"interior_sq_m": 125.882568359375,
"latitude": 51.03611755371094,
"longitude": -114.0792007446289,
"property_id": "10004f7afe0c1946",
"property_type": "House"
},
{
"address": "384 Copperpond Landng SE",
"bathroom_full": 2,
"bedroom": 3,
"construction_year": 2006,
"interior_sq_m": 125.882568359375,
"latitude": 50.925743103027344,
"longitude": -113.92975616455078,
"property_id": "10007f9761f49940",
"property_type": "House"
},
{
"address": "239 Dalhurst Way NW",
"assessment_value": 1110000,
"bathroom_full": 2,
"bedroom": 3,
"construction_year": 1971,
"interior_sq_m": 108.46339416503906,
"latitude": 51.110740661621094,
"longitude": -114.1513900756836,
"property_id": "100086f6bc064d3f",
"property_type": "House"
},
{
"address": "52 Cedargrove Way SW",
"assessment_value": 662000,
"bathroom_full": 1,
"bedroom": 3,
"construction_year": 1984,
"interior_sq_m": 136.4734344482422,
"latitude": 50.95145034790039,
"longitude": -114.12571716308594,
"property_id": "1000c277cd905d3b",
"property_type": "House"
},
{
"address": "28 Sundown Gr SE",
"assessment_value": 692500,
"bathroom_full": 3,
"bedroom": 3,
"construction_year": 1988,
"interior_sq_m": 172.61241149902344,
"latitude": 50.899044036865234,
"longitude": -114.04895782470705,
"property_id": "1001109ab2aebbc0",
"property_type": "House"
}
],
"error": "",
"pagination": {
"current_page": 1,
"has_next_page": true,
"has_previous_page": false,
"page_total": 113490
},
"price_quote": false,
"result_total": 680936,
"time_ms": 79,
"ui_info": {
"city": "Calgary",
"city_id": "6ec95b53075d062c",
"city_link": "ca/ab/calgary",
"city_slug": "calgary",
"country": "Canada",
"country_abbreviation": "CA",
"country_abbreviation_id": "9ace2b6431b7f1be",
"country_abbreviation_link": "ca",
"country_slug": "canada",
"province": "Alberta",
"province_abbreviation": "AB",
"province_abbreviation_id": "aae1f05a0f89d2c7",
"province_abbreviation_link": "ca/ab",
"province_slug": "alberta"
}
}
One API key, one endpoint, the same field names across every province. No regional integrations and no field-name reconciliation.
How to choose
If the question is which one to use, the honest answer is what kind of data your problem actually needs.
Reach for the MLS when you need recorded sale prices, agent-side remarks, or the transactional history that boards share among their members.
Reach for Houski when you need the full Canadian parcel base, physical characteristics standardized across provinces, assessment values, listing context, permit data, or a model-based valuation. Reach for Houski when you are building software and the access model of a real estate board is the wrong shape for what you are doing.
A lot of teams end up using both. They are not really competitors. They are different cuts through the same housing stock.
The quick start guide walks through your first Houski call. The field list shows you every field we carry.
