Ask a homeowner what their plumbing pipes are made of. Go ahead. Ask them their foundation type, their roof material, the year the house was built, the square footage on the assessment. These are the questions a home insurance quote requires, and the honest answer to most of them, for most homeowners, is "no idea."
So they guess, which poisons your rating data. Or they go find the documents, which means they left your form and may never come back. Or they abandon on question eleven of forty, which is the outcome your conversion dashboard already knows about.
The absurd part is that you are asking a human to recall facts that exist as structured data. Houski has over 19 million Canadian properties with 200-plus fields each. The customer should type one thing - their address - and the form should fill itself in.
The flow is two calls
The customer types their address. First call resolves it to a property:
const houski_data = async (): Promise<SearchResponse> => {
// You must copy the SearchResponse type declarations from the
// Houski API documentation to strongly type the response
const url = new URL('https://api.houski.ca/search');
url.searchParams.set('api_key', 'YOUR_API_KEY');
url.searchParams.set('query', '123+main+st+calgary');
const response = await fetch(url);
const data = await response.json();
return data;
}
(async () => {
let data: SearchResponse = await houski_data();
// Log the response
console.log(data);
})();
{
"cache_hit": true,
"cost_cents": 0.19999998807907104,
"data": [
{
"address": "1215 19489 Main Street SE",
"property_id": "1a0d9646b3b7fee4"
},
{
"address": "20913 Main Street Southeast",
"property_id": "1bb955452668e179"
},
{
"address": "1206 19489 Main Street SE",
"property_id": "25dbe5737d863d68"
},
{
"address": "20693 Main Street Southeast",
"property_id": "265563c5cf7aaeb"
},
{
"address": "1203 19489 Main Street SE",
"property_id": "2cb6522c907d3cad"
},
{
"address": "1217 19489 Main Street SE",
"property_id": "3c360263b5035097"
},
{
"address": "1218 19489 Main Street SE",
"property_id": "3e9b995b7a2575cf"
},
{
"address": "120 180 Legacy Main Street SE",
"property_id": "4715657394081588"
},
{
"address": "1209 19489 Main Street SE",
"property_id": "4e6754f302f2956c"
},
{
"address": "151 Legacy Main Street Southeast",
"property_id": "61a5c09375eb16aa"
}
],
"error": "",
"match_meta": [
{
"match_value": 0.8333333134651184,
"property_id": "1a0d9646b3b7fee4"
},
{
"match_value": 0.8333333134651184,
"property_id": "1bb955452668e179"
},
{
"match_value": 0.8333333134651184,
"property_id": "25dbe5737d863d68"
},
{
"match_value": 0.8333333134651184,
"property_id": "265563c5cf7aaeb"
},
{
"match_value": 0.8333333134651184,
"property_id": "2cb6522c907d3cad"
},
{
"match_value": 0.8333333134651184,
"property_id": "3c360263b5035097"
},
{
"match_value": 0.8333333134651184,
"property_id": "3e9b995b7a2575cf"
},
{
"match_value": 0.8333333134651184,
"property_id": "4715657394081588"
},
{
"match_value": 0.8333333134651184,
"property_id": "4e6754f302f2956c"
},
{
"match_value": 0.8333333134651184,
"property_id": "61a5c09375eb16aa"
}
],
"price_quote": false,
"result_total": 10,
"time_ms": 1007
}
That returns a property_id and a match confidence score. Second call pulls the rating fields:
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('property_id_eq', '1a0d9646b3b7fee4');
url.searchParams.set('select', 'address,property_type,construction_year,construction_year_source,interior_sq_m,interior_sq_m_source,roof_material,heating_type_first,plumbing_pipe_material,foundation_type,basement_type,garage_type_first,bathroom_total,estimate_list_price');
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": 1.0500000715255735,
"data": [
{
"address": "1215 19489 Main Street SE",
"basement_type": "None",
"bathroom_total": 2,
"construction_year": 2019,
"construction_year_source": "Document",
"estimate_list_price": 344399,
"foundation_type": "Wood",
"garage_type_first": "Attached",
"heating_type_first": "Gas furnace",
"interior_sq_m": 91.2300262451172,
"interior_sq_m_source": "Estimate",
"plumbing_pipe_material": "PEX",
"property_id": "1a0d9646b3b7fee4",
"property_type": "Apartment",
"roof_material": "Asphalt"
}
],
"error": "",
"pagination": {
"current_page": 1,
"has_next_page": false,
"has_previous_page": false,
"page_total": 1
},
"price_quote": false,
"result_total": 1,
"time_ms": 922,
"ui_info": {
"address": "1215 19489 Main Street SE",
"address_link": "ca/ab/calgary/seton/1215-19489-main-street-se",
"address_slug": "1215-19489-main-street-se",
"city": "Calgary",
"city_id": "6ec95b53075d062c",
"city_link": "ca/ab/calgary",
"city_slug": "calgary",
"community": "Seton",
"community_id": "95779070d04b0f16",
"community_link": "ca/ab/calgary/seton",
"community_slug": "seton",
"country": "Canada",
"country_abbreviation": "CA",
"country_abbreviation_id": "9ace2b6431b7f1be",
"country_abbreviation_link": "ca",
"country_slug": "canada",
"parent_address": "19489 Main Street SE",
"parent_property_id": "5bdf400a7bb491c8",
"property_id": "1a0d9646b3b7fee4",
"province": "Alberta",
"province_abbreviation": "AB",
"province_abbreviation_id": "aae1f05a0f89d2c7",
"province_abbreviation_link": "ca/ab",
"province_slug": "alberta"
}
}
For that particular property, a real apartment in Calgary, the response reads: built 2019, asphalt roof, gas furnace, PEX plumbing, wood foundation, attached garage, two bathrooms, 91 square metres, with a current value estimate alongside. That is most of a home quote application, returned in a few hundred milliseconds, from one field the customer actually knows.
The whole two-call sequence costs a cent or two. Against what an acquired quote-start is worth, it rounds to free.
Confirm, do not ask
The design that works is not "skip the questions." It is "turn questions into confirmations." Instead of a blank dropdown labelled Roof Material, the customer sees "Asphalt shingle roof - is that right?" with a yes and an edit button.
This distinction matters for two reasons. First, confirming a filled value is seconds and typing an unknown one is an abandonment risk, so completion rates move immediately. Second, when the prefill is occasionally wrong, the customer corrects it in one tap, and a customer-corrected value is better data than a customer-guessed one ever was. You come out ahead on both the houses we got right and the houses we got wrong.
Be honest about where the values come from, because we are
Some fields carry an explicit provenance flag. In the response above, construction_year_source reads Document, meaning that value is backed by a records match, while interior_sq_m_source reads Estimate, meaning it is modelled. Where a source field exists, you can wire your form to trust documented values harder - confirm-and-collapse for documented, confirm-with-emphasis for estimated.
Fields without a source flag should all be treated as well-informed estimates and put in front of the customer for confirmation. That is not a weakness in the flow. Confirmation was the design anyway, and an estimate that is right most of the time still saves most customers most of the typing.
What you should not do is bind coverage off prefilled values nobody confirmed. The prefill is a conversion layer and a data-quality layer. The customer's confirmation is what makes it an application.
The same call can triage the risk before you quote it
The fields that fill the form are also the fields that rate the risk, and they arrive together. Plumbing pipe material and heating type are underwriting signals on their own. Add the hazard scores - score_flood and score_fire, where higher always means safer - and the same address lookup that prefilled the form can route the applicant before a human touches the file:
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('property_id_eq', '1a0d9646b3b7fee4');
url.searchParams.set('select', 'address,score_flood,score_fire,plumbing_pipe_material,heating_type_first');
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": 0.41999998688697815,
"data": [
{
"address": "1215 19489 Main Street SE",
"heating_type_first": "Gas furnace",
"plumbing_pipe_material": "PEX",
"property_id": "1a0d9646b3b7fee4",
"score_fire": 5,
"score_flood": 10
}
],
"error": "",
"pagination": {
"current_page": 1,
"has_next_page": false,
"has_previous_page": false,
"page_total": 1
},
"price_quote": false,
"result_total": 1,
"time_ms": 134,
"ui_info": {
"address": "1215 19489 Main Street SE",
"address_link": "ca/ab/calgary/seton/1215-19489-main-street-se",
"address_slug": "1215-19489-main-street-se",
"city": "Calgary",
"city_id": "6ec95b53075d062c",
"city_link": "ca/ab/calgary",
"city_slug": "calgary",
"community": "Seton",
"community_id": "95779070d04b0f16",
"community_link": "ca/ab/calgary/seton",
"community_slug": "seton",
"country": "Canada",
"country_abbreviation": "CA",
"country_abbreviation_id": "9ace2b6431b7f1be",
"country_abbreviation_link": "ca",
"country_slug": "canada",
"parent_address": "19489 Main Street SE",
"parent_property_id": "5bdf400a7bb491c8",
"property_id": "1a0d9646b3b7fee4",
"province": "Alberta",
"province_abbreviation": "AB",
"province_abbreviation_id": "aae1f05a0f89d2c7",
"province_abbreviation_link": "ca/ab",
"province_slug": "alberta"
}
}
High flood safety and modern plumbing goes straight down the standard path. A low flood safety score routes to the broker who handles that conversation well, with the right product, instead of generating a decline after the customer already invested twenty minutes. For the full underwriting treatment of these scores, see our posts on climate risk underwriting and catastrophe risk scores.
Where this does not reach
Contents, claims history, and the humans. Houski knows the building. It does not know what is inside it, who lives there, or what they have claimed before. The form gets shorter, it does not disappear.
The one-week-old renovation. The customer who just replaced their roof knows something the data does not yet. The edit button is there for exactly this, and their correction is a fresher fact than anyone's database.
Coverage everywhere is not uniform. Every address returns values, but depth varies by region. Test the flow on your actual customer geography before you commit the redesign.
The pre-built version
The datasets page carries Home insurance pre-screening and Insurance inspection leads if you want screened lists rather than per-quote lookups. And if your quoting system needs the fields in a specific shape - your rating engine's schema, your carrier's vocabulary for roof types - our data team builds custom datasets to spec. Ask for one.
Getting started
- Sign up for API access
- Wire the search endpoint to your address field
- Map our fields to your form - start with construction year, roof, heating, plumbing, square footage
- Ship it as confirmations, not answers
- Watch completion rate on the prefilled form against the old one, and let that number make the case internally
Most fields cost a tenth of a cent per field per property. Details on the pricing page.
Your quote form is a test the customer did not study for. Let them answer the one question they know cold, and confirm the rest. Explore the API or browse the datasets.
