!

/properties

GET
https://api.houski.ca/properties

This endpoint returns detailed information about properties. It can be used to get information for multiple properties, or just one.

This endpoint conforms to Houski API's standard filtering, sorting, and selection functionality.

To see all the fields that can be selected, filtered or sorted by, see the fields page.

To find data on all available location values, such as country_abbreviation, province_abbreviation, city and community, you can use the /locations endpoint.

Example use cases

You can find examples for common use cases on our recipes page.
  1. Build a real estate website and provide your users with detailed information about properties they are interested in.
  2. Analyze property market trends, identify areas with high demand or low supply, and make informed investment decisions.
  3. Government agencies or urban planners can use this endpoint to gather data on population density, average income, and other factors that influence city planning decisions.
  4. Insurance companies can use this endpoint to gather data on property values to help determine insurance rates.
  5. Appraisal services can use this endpoint API to gather data on property values and trends to help determine the value of a property.
  6. Create customized Automated Valuation Models (AVM).
  7. Target developers or business owners looking for properties in certain zones using the zoning field.
  8. Appeal to workshop enthusiasts with information on workshop types using the workshop_type field.
  9. Leverage score_transit to attract commuters or those who prefer not to own a vehicle.
  10. Utilize various score fields to create a property recommendation engine.

Request parameters

NameRequiredTypeDescription
api_keyYesUUID v4Authorization API key
country_abbreviationNoStringA country abbreviation
province_abbreviationNoStringA province abbreviation within the country
cityNoStringA city within the province
communityNoStringA community within the city
bbox_ne_lngNoNumberNortheast longitude for bounding box.
bbox_sw_latNoNumberSouthwest latitude for bounding box.
bbox_sw_lngNoNumberSouthwest longitude for bounding box.
polygonNoPolygon filter stringGet results inside a polygon.
results_per_pageNoIntegerNumber of results per page
selectNoString - see selectingThe fields to return - address and property_id are always selected

Response object

Type declarations are available at the bottom of this page.

NameTypeDescription
cache_hitBooleanIndicates if the response was a cache hit
cost_centsNumberCost of the request in cents
dataArray of objectsContains the data for the properties
errorStringDetails about the error. Empty if no error
paginationObjectContains pagination info like current page and total pages
price_quoteBooleanIndicates whether the response is a price quote
result_totalNumberThe total number of results
time_msNumberTime taken for the request to complete in milliseconds
ui_infoObjectUseful metadata to create user interfaces

Example requests and responses

Programming language

Select the programming language you want to display the code examples in.

Get a list of properties

Get a list of properties in a given location.

Request
Shell session
curl -X GET "https://api.houski.ca/properties?api_key=YOUR_API_KEY&city=calgary&community=riverbend&country_abbreviation=ca&province_abbreviation=ab&results_per_page=3&select=bedroom,den,estimate_list_price"
TypeScript code
const houski_get_properties = 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('community', 'riverbend');
    url.searchParams.set('country_abbreviation', 'ca');
    url.searchParams.set('province_abbreviation', 'ab');
    url.searchParams.set('results_per_page', '3');
    url.searchParams.set('select', 'bedroom,den,estimate_list_price');

    const response = await fetch(url);
    const data = await response.json();

    return data;
}

(async () => {
let data: PropertiesResponse = await houski_get_properties();

// Log the response
console.log(data);
})();
Response
JSON
{
  "cache_hit": true,
  "cost_cents": 1.5,
  "data": [
    {
      "address": "111 Rivervalley Drive SE",
      "bedroom": 3,
      "den": 0,
      "estimate_list_price": 766483,
      "property_id": "82b6d79e6d6fa92"
    },
    {
      "address": "140 Riverview Close SE",
      "bedroom": 3,
      "den": 1,
      "estimate_list_price": 840760,
      "property_id": "78b2b64562b4fad5"
    },
    {
      "address": "9013 21 Street SE",
      "bedroom": 3,
      "den": 0,
      "estimate_list_price": 571627,
      "property_id": "c163708bca5f3e42"
    }
  ],
  "error": "",
  "pagination": {
    "current_page": 1,
    "has_next_page": true,
    "has_previous_page": false,
    "page_total": 1195
  },
  "price_quote": false,
  "result_total": 3585,
  "time_ms": 29,
  "ui_info": {
    "city": "Calgary",
    "city_id": "6ec95b53075d062c",
    "city_link": "ca/ab/calgary",
    "city_slug": "calgary",
    "community": "Riverbend",
    "community_id": "f5c930e9ed9a38e4",
    "community_link": "ca/ab/calgary/riverbend",
    "community_slug": "riverbend",
    "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"
  }
}

Response type declarations

TypeScript code
interface PropertiesResponse {
    cache_hit: boolean;
    cost_cents: number;
    data: Property[];
    error: string;
    pagination: Pagination;
    price_quote: boolean;
    result_total: number;
    time_ms: number;
    ui_info: UiInfo;
}

interface UiInfo {
    address_link?: string | null;
    address_slug?: string | null;
    address?: string | null;
    city_id?: string | null;
    city_link?: string | null;
    city_slug?: string | null;
    city?: string | null;
    community_id?: string | null;
    community_link?: string | null;
    community_slug?: string | null;
    community?: string | null;
    country_abbreviation_id?: string | null;
    country_abbreviation?: string | null;
    country_slug?: string | null;
    country?: string | null;
    parent_address?: string | null;
    parent_property_id?: string | null;
    property_id?: string | null;
    province_abbreviation_id?: string | null;
    province_abbreviation_link?: string | null;
    country_abbreviation_link?: string | null;
    province_abbreviation?: string | null;
    province_slug?: string | null;
    province?: string | null;
}

interface Pagination {
    current_page: number;
    has_next_page: boolean;
    has_previous_page: boolean;
    page_total: number;
}

interface Property {
    city_id?: string | null;
    community_id?: string | null;
    country_abbreviation_id?: string | null;
    list_price_vs_estimate?: number | null;
    assessment_vs_estimate?: number | null;
    country_abbreviation_link?: string | null;
    province_abbreviation_link?: string | null;
    city_link?: string | null;
    community_link?: string | null;
    demographic_age_average_of_the_population?: number | null;
    demographic_age_median_of_the_population?: number | null;
    demographic_municipal_population_density_sq_km?: number | null;
    demographic_employment_pre_tax_income_percent?: number | null;
    demographic_employment_insurance_benefit_percent?: number | null;
    demographic_covid_19_government_pre_tax_income_support_and_benefit_percent?: number | null;
    demographic_language_most_spoken_first?: string | null;
    demographic_language_most_spoken_second?: string | null;
    demographic_language_most_spoken_third?: string | null;
    demographic_language_most_spoken_fourth?: string | null;
    demographic_language_most_spoken_fifth?: string | null;
    demographic_language_most_spoken_first_percent?: number | null;
    demographic_language_most_spoken_second_percent?: number | null;
    demographic_language_most_spoken_third_percent?: number | null;
    demographic_language_most_spoken_fourth_percent?: number | null;
    demographic_language_most_spoken_fifth_percent?: number | null;
    demographic_municipal_population?: number | null;
    demographic_municipal_population_male_percent?: number | null;
    demographic_municipal_population_female_percent?: number | null;
    demographic_dwellings_occupied_percent?: number | null;
    demographic_income_median_pre_tax?: number | null;
    demographic_income_median_after_tax?: number | null;
    demographic_income_average_pre_tax?: number | null;
    demographic_income_average_after_tax?: number | null;
    demographic_median_covid_19_emergency_and_recovery_benefits?: number | null;
    demographic_age_0_to_4_years_percent?: number | null;
    demographic_age_5_to_9_years_percent?: number | null;
    demographic_age_10_to_14_years_percent?: number | null;
    demographic_age_15_to_19_years_percent?: number | null;
    demographic_age_20_to_24_years_percent?: number | null;
    demographic_age_25_to_29_years_percent?: number | null;
    demographic_age_30_to_34_years_percent?: number | null;
    demographic_age_35_to_39_years_percent?: number | null;
    demographic_age_40_to_44_years_percent?: number | null;
    demographic_age_45_to_49_years_percent?: number | null;
    demographic_age_50_to_54_years_percent?: number | null;
    demographic_age_55_to_59_years_percent?: number | null;
    demographic_age_60_to_64_years_percent?: number | null;
    demographic_age_65_to_69_years_percent?: number | null;
    demographic_age_70_to_74_years_percent?: number | null;
    demographic_age_75_to_79_years_percent?: number | null;
    demographic_age_80_to_84_years_percent?: number | null;
    demographic_age_85_to_89_years_percent?: number | null;
    demographic_age_90_to_94_years_percent?: number | null;
    demographic_age_95_to_99_years_percent?: number | null;
    demographic_age_100_years_and_over_percent?: number | null;
    demographic_household_size_1_person_percent?: number | null;
    demographic_household_size_2_persons_percent?: number | null;
    demographic_household_size_3_persons_percent?: number | null;
    demographic_household_size_4_persons_percent?: number | null;
    demographic_household_size_5_or_more_persons_percent?: number | null;
    demographic_household_type_family_with_children_percent?: number | null;
    demographic_household_type_family_without_children_percent?: number | null;
    demographic_household_type_single_with_children_percent?: number | null;
    demographic_household_type_single_without_children_percent?: number | null;
    demographic_marital_status_married_percent?: number | null;
    demographic_marital_status_common_law_percent?: number | null;
    demographic_marital_status_single_percent?: number | null;
    demographic_income_under_10000_percent?: number | null;
    demographic_income_10000_to_19999_percent?: number | null;
    demographic_income_20000_to_29999_percent?: number | null;
    demographic_income_30000_to_39999_percent?: number | null;
    demographic_income_40000_to_49999_percent?: number | null;
    demographic_income_50000_to_59999_percent?: number | null;
    demographic_income_60000_to_69999_percent?: number | null;
    demographic_income_70000_to_79999_percent?: number | null;
    demographic_income_80000_to_89999_percent?: number | null;
    demographic_income_90000_to_99999_percent?: number | null;
    demographic_income_100000_to_149999_percent?: number | null;
    demographic_income_150000_and_over_percent?: number | null;
    demographic_education_level_no_certificate_diploma_or_degree_percent?: number | null;
    demographic_education_level_high_school_diploma_or_equivalency_certificate_percent?: number | null;
    demographic_education_level_apprenticeship_or_trades_certificate_or_diploma_percent?: number | null;
    demographic_education_level_bachelors_degree_percent?: number | null;
    demographic_education_level_degree_in_medicine_dentistry_veterinary_medicine_or_optometry_percent?: number | null;
    demographic_education_level_masters_degree_percent?: number | null;
    demographic_education_level_earned_doctorate_percent?: number | null;
    demographic_education_degree_teaching_percent?: number | null;
    demographic_education_degree_humanities_percent?: number | null;
    demographic_education_degree_social_and_behavioral_sciences_and_law_percent?: number | null;
    demographic_education_degree_business_management_and_public_administration_percent?: number | null;
    demographic_education_degree_physical_and_life_sciences_and_technologies_percent?: number | null;
    demographic_education_degree_mathematics_computer_and_information_sciences_percent?: number | null;
    demographic_education_degree_architecture_engineering_and_related_trades_percent?: number | null;
    demographic_education_degree_agriculture_natural_resources_and_conservation_percent?: number | null;
    demographic_education_degree_health_and_related_fields_percent?: number | null;
    demographic_education_degree_personal_protective_and_transportation_services_percent?: number | null;
    demographic_employment_employed_percent?: number | null;
    demographic_employment_unemployed_percent?: number | null;
    demographic_employment_occupations_legislative_and_senior_management_occupations_percent?: number | null;
    demographic_employment_occupations_business_finance_and_administration_occupations_percent?: number | null;
    demographic_employment_occupations_natural_and_applied_sciences_and_related_occupations_percent?: number | null;
    demographic_employment_occupations_health_occupations_percent?: number | null;
    demographic_employment_occupations_in_education_law_and_social_community_and_government_services_percent?: number | null;
    demographic_employment_occupations_in_art_culture_recreation_and_sport_percent?: number | null;
    demographic_employment_occupations_sales_and_service_occupations_percent?: number | null;
    demographic_employment_occupations_trades_transport_and_equipment_operators_and_related_occupations_percent?: number | null;
    demographic_employment_occupations_natural_resources_agriculture_and_related_production_occupations_percent?: number | null;
    demographic_employment_occupations_in_manufacturing_and_utilities_percent?: number | null;
    demographic_employment_industries_agriculture_forestry_fishing_and_hunting_percent?: number | null;
    demographic_employment_industries_mining_quarrying_and_oil_and_gas_extraction_percent?: number | null;
    demographic_employment_industries_utilities_percent?: number | null;
    demographic_employment_industries_construction_percent?: number | null;
    demographic_employment_industries_manufacturing_percent?: number | null;
    demographic_employment_industries_wholesale_trade_percent?: number | null;
    demographic_employment_industries_retail_trade_percent?: number | null;
    demographic_employment_industries_transportation_and_warehousing_percent?: number | null;
    demographic_employment_industries_information_and_cultural_industries_percent?: number | null;
    demographic_employment_industries_finance_and_insurance_percent?: number | null;
    demographic_employment_industries_real_estate_and_rental_and_leasing_percent?: number | null;
    demographic_employment_industries_professional_scientific_and_technical_services_percent?: number | null;
    demographic_employment_industries_management_of_companies_and_enterprises_percent?: number | null;
    demographic_employment_industries_administrative_and_support_waste_management_and_remediation_services_percent?: number | null;
    demographic_employment_industries_educational_services_percent?: number | null;
    demographic_employment_industries_health_care_and_social_assistance_percent?: number | null;
    demographic_employment_industries_arts_entertainment_and_recreation_percent?: number | null;
    demographic_employment_industries_accommodation_and_food_services_percent?: number | null;
    demographic_employment_industries_other_services_percent?: number | null;
    demographic_employment_industries_public_administration_percent?: number | null;
    demographic_transportation_car_truck_or_van_percent?: number | null;
    demographic_transportation_public_transit_percent?: number | null;
    demographic_transportation_walk_percent?: number | null;
    demographic_transportation_bicycle_percent?: number | null;
    assessments?: Assessment[] | null;
    listings?: Listing[] | null;
    permits?: Permit[] | null;
    address_link?: string | null;
    address_slug?: string | null;
    address?: string | null;
    air_cleaner_brand?: string | null;
    air_cleaner_install_year?: number | null;
    air_cleaner_type?: string | null;
    architecture_style?: string | null;
    assessment_value?: number | null;
    assessment_year?: number | null;
    attic_is_functional?: boolean | null;
    backs_onto?: string | null;
    balcony_type_first?: string | null;
    balcony_type_second?: string | null;
    balcony_type_third?: string | null;
    basement_ceiling_height_m?: number | null;
    basement_finish?: string | null;
    basement_has_crawlspace?: boolean | null;
    basement_has_entrance?: boolean | null;
    basement_is_walkout?: boolean | null;
    basement_type?: string | null;
    basement_year_last_renovated?: number | null;
    bathroom_full?: number | null;
    bathroom_total?: number | null;
    bathroom_half?: number | null;
    bathroom_year_last_renovated?: number | null;
    bedroom_year_last_renovated?: number | null;
    bedroom?: number | null;
    bedroom_total?: number | null;
    building_name?: string | null;
    carport_parking_space?: number | null;
    cat_allowed_by_bylaw_require_approval?: boolean | null;
    cat_allowed_by_bylaw?: boolean | null;
    ceiling_height_m?: number | null;
    ceiling_is_vaulted?: boolean | null;
    ceiling_style?: string | null;
    city_slug?: string | null;
    city?: string | null;
    commercial_use?: string | null;
    community_slug?: string | null;
    community?: string | null;
    construction_material?: string | null;
    construction_year?: number | null;
    converted_to_commercial_use?: boolean | null;
    converted_to_residential_use?: boolean | null;
    cooling_brand_first?: string | null;
    cooling_install_year_first?: number | null;
    cooling_type_first?: string | null;
    cooling_type_second?: string | null;
    country_abbreviation?: string | null;
    country_slug?: string | null;
    country?: string | null;
    den?: number | null;
    direction_facing?: string | null;
    dog_allowed_by_bylaw_require_approval?: boolean | null;
    dog_allowed_by_bylaw?: boolean | null;
    driveway_parking_space?: number | null;
    electricity_provider?: string | null;
    elevator?: number | null;
    estimate_list_price_date?: string | null;
    estimate_list_price?: number | null;
    estimate_sale_price_per_sq_m?: number | null;
    estimate_monthly_electrical_cost?: number | null;
    estimate_monthly_heat_cost?: number | null;
    estimate_monthly_water_cost?: number | null;
    estimate_political_lean?: number | null;
    estimate_rent_monthly_room?: number | null;
    estimate_rent_monthly_suite_basement?: number | null;
    estimate_rent_monthly_suite_main?: number | null;
    estimate_rent_monthly?: number | null;
    estimate_sale_price?: number | null;
    exterior_finish?: string | null;
    exterior_year_last_renovated?: number | null;
    fence_type?: string | null;
    fire_suppression_type?: string | null;
    fireplace?: number | null;
    floor_above_ground?: number | null;
    floor_below_ground?: number | null;
    floor_material_type_first?: string | null;
    floor_material_type_second?: string | null;
    floor_plan_type?: string | null;
    for_rent_by?: string | null;
    for_rent_cat_allowed_by_owner?: boolean | null;
    for_rent_dog_allowed_by_owner?: boolean | null;
    for_rent_has_own_laundry?: boolean | null;
    for_rent_has_seperate_external_entrance?: boolean | null;
    for_rent_what_is?: string | null;
    for_rent?: boolean | null;
    for_sale_by?: string | null;
    for_sale?: boolean | null;
    foundation_type?: string | null;
    fronts_onto?: string | null;
    garage_240v_first?: boolean | null;
    garage_240v_second?: boolean | null;
    garage_floor_above_ground_first?: number | null;
    garage_floor_above_ground_second?: number | null;
    garage_floor_below_ground_first?: number | null;
    garage_floor_below_ground_second?: number | null;
    garage_heating_type_first?: string | null;
    garage_heating_type_second?: string | null;
    garage_parking_space_first?: number | null;
    garage_parking_space_second?: number | null;
    garage_tandem_first?: boolean | null;
    garage_tandem_second?: boolean | null;
    garage_type_first?: string | null;
    garage_type_second?: string | null;
    gas_provider?: string | null;
    has_assigned_storage_space?: boolean | null;
    has_backyard?: boolean | null;
    has_frontyard?: boolean | null;
    has_private_indoor_gym?: boolean | null;
    has_private_indoor_hot_tub?: boolean | null;
    has_private_indoor_sauna?: boolean | null;
    has_private_indoor_swimming_pool?: boolean | null;
    has_private_indoor_workshop?: boolean | null;
    has_private_outdoor_gym?: boolean | null;
    has_private_outdoor_hot_tub?: boolean | null;
    has_private_outdoor_sauna?: boolean | null;
    has_private_outdoor_swimming_pool?: boolean | null;
    has_rv_parking?: boolean | null;
    has_shared_indoor_gym?: boolean | null;
    has_shared_indoor_hot_tub?: boolean | null;
    has_shared_indoor_sauna?: boolean | null;
    has_shared_indoor_swimming_pool?: boolean | null;
    has_shared_indoor_workshop?: boolean | null;
    has_shared_laundry_room?: boolean | null;
    has_shared_outdoor_gym?: boolean | null;
    has_shared_outdoor_hot_tub?: boolean | null;
    has_shared_outdoor_sauna?: boolean | null;
    has_shared_outdoor_swimming_pool?: boolean | null;
    heating_brand_first?: string | null;
    heating_install_year_first?: number | null;
    heating_type_first?: string | null;
    heating_type_second?: string | null;
    humidifier_brand?: string | null;
    humidifier_install_year?: number | null;
    humidifier_type?: string | null;
    image?: string | null;
    in_cul_de_sac?: boolean | null;
    interior_sq_m?: number | null;
    internet_provider?: string | null;
    irrigation_system_type?: string | null;
    is_commercial?: boolean | null;
    is_condemned?: boolean | null;
    is_judicial_sale?: boolean | null;
    is_residential?: boolean | null;
    kitchen_appliance_brand?: string | null;
    kitchen_appliance_finish?: string | null;
    kitchen_countertop_material?: string | null;
    kitchen_dishwasher_install_year?: number | null;
    kitchen_dishwasher_type?: string | null;
    kitchen_fridge_install_year?: number | null;
    kitchen_fridge_type?: string | null;
    kitchen_microwave_install_year?: number | null;
    kitchen_microwave_type?: string | null;
    kitchen_stove_heat_type?: string | null;
    kitchen_stove_install_year?: number | null;
    kitchen_stove_type?: string | null;
    kitchen_year_last_renovated?: number | null;
    land_depth_m?: number | null;
    land_frontage_m?: number | null;
    latitude?: number | null;
    laundry_appliance_brand?: string | null;
    laundry_appliance_finish?: string | null;
    laundry_dryer_install_year?: number | null;
    laundry_dryer_type?: string | null;
    laundry_washer_install_year?: number | null;
    laundry_washer_type?: string | null;
    list_price?: number | null;
    rent_price?: number | null;
    living_room_year_last_renovated?: number | null;
    loading_bays?: number | null;
    longitude?: number | null;
    maintenance_fee_include_electric?: boolean | null;
    maintenance_fee_include_heat?: boolean | null;
    maintenance_fee_include_water?: boolean | null;
    maintenance_fee?: number | null;
    need_ceiling_repair?: boolean | null;
    need_cooling_repair?: boolean | null;
    need_drywall_repair?: boolean | null;
    need_electrical_repair?: boolean | null;
    need_floor_repair?: boolean | null;
    need_foundation_repair?: boolean | null;
    need_heating_repair?: boolean | null;
    need_mold_repair?: boolean | null;
    need_paint_repair?: boolean | null;
    need_plumbing_repair?: boolean | null;
    need_roof_repair?: boolean | null;
    need_window_repair?: boolean | null;
    neighborhood_id?: string | null;
    outbuilding_type_fifth?: string | null;
    outbuilding_type_first?: string | null;
    outbuilding_type_fourth?: string | null;
    outbuilding_type_second?: string | null;
    outbuilding_type_third?: string | null;
    ownership_type?: string | null;
    parent_address?: string | null;
    parking_lot_parking_space_legal_type?: string | null;
    parking_lot_parking_space?: number | null;
    plumbing_pipe_material?: string | null;
    postal_code?: string | null;
    property_id?: string | null;
    property_type?: string | null;
    province_abbreviation?: string | null;
    province_slug?: string | null;
    province?: string | null;
    rent_includes_electricity?: boolean | null;
    rent_includes_furniture?: boolean | null;
    rent_includes_heat?: boolean | null;
    rent_includes_internet?: boolean | null;
    rent_includes_water?: boolean | null;
    roof_is_functional?: boolean | null;
    roof_material_install_year?: number | null;
    roof_material?: string | null;
    score_air_quality?: number | null;
    score_bicycle?: number | null;
    score_cell_coverage?: number | null;
    score_curb_appeal?: number | null;
    score_earthquake?: number | null;
    score_education?: number | null;
    score_entertainment?: number | null;
    score_family?: number | null;
    score_fire?: number | null;
    score_flood?: number | null;
    score_food_and_drink?: number | null;
    score_hurricane?: number | null;
    score_internet?: number | null;
    score_nature?: number | null;
    score_parking?: number | null;
    score_quiet?: number | null;
    score_retirement?: number | null;
    score_safety?: number | null;
    score_shopping?: number | null;
    score_smell?: number | null;
    score_tornado?: number | null;
    score_total?: number | null;
    score_traffic?: number | null;
    score_transit?: number | null;
    score_walkability?: number | null;
    score_water_quality?: number | null;
    secondary_suite_has_own_laundry_first?: boolean | null;
    secondary_suite_has_own_laundry_second?: boolean | null;
    secondary_suite_has_own_laundry_third?: boolean | null;
    secondary_suite_seperate_entrance_first?: boolean | null;
    secondary_suite_seperate_entrance_second?: boolean | null;
    secondary_suite_seperate_entrance_third?: boolean | null;
    shared_bicycle_storage_type?: string | null;
    shared_garage_240v_first?: boolean | null;
    shared_garage_240v_second?: boolean | null;
    shared_garage_floor_above_ground_first?: number | null;
    shared_garage_floor_above_ground_second?: number | null;
    shared_garage_floor_below_ground_first?: number | null;
    shared_garage_floor_below_ground_second?: number | null;
    shared_garage_heating_type_first?: string | null;
    shared_garage_heating_type_second?: string | null;
    shared_garage_legal_type_first?: string | null;
    shared_garage_legal_type_second?: string | null;
    shared_garage_parking_space_first?: number | null;
    shared_garage_parking_space_second?: number | null;
    shared_garage_tandem_first?: boolean | null;
    shared_garage_tandem_second?: boolean | null;
    shared_garage_type_first?: string | null;
    shared_garage_type_second?: string | null;
    summer_garbage_pickup_day?: string | null;
    summer_garbage_pickup_schedule?: string | null;
    summer_organic_waste_pickup_day?: string | null;
    summer_organic_waste_pickup_schedule?: string | null;
    summer_recycle_pickup_day?: string | null;
    summer_recycle_pickup_schedule?: string | null;
    view_type?: string | null;
    water_heater_brand?: string | null;
    water_heater_install_year?: number | null;
    water_heater_type?: string | null;
    water_softener_brand?: string | null;
    water_softener_install_year?: number | null;
    water_softener_type?: string | null;
    water_provider?: string | null;
    winter_garbage_pickup_day?: string | null;
    winter_garbage_pickup_schedule?: string | null;
    winter_organic_waste_pickup_day?: string | null;
    winter_organic_waste_pickup_schedule?: string | null;
    winter_recycle_pickup_day?: string | null;
    winter_recycle_pickup_schedule?: string | null;
    workshop_type?: string | null;
    zoning?: string | null;
    cash_on_cash_return?: number | null;
    cap_rate?: number | null;
    return_on_investment?: number | null;
    humidifier_brand_type?: string | null;
    is_farmland?: boolean | null;
    land_area_sq_m?: number | null;
    parent_property_id?: string | null;
    property_taxes?: number | null;
    property_taxes_year?: number | null;
    province_abbreviation_id?: string | null;
    score_total_percent?: number | null;
    shared_parking_lot_parking_space_legal_type?: string | null;
    shared_parking_lot_parking_space?: number | null;
    furnished?: boolean | null;
    zoning_source?: string | null;
    construction_year_source?: string | null;
    is_commercial_source?: string | null;
    is_farmland_source?: string | null;
    is_residential_source?: string | null;
    land_area_sq_m_source?: string | null;
    secondary_suite_type_first?: string | null;
    secondary_suite_type_second?: string | null;
    secondary_suite_type_third?: string | null;
    postal_code_source?: string | null;
}

interface Assessment {
    property_id: string;
    expand_assessment_year: number;
    expand_assessment_value: number;
}