!

/geocoding

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

Reverse geocoding: convert a latitude/longitude into nearby property information.

For forward geocoding (address to coordinates) use /search. The /properties endpoint also supports bounding boxes and polygons.

Example use cases

  1. Location-based apps showing property info near the user.
  2. Real estate platforms showing listings near a landmark.
  3. Emergency services accessing property data within a zone.
  4. Environmental groups tracking land use and zoning.
  5. Municipal planning for public services and infrastructure.

Request parameters

NameRequiredTypeDescription
api_keyYesUUID v4Your API key for authorization
latitudeYesFloatLatitude of the search point
longitudeYesFloatLongitude of the search point
radiusNoFloatSearch radius in kilometers. Default 1.
shapeNoStringCan either be 'circle' (default) or 'square'.
expandNoString - see expandingComma-separated data sets to include with each property. Options are assessments, listings, listings_rent, and permits
filter_expand_matchNoString - see filteringUse any to return only properties with at least one requested expansion, or all to return only properties with every requested expansion. Omit to return properties with or without expansion data
results_per_pageNoIntegerNumber of results per page. Maximum 1000.
selectNoString - see selectingThe fields to return - address and property_id are always selected
pageNoIntegerThe page number to retrieve results from, starting at 1

This endpoint also supports field filters and expansion filters, like expand_listing_date_gte and expand_permit_content_regex. See the filtering documentation for details.

Response object

Type declarations are available at the bottom of this page.

NameTypeDescription
cache_hitBooleanIndicates if the response was a cache hit
cost_centsIntegerCost of the request in cents
dataArray<Property>Array of property objects containing the geocoding results
errorStringDetails about the error. Empty if no error
paginationPaginationContains pagination info like current page and total pages
price_quoteBooleanIndicates whether the response is a price quote
result_totalIntegerThe total number of results
time_msIntegerTime taken for the request to complete in milliseconds
ui_infoUiInfoData to create user interfaces

Property object

Each property contains fields chosen via select. Over 400 fields available.

See the Fields documentation for the full list.

Pagination object

NameTypeDescription
current_pageIntegerCurrent page number (1-based)
has_next_pageBooleanWhether there is a next page
has_previous_pageBooleanWhether there is a previous page
page_totalIntegerTotal number of pages

UiInfo object

Pre-computed UI elements for client-side rendering:

NameTypeDescription
address_linkStringPre-built URL link to the property page
address_slugStringURL-friendly version of the address
city_linkStringPre-built URL link to the city page
city_slugStringURL-friendly version of the city name
community_linkStringPre-built URL link to the community page
community_slugStringURL-friendly version of the community name
province_abbreviation_linkStringPre-built URL link to the province page
country_abbreviation_linkStringPre-built URL link to the country page

Example requests and responses

Programming language

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

Get properties around a point
Get properties around a point.
Request
Shell session
curl -X GET "https://api.houski.ca/geocoding?api_key=YOUR_API_KEY&latitude=51.0447&longitude=-114.0719&radius=2&select=latitude,longitude,bedroom,den,bathroom_full,bathroom_half&shape=circle"
TypeScript code
const houski_geocoding = async (): Promise<GeocodingResponse> => {

    // You must copy the GeocodingResponse type declarations from the 
    // Houski API documentation to strongly type the response

    const url = new URL('https://api.houski.ca/geocoding');
    url.searchParams.set('api_key', 'YOUR_API_KEY');
    url.searchParams.set('latitude', '51.0447');
    url.searchParams.set('longitude', '-114.0719');
    url.searchParams.set('radius', '2');
    url.searchParams.set('select', 'latitude,longitude,bedroom,den,bathroom_full,bathroom_half');
    url.searchParams.set('shape', 'circle');

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

    return data;
}

(async () => {
let data: GeocodingResponse = await houski_geocoding();

// Log the response
console.log(data);
})();
Response
JSON
{
  "cache_hit": false,
  "cost_cents": 2.6399998664855957,
  "data": [
    {
      "address": "0 Calgary",
      "bathroom_full": 2,
      "bathroom_half": 0,
      "bedroom": 3,
      "den": 0,
      "latitude": 51.044734954833984,
      "longitude": -114.07188415527344,
      "property_id": "8a4f3aa57d75cc88"
    },
    {
      "address": "513 9 Avenue SW",
      "bathroom_full": 1,
      "bathroom_half": 0,
      "bedroom": 1,
      "den": 0,
      "latitude": 51.044551849365234,
      "longitude": -114.07221221923828,
      "property_id": "e9baf46145362e25"
    },
    {
      "address": "520 9 Avenue SW",
      "bathroom_full": 1,
      "bathroom_half": 0,
      "bedroom": 1,
      "den": 0,
      "latitude": 51.04525375366211,
      "longitude": -114.0722198486328,
      "property_id": "8808ff7c79ba3508"
    },
    {
      "address": "525 8 Avenue SW",
      "bathroom_full": 1,
      "bathroom_half": 0,
      "bedroom": 1,
      "den": 0,
      "latitude": 51.04532241821289,
      "longitude": -114.07242584228516,
      "property_id": "301a806c3b139f6"
    },
    {
      "address": "505 8 Avenue SW",
      "bathroom_full": 1,
      "bathroom_half": 0,
      "bedroom": 1,
      "den": 0,
      "latitude": 51.0455207824707,
      "longitude": -114.07184600830078,
      "property_id": "3848dc60cd88ee55"
    },
    {
      "address": "524 10 Avenue SW",
      "bathroom_full": 1,
      "bathroom_half": 0,
      "bedroom": 2,
      "den": 0,
      "latitude": 51.043914794921875,
      "longitude": -114.07219696044922,
      "property_id": "cc8a04767d8753ff"
    }
  ],
  "error": "",
  "pagination": {
    "current_page": 1,
    "has_next_page": true,
    "has_previous_page": false,
    "page_total": 8760
  },
  "price_quote": false,
  "result_total": 52560,
  "time_ms": 5774
}

Response type declarations

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

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

interface Property {
    estimate_city_population?: number | null;
    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_income_percent?: number | null;
    demographic_employment_insurance_benefit_percent?: number | null;
    demographic_covid_19_government_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_rent?: ListingRent[] | 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;
    has_expand_listings?: boolean | null;
    has_expand_listings_rent?: boolean | null;
    has_expand_permits?: boolean | null;
    has_expand_assessments?: 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;
    community_source?: 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?: 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_separate_external_entrance?: boolean | null;
    for_rent?: boolean | null;
    for_sale_by?: string | null;
    for_sale?: boolean | null;
    estimate_sale_date_listed?: string | null;
    estimate_sale_date_sold?: string | null;
    estimate_days_on_market_until_sale?: number | null;
    estimate_rent_date_listed?: string | null;
    estimate_rent_date_rented?: string | null;
    estimate_days_on_market_until_rented?: number | 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;
    interior_sq_m_source?: string | 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_monthly?: 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;
    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;
    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;
    area_residential_list_price_per_sq_m?: number | null;
    area_residential_rent_price_per_sq_m?: number | null;
    area_commercial_list_price_per_sq_m?: number | null;
    area_comparable_list_price_per_sq_m?: number | null;
    area_comparable_assessment_value_per_sq_m?: number | null;
    area_comparable_property_tax_per_sq_m?: number | 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;
}

interface Listing {
    property_id: string;
    expand_listing_date: string;
    expand_listing_event: string;
    expand_estimate_list_price: number;
}

interface ListingRent {
    property_id: string;
    expand_listing_rent_date: string;
    expand_listing_rent_event: string;
    expand_estimate_rent_monthly: number;
    expand_for_rent_what_is: string;
}

interface Permit {
    property_id: string;
    expand_permit_id: string;
    expand_permit_application_date: string;
    expand_permit_type: string;
    expand_permit_content: string;
}