/avm

GET
http://127.0.0.1:8080/avm
$5.00 USD per request. Each call returns list, sale, and rent estimates plus a full report. Billed to your API usage when called through the API, or as a single payment when ordered from your user dashboard.

The AVM (Automated Valuation Model) endpoint returns list price, sale price, and monthly rent estimates with confidence scores and model performance metrics.

Pass a property_id to value the property. Each valuation includes R-squared values, error distributions, and hit rates within various percentage bands.

Override property characteristics via query parameters. Returns up to 10 comparable properties within 5km for market context.

Billing

AVMs called through the API are added to your API subscription as usage and appear on your next monthly invoice alongside regular API charges. They count toward your subscription's $99 USD monthly minimum. You will not be charged separately for each call.

Prefer not to integrate? Order AVMs manually from your user dashboard as a one-time $5.00 charge to your credit card. No API subscription required.

Example use cases

  1. Investors evaluating acquisitions
  2. Lenders assessing collateral for underwriting
  3. Property managers setting rental rates
  4. Insurers determining replacement costs
  5. Tax assessors updating assessments
  6. Portfolio managers tracking asset values

Request parameters

NameRequiredTypeDescription
api_keyYesUUID v4Your API key for authorization
property_idYesStringThe unique identifier for the property to value.
bedroomNoIntegerNumber of bedrooms (overrides property data when provided)
denNoIntegerNumber of dens (overrides property data when provided)
bathroom_fullNoIntegerNumber of full bathrooms (overrides property data when provided)
bathroom_halfNoIntegerNumber of half bathrooms (overrides property data when provided)
construction_yearNoIntegerYear the property was built (overrides property data when provided)
interior_sq_mNoFloatInterior square meters (overrides property data when provided)
property_typeNoStringProperty type (overrides property data when provided)
maintenance_feeNoFloatMonthly maintenance fee (overrides property data when provided)
garage_type_firstNoStringGarage type (overrides property data when provided)

Response object

Type declarations are available at the bottom of this page.

NameTypeDescription
urlStringLink to the web report for this valuation. Empty on a price quote
dataAvmValuationContains the complete valuation data including estimates and comparables
errorStringDetails about the error. Empty if no error
time_msIntegerTime taken for the request to complete in milliseconds
cost_centsFloatCost of the API call in cents (500 cents is $5.00)
price_quoteBooleanIndicates if this is a price quote request (no charge)
cache_hitBooleanIndicates if the response was a cache hit

AvmValuation object

NameTypeDescription
property_warning_flagsArray<AvmWarningFlag>Concerns noticed about the property and its area, such as natural hazards, older wiring, or high monthly fees. They do not describe confidence in the estimate
interior_sq_mFloatInterior square meters
property_typeStringProperty type (House, Condo, Townhouse, etc.)
bedroomIntegerNumber of bedrooms
denIntegerNumber of dens
bathroom_fullIntegerNumber of full bathrooms
bathroom_halfIntegerNumber of half bathrooms
construction_yearIntegerYear the property was built
property_idStringThe property identifier
imageStringImage identifier, not a link. Request the image at https://www.houski.ca/api/image/featured/{image}?key={your_api_key}, and add the thumbnail=true query parameter for a smaller version. Empty when the property has no image
addressString (nullable)Property address, or null when none is on file
cityString (nullable)City name, or null when none is on file
countryString (nullable)Full country name, such as Canada, or null when none is on file
provinceString (nullable)Full province or state name, such as Alberta, or null when none is on file
latitudeFloatProperty latitude coordinate
longitudeFloatProperty longitude coordinate
estimate_list_priceAvmSingleValuationEstimated listing price with confidence score and detailed model performance metrics
estimate_sale_priceAvmSingleValuationEstimated sale price with confidence score and detailed model performance metrics
estimate_rent_monthlyAvmSingleValuationEstimated monthly rent with confidence score and detailed model performance metrics
price_historyArray<Prediction>Model estimates of list price, sale price, and monthly rent for this property today and every 30 days back over roughly the last 18 months, oldest first. These are model estimates for past dates, not recorded sales. Each entry has the same shape as a prediction from the /predict endpoint, and a value is left out when its model could not produce one
valuation_dateStringDate the valuation was performed (YYYY-MM-DD)
score_air_qualityInteger (nullable)Local air quality from 0 to 10, where higher means cleaner measured air
score_bicycleInteger (nullable)Bicycle friendliness from 0 to 10, where higher means more cycling infrastructure such as bike paths and lanes
score_cell_coverageInteger (nullable)Cellular network coverage from 0 to 10, where higher means better mobile connectivity
score_curb_appealInteger (nullable)How appealing the area around the home tends to look from the street, from 0 to 10, where higher means a more attractive area
score_earthquakeInteger (nullable)Earthquake safety from 0 to 10, where higher means lower seismic hazard
score_educationInteger (nullable)Access to nearby schools from 0 to 10, where higher means more schools within easy reach. It does not measure school quality
score_entertainmentInteger (nullable)Local entertainment and recreation from 0 to 10, where higher means more venues and activities nearby
score_familyInteger (nullable)Family friendliness from 0 to 10, where higher means families with children are more common in the area
score_fireInteger (nullable)Fire safety from 0 to 10, where higher means lower wildfire exposure
score_floodInteger (nullable)How often the area around the property floods, from 0 to 10, where higher means the area floods less often. It describes the area, not the individual property
score_food_and_drinkInteger (nullable)Places to eat and drink from 0 to 10, where higher means more restaurants, cafes, and bars close by
score_hurricaneInteger (nullable)Hurricane safety from 0 to 10, where higher means lower exposure to tropical storm wind
score_internetInteger (nullable)Speed and choice of internet options at the property from 0 to 10, where higher means faster connections and more types of service
score_natureInteger (nullable)Nearby green space from 0 to 10, where higher means more parks, forests, and natural areas close by
score_parkingInteger (nullable)Parking supply from 0 to 10, where higher means more plentiful parking in the area
score_quietInteger (nullable)Quietness from 0 to 10, where higher means less noise
score_retirementInteger (nullable)Retirement friendliness from 0 to 10, where higher means the area leans more toward older, settled residents
score_safetyInteger (nullable)Neighbourhood safety from 0 to 10, where higher means less reported crime
score_shoppingInteger (nullable)Shopping access and variety from 0 to 10, where higher means better shopping options
score_smellInteger (nullable)Odour from 0 to 10, where higher means fewer unpleasant smells
score_tornadoInteger (nullable)Tornado safety from 0 to 10, where higher means lower tornado exposure
score_totalInteger (nullable)Overall Houski score out of 10, combining the individual scores except curb appeal. Higher is better
score_total_percentFloat (nullable)Overall Houski score as a percentage from 0 to 100, combining the individual scores except curb appeal. Higher is better
score_trafficInteger (nullable)Traffic from 0 to 10, where higher means less exposure to busy major roads
score_transitInteger (nullable)Public transit access from 0 to 10, where higher means better transit options
score_walkabilityInteger (nullable)Walkability from 0 to 10, where higher means more connected streets and more everyday destinations within walking distance
score_water_qualityInteger (nullable)Quality of nearby surface water such as rivers and lakes from 0 to 10, where higher means cleaner water. It does not measure tap water
comparable_properties_totalIntegerTotal number of comparable properties in the same city and type
comparable_propertiesArray<AvmComparableProperty>Up to 10 comparable properties of the same type in the same city, within 5 km, with an interior size within 20% of this property, and with an estimated sale date and a list price on file. They are ranked most similar first, by a score that weighs the gap between their list price and this property's estimated list price, the gap in interior size, and, more lightly, the distance

AvmSingleValuation object

Each valuation includes:

NameTypeDescription
valueFloatThe estimated value in dollars
confidence_scoreFloatConfidence percentage (0-100) based on model accuracy
model_metricsAvmModelMetricsDetailed performance metrics including R-squared, MAPE, error percentiles, and hit rates

AvmModelMetrics object

Model performance metrics per valuation type:

NameTypeDescription
Performance metrics
training_r_squaredFloatR-squared value on training data (0-1, higher is better)
testing_r_squaredFloatR-squared value on testing data (0-1, higher is better)
Error metrics
maeFloatMean Absolute Error in dollars
rmseFloatRoot Mean Square Error in dollars
mapeFloatMean absolute percentage error (MAPE), in percent (5 means 5%), lower is better
median_mapeFloatMedian absolute percentage error, in percent (5 means 5%), lower is better
mseFloatMean Squared Error in dollars squared
Accuracy bands
within_5_pctFloatPercentage of predictions within 5% of actual value, from 0 to 100
within_10_pctFloatPercentage of predictions within 10% of actual value, from 0 to 100
within_15_pctFloatPercentage of predictions within 15% of actual value, from 0 to 100
within_20_pctFloatPercentage of predictions within 20% of actual value, from 0 to 100
Bias metrics
mean_biasFloatAverage prediction bias in dollars (positive = over-prediction)
median_biasFloatMedian prediction bias in dollars (positive = over-prediction)
over_prediction_rateFloatPercentage of predictions that are over-estimates, from 0 to 100
under_prediction_rateFloatPercentage of predictions that are under-estimates, from 0 to 100
Error distribution
error_10th_percentileFloat10th percentile of absolute errors in dollars
error_25th_percentileFloat25th percentile of absolute errors in dollars
error_50th_percentileFloat50th percentile (median) of absolute errors in dollars
error_75th_percentileFloat75th percentile of absolute errors in dollars
error_90th_percentileFloat90th percentile of absolute errors in dollars
error_95th_percentileFloat95th percentile of absolute errors in dollars
pct_error_10thFloat10th percentile of absolute percentage errors, in percent (5 means 5%)
pct_error_90thFloat90th percentile of absolute percentage errors, in percent (5 means 5%)
Uncertainty metrics
forecast_std_devFloatStandard deviation of prediction errors in dollars
coefficient_of_variationFloatCoefficient of variation, in percent: the standard deviation of prediction errors divided by the mean prediction, times 100. Lower is better

AvmComparableProperty object

NameTypeDescription
addressStringProperty address
imageStringImage identifier, not a link. Request it the same way as the image field on the AvmValuation object. Empty when the property has no image
latitudeFloatLatitude coordinate
longitudeFloatLongitude coordinate
distance_kmFloatDistance from target property in kilometers
interior_sq_mFloatInterior square meters
list_priceIntegerOriginal listing price
estimate_sale_date_soldStringEstimated sale date in YYYY-MM-DD. It is inferred from listing history as the date the property left the market, not a recorded closing date.

AvmWarningFlag object

NameTypeDescription
warningStringShort readable title for the concern, such as Elevated flood risk
descriptionStringDetailed description of the warning or issue

Example requests and responses

Programming language

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

Value a property
Pass only a property_id and the model values the property using the data already on file for it. The response includes list price, sale price, and monthly rent estimates with confidence scores and model metrics.
Request
Shell session
curl -X GET "http://127.0.0.1:8080/avm?api_key=YOUR_API_KEY&property_id=bd9c6fb24c31c772"
TypeScript code
const houski_avm_data = async (): Promise<AvmResponse> => {

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

    const url = new URL('http://127.0.0.1:8080/avm');
    url.searchParams.set('api_key', 'YOUR_API_KEY');
    url.searchParams.set('property_id', 'bd9c6fb24c31c772');

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

    return data;
}

(async () => {
let data: AvmResponse = await houski_avm_data();

// Log the response
console.log(data);
})();
Response
JSON
{
  "cache_hit": true,
  "cost_cents": 500.0,
  "data": {
    "address": "302 610 17 Avenue SW",
    "bathroom_full": 1,
    "bathroom_half": 1,
    "bedroom": 2,
    "city": "Calgary",
    "comparable_properties": [
      {
        "address": "402 610 17 Avenue SW",
        "distance_km": 0.0,
        "estimate_sale_date_sold": "2025-02-07",
        "image": "589c5b211ab31176_46d18d02",
        "interior_sq_m": 91.88034057617188,
        "latitude": 51.03819274902344,
        "list_price": 295000,
        "longitude": -114.07510375976562
      },
      {
        "address": "101 523 15 Avenue SW",
        "distance_km": 0.15784955024719238,
        "estimate_sale_date_sold": "2023-08-29",
        "image": "6d3f02fca68d547e_b6f2526e",
        "interior_sq_m": 91.9732437133789,
        "latitude": 51.0385856628418,
        "list_price": 288888,
        "longitude": -114.07293701171876
      },
      {
        "address": "703 537 14 Avenue SW",
        "distance_km": 0.18044060468673703,
        "estimate_sale_date_sold": "2023-07-23",
        "image": "8bca5ee00db4f5e5_3a9d45c2",
        "interior_sq_m": 89.46488189697266,
        "latitude": 51.03955841064453,
        "list_price": 300000,
        "longitude": -114.07371520996094
      },
      {
        "address": "406 537 14 Avenue SW",
        "distance_km": 0.18044060468673703,
        "estimate_sale_date_sold": "2023-07-23",
        "image": "7fd14d9cddc90cd8_df5c16da",
        "interior_sq_m": 89.2790756225586,
        "latitude": 51.03955841064453,
        "list_price": 298900,
        "longitude": -114.07371520996094
      },
      {
        "address": "1105 1209 6 Street SW",
        "distance_km": 0.4003704786300659,
        "estimate_sale_date_sold": "2023-08-23",
        "image": "59eb4d7ffd625770_807d4658",
        "interior_sq_m": 92.99517059326172,
        "latitude": 51.04155349731445,
        "list_price": 299900,
        "longitude": -114.07714080810548
      },
      {
        "address": "1005 1209 6 Street SW",
        "distance_km": 0.4003704786300659,
        "estimate_sale_date_sold": "2023-09-09",
        "image": "2415d490f50aff2f_f7d47327",
        "interior_sq_m": 93.73838806152344,
        "latitude": 51.04155349731445,
        "list_price": 299900,
        "longitude": -114.07714080810548
      },
      {
        "address": "401 1209 6 Street SW",
        "distance_km": 0.4003704786300659,
        "estimate_sale_date_sold": "2024-01-18",
        "image": "add60c129cc174c8_15dc7a7e",
        "interior_sq_m": 92.90226745605467,
        "latitude": 51.04155349731445,
        "list_price": 294000,
        "longitude": -114.07714080810548
      },
      {
        "address": "504 616 15 Avenue SW",
        "distance_km": 0.11240646988153458,
        "estimate_sale_date_sold": "2025-07-04",
        "image": "e731e220553c9548_88738769",
        "interior_sq_m": 87.79264068603516,
        "latitude": 51.03919219970703,
        "list_price": 289900,
        "longitude": -114.07533264160156
      },
      {
        "address": "305 1209 6 Street SW",
        "distance_km": 0.4003704786300659,
        "estimate_sale_date_sold": "2024-08-04",
        "image": "1119eb5e5c0e6dd6_9dfcbaf5",
        "interior_sq_m": 94.2957992553711,
        "latitude": 51.04155349731445,
        "list_price": 290000,
        "longitude": -114.07714080810548
      },
      {
        "address": "210 540 18 Avenue SW",
        "distance_km": 0.1524486541748047,
        "estimate_sale_date_sold": "2025-09-15",
        "image": "fab8d1355031e0aa_2f6f24a0",
        "interior_sq_m": 85.47008514404297,
        "latitude": 51.03719711303711,
        "list_price": 299000,
        "longitude": -114.0736083984375
      }
    ],
    "comparable_properties_total": 28191,
    "construction_year": 1979,
    "country": "Canada",
    "den": 0,
    "estimate_list_price": {
      "confidence_score": 95.01814270019533,
      "model_metrics": {
        "coefficient_of_variation": 39.8504753626973,
        "error_10th_percentile": 4338.16259765625,
        "error_25th_percentile": 11031.234375,
        "error_50th_percentile": 25255.4375,
        "error_75th_percentile": 53322.8125,
        "error_90th_percentile": 106059.9453125,
        "error_95th_percentile": 184402.015625,
        "forecast_std_dev": 255608.171875,
        "mae": 60686.69140625,
        "mape": 8.463743209838867,
        "mean_bias": -10692.3330078125,
        "median_bias": 414.9375,
        "median_mape": 4.9818596839904785,
        "mse": 65449492480.0,
        "over_prediction_rate": 50.320489737126394,
        "pct_error_10th": 0.9080060720443726,
        "pct_error_90th": 15.432555198669434,
        "rmse": 255830.984375,
        "testing_r_squared": 0.94,
        "training_r_squared": 0.98,
        "under_prediction_rate": 49.679510262873606,
        "within_10_pct": 77.83939503060857,
        "within_15_pct": 89.31220741807707,
        "within_20_pct": 94.54807346056896,
        "within_5_pct": 50.14043932301044
      },
      "value": 298344.6875
    },
    "estimate_rent_monthly": {
      "confidence_score": 93.83267974853516,
      "model_metrics": {
        "coefficient_of_variation": 22.798548277028747,
        "error_10th_percentile": 29.91469955444336,
        "error_25th_percentile": 74.45068359375,
        "error_50th_percentile": 169.37689208984375,
        "error_75th_percentile": 335.43365478515625,
        "error_90th_percentile": 655.9906005859375,
        "error_95th_percentile": 1026.8118896484375,
        "forecast_std_dev": 668.0843505859375,
        "mae": 316.8042297363281,
        "mape": 10.418495178222656,
        "mean_bias": -44.97128677368164,
        "median_bias": -3.4735107421875,
        "median_mape": 6.167322635650635,
        "mse": 448360.4375,
        "over_prediction_rate": 49.36860714736709,
        "pct_error_10th": 1.1183578968048096,
        "pct_error_90th": 21.039480209350582,
        "rmse": 669.5972290039062,
        "testing_r_squared": 0.71,
        "training_r_squared": 0.86,
        "under_prediction_rate": 50.63139285263291,
        "within_10_pct": 68.802879151408,
        "within_15_pct": 82.28943048364692,
        "within_20_pct": 89.08953150650335,
        "within_5_pct": 42.044450056825355
      },
      "value": 2266.185791015625
    },
    "estimate_sale_price": {
      "confidence_score": 94.2463607788086,
      "model_metrics": {
        "coefficient_of_variation": 44.60855523222251,
        "error_10th_percentile": 5113.02490234375,
        "error_25th_percentile": 13220.5859375,
        "error_50th_percentile": 29188.890625,
        "error_75th_percentile": 58933.328125,
        "error_90th_percentile": 114315.671875,
        "error_95th_percentile": 186286.953125,
        "forecast_std_dev": 281802.53125,
        "mae": 67590.8359375,
        "mape": 9.812854766845703,
        "mean_bias": -10934.208984375,
        "median_bias": -818.546875,
        "median_mape": 5.7536420822143555,
        "mse": 79532048384.0,
        "over_prediction_rate": 49.140341067934024,
        "pct_error_10th": 1.0522005558013916,
        "pct_error_90th": 18.072734832763672,
        "rmse": 282014.28125,
        "testing_r_squared": 0.91,
        "training_r_squared": 0.95,
        "under_prediction_rate": 50.859658932065976,
        "within_10_pct": 72.40704500978474,
        "within_15_pct": 85.81213307240705,
        "within_20_pct": 91.81576740285156,
        "within_5_pct": 45.07268660889013
      },
      "value": 293549.84375
    },
    "image": "bd9c6fb24c31c772_7e931788",
    "interior_sq_m": 92.43848419189452,
    "latitude": 51.03819274902344,
    "longitude": -114.07510375976562,
    "price_history": [
      {
        "date": "2025-04-05",
        "estimate_list_price": 336395.15625,
        "estimate_rent_monthly": 2298.380859375,
        "estimate_sale_price": 302583.46875
      },
      {
        "date": "2025-05-05",
        "estimate_list_price": 335353.5,
        "estimate_rent_monthly": 2292.385009765625,
        "estimate_sale_price": 304994.75
      },
      {
        "date": "2025-06-04",
        "estimate_list_price": 337475.125,
        "estimate_rent_monthly": 2290.859619140625,
        "estimate_sale_price": 303306.59375
      },
      {
        "date": "2025-07-04",
        "estimate_list_price": 336525.09375,
        "estimate_rent_monthly": 2290.859619140625,
        "estimate_sale_price": 301711.8125
      },
      {
        "date": "2025-08-03",
        "estimate_list_price": 333141.28125,
        "estimate_rent_monthly": 2226.452392578125,
        "estimate_sale_price": 300834.34375
      },
      {
        "date": "2025-09-02",
        "estimate_list_price": 332321.34375,
        "estimate_rent_monthly": 2226.452392578125,
        "estimate_sale_price": 292419.0625
      },
      {
        "date": "2025-10-02",
        "estimate_list_price": 320705.0,
        "estimate_rent_monthly": 2223.994873046875,
        "estimate_sale_price": 291787.28125
      },
      {
        "date": "2025-11-01",
        "estimate_list_price": 320006.90625,
        "estimate_rent_monthly": 2227.315673828125,
        "estimate_sale_price": 292606.8125
      },
      {
        "date": "2025-12-01",
        "estimate_list_price": 314523.90625,
        "estimate_rent_monthly": 2173.085205078125,
        "estimate_sale_price": 289831.78125
      },
      {
        "date": "2025-12-31",
        "estimate_list_price": 310465.84375,
        "estimate_rent_monthly": 2173.085205078125,
        "estimate_sale_price": 286918.28125
      },
      {
        "date": "2026-01-30",
        "estimate_list_price": 311569.84375,
        "estimate_rent_monthly": 2160.82958984375,
        "estimate_sale_price": 286599.125
      },
      {
        "date": "2026-03-01",
        "estimate_list_price": 302997.25,
        "estimate_rent_monthly": 2141.153076171875,
        "estimate_sale_price": 286599.125
      },
      {
        "date": "2026-03-31",
        "estimate_list_price": 303709.5,
        "estimate_rent_monthly": 2142.2080078125,
        "estimate_sale_price": 286457.03125
      },
      {
        "date": "2026-04-30",
        "estimate_list_price": 302265.0625,
        "estimate_rent_monthly": 2126.92431640625,
        "estimate_sale_price": 287158.625
      },
      {
        "date": "2026-05-30",
        "estimate_list_price": 299114.4375,
        "estimate_rent_monthly": 2130.612060546875,
        "estimate_sale_price": 287043.625
      },
      {
        "date": "2026-06-29",
        "estimate_list_price": 297828.4375,
        "estimate_rent_monthly": 2131.989013671875,
        "estimate_sale_price": 293549.84375
      },
      {
        "date": "2026-07-29",
        "estimate_list_price": 297253.25,
        "estimate_rent_monthly": 2266.185791015625,
        "estimate_sale_price": 293549.84375
      },
      {
        "date": "2026-08-28",
        "estimate_list_price": 300337.0,
        "estimate_rent_monthly": 2266.185791015625,
        "estimate_sale_price": 293549.84375
      },
      {
        "date": "2026-09-27",
        "estimate_list_price": 298344.6875,
        "estimate_rent_monthly": 2266.185791015625,
        "estimate_sale_price": 293549.84375
      }
    ],
    "property_id": "bd9c6fb24c31c772",
    "property_type": "Apartment",
    "property_warning_flags": [
      {
        "description": "Monthly fees run about 4% of the estimated value each year, above the typical range. High fees can weigh on resale.",
        "warning": "High monthly fees"
      },
      {
        "description": "This property appears to have been converted between residential and commercial use. Conversions can carry permit, zoning, and insurance complications worth confirming.",
        "warning": "Use conversion"
      }
    ],
    "province": "Alberta",
    "score_air_quality": 6,
    "score_bicycle": 9,
    "score_cell_coverage": 10,
    "score_curb_appeal": 5,
    "score_earthquake": 9,
    "score_education": 9,
    "score_entertainment": 10,
    "score_family": 0,
    "score_fire": 10,
    "score_flood": 9,
    "score_food_and_drink": 10,
    "score_hurricane": 10,
    "score_internet": 10,
    "score_nature": 6,
    "score_parking": 10,
    "score_quiet": 3,
    "score_retirement": 0,
    "score_safety": 6,
    "score_shopping": 9,
    "score_smell": 6,
    "score_tornado": 8,
    "score_total": 7,
    "score_total_percent": 0.7320000529289246,
    "score_traffic": 0,
    "score_transit": 10,
    "score_walkability": 10,
    "score_water_quality": 8,
    "valuation_date": "2026-09-27"
  },
  "error": "",
  "price_quote": false,
  "time_ms": 224,
  "url": "https://www.houski.ca/avm-report/bd9c6fb24c31c772_a49b86c7"
}
Value a property using your own data
Override the supported property characteristics, such as bedrooms, interior size, or year built, and the model values the property exactly as you describe it. The response includes the same list price, sale price, and monthly rent estimates with confidence scores and metrics.
Request
Shell session
curl -X GET "http://127.0.0.1:8080/avm?api_key=YOUR_API_KEY&bedroom=4&interior_sq_m=200.5&property_id=bd9c6fb24c31c772"
TypeScript code
const houski_avm_data_with_overrides = async (): Promise<AvmResponse> => {

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

    const url = new URL('http://127.0.0.1:8080/avm');
    url.searchParams.set('api_key', 'YOUR_API_KEY');
    url.searchParams.set('bedroom', '4');
    url.searchParams.set('interior_sq_m', '200.5');
    url.searchParams.set('property_id', 'bd9c6fb24c31c772');

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

    return data;
}

(async () => {
let data: AvmResponse = await houski_avm_data_with_overrides();

// Log the response
console.log(data);
})();
Response
JSON
{
  "cache_hit": false,
  "cost_cents": 500.0,
  "data": {
    "address": "302 610 17 Avenue SW",
    "bathroom_full": 1,
    "bathroom_half": 1,
    "bedroom": 4,
    "city": "Calgary",
    "comparable_properties": [
      {
        "address": "1440 540 14 Avenue SW",
        "distance_km": 0.2307419180870056,
        "estimate_sale_date_sold": "2026-08-14",
        "image": "a9e91311d17717f_a06d58be",
        "interior_sq_m": 195.46636962890625,
        "latitude": 51.040096282958984,
        "list_price": 450000,
        "longitude": -114.07379913330078
      },
      {
        "address": "2501 1100 8 Avenue SW",
        "distance_km": 1.2320033311843872,
        "estimate_sale_date_sold": "2024-06-07",
        "image": "ef49c9b0a3706ce2_7253638f",
        "interior_sq_m": 195.93087768554688,
        "latitude": 51.04650115966797,
        "list_price": 449900,
        "longitude": -114.08673095703124
      },
      {
        "address": "2402 1100 8 Avenue SW",
        "distance_km": 1.2320033311843872,
        "estimate_sale_date_sold": "2024-08-26",
        "image": "f5a4edb2ee198738_613aeb73",
        "interior_sq_m": 185.1542205810547,
        "latitude": 51.04650115966797,
        "list_price": 425000,
        "longitude": -114.08673095703124
      },
      {
        "address": "2201 1100 8 Avenue SW",
        "distance_km": 1.2320033311843872,
        "estimate_sale_date_sold": "2025-03-25",
        "image": "ad532b0602ae5a2a_a4ee12ae",
        "interior_sq_m": 186.4548492431641,
        "latitude": 51.04650115966797,
        "list_price": 450000,
        "longitude": -114.08673095703124
      },
      {
        "address": "2401 1100 8 Avenue SW",
        "distance_km": 1.2320033311843872,
        "estimate_sale_date_sold": "2024-01-28",
        "image": "88b949347f84ea29_85f7917d",
        "interior_sq_m": 186.4548492431641,
        "latitude": 51.04650115966797,
        "list_price": 488800,
        "longitude": -114.08673095703124
      },
      {
        "address": "2403 1100 8 Avenue SW",
        "distance_km": 1.2320033311843872,
        "estimate_sale_date_sold": "2026-09-17",
        "image": "a2b1c04649e990_a6a422aa",
        "interior_sq_m": 230.1189117431641,
        "latitude": 51.04650115966797,
        "list_price": 475000,
        "longitude": -114.08673095703124
      },
      {
        "address": "1702 1100 8 Avenue SW",
        "distance_km": 1.2320033311843872,
        "estimate_sale_date_sold": "2023-03-22",
        "image": "551cc5dd7c1e07a2_4f36f538",
        "interior_sq_m": 172.89111328125,
        "latitude": 51.04650115966797,
        "list_price": 375000,
        "longitude": -114.08673095703124
      },
      {
        "address": "608 1100 8 Avenue SW",
        "distance_km": 1.2320033311843872,
        "estimate_sale_date_sold": "2025-03-25",
        "image": "18805db183dbc05f_b11e7d30",
        "interior_sq_m": 172.33370971679688,
        "latitude": 51.04650115966797,
        "list_price": 374900,
        "longitude": -114.08673095703124
      },
      {
        "address": "902B 500 Eau Claire Avenue SW",
        "distance_km": 1.6730945110321045,
        "estimate_sale_date_sold": "2023-03-22",
        "image": "df9578810eb81033_561ba215",
        "interior_sq_m": 173.63433837890625,
        "latitude": 51.05313873291016,
        "list_price": 463800,
        "longitude": -114.07258605957033
      },
      {
        "address": "602A 500 Eau Claire Avenue SW",
        "distance_km": 1.6730945110321045,
        "estimate_sale_date_sold": "2026-06-21",
        "image": "afbf928502e6787e_5f270bde",
        "interior_sq_m": 164.90151977539062,
        "latitude": 51.05313873291016,
        "list_price": 424900,
        "longitude": -114.07258605957033
      }
    ],
    "comparable_properties_total": 28191,
    "construction_year": 1979,
    "country": "Canada",
    "den": 0,
    "estimate_list_price": {
      "confidence_score": 95.01814270019533,
      "model_metrics": {
        "coefficient_of_variation": 39.8504753626973,
        "error_10th_percentile": 4338.16259765625,
        "error_25th_percentile": 11031.234375,
        "error_50th_percentile": 25255.4375,
        "error_75th_percentile": 53322.8125,
        "error_90th_percentile": 106059.9453125,
        "error_95th_percentile": 184402.015625,
        "forecast_std_dev": 255608.171875,
        "mae": 60686.69140625,
        "mape": 8.463743209838867,
        "mean_bias": -10692.3330078125,
        "median_bias": 414.9375,
        "median_mape": 4.9818596839904785,
        "mse": 65449492480.0,
        "over_prediction_rate": 50.320489737126394,
        "pct_error_10th": 0.9080060720443726,
        "pct_error_90th": 15.432555198669434,
        "rmse": 255830.984375,
        "testing_r_squared": 0.94,
        "training_r_squared": 0.98,
        "under_prediction_rate": 49.679510262873606,
        "within_10_pct": 77.83939503060857,
        "within_15_pct": 89.31220741807707,
        "within_20_pct": 94.54807346056896,
        "within_5_pct": 50.14043932301044
      },
      "value": 430864.90625
    },
    "estimate_rent_monthly": {
      "confidence_score": 93.83267974853516,
      "model_metrics": {
        "coefficient_of_variation": 22.798548277028747,
        "error_10th_percentile": 29.91469955444336,
        "error_25th_percentile": 74.45068359375,
        "error_50th_percentile": 169.37689208984375,
        "error_75th_percentile": 335.43365478515625,
        "error_90th_percentile": 655.9906005859375,
        "error_95th_percentile": 1026.8118896484375,
        "forecast_std_dev": 668.0843505859375,
        "mae": 316.8042297363281,
        "mape": 10.418495178222656,
        "mean_bias": -44.97128677368164,
        "median_bias": -3.4735107421875,
        "median_mape": 6.167322635650635,
        "mse": 448360.4375,
        "over_prediction_rate": 49.36860714736709,
        "pct_error_10th": 1.1183578968048096,
        "pct_error_90th": 21.039480209350582,
        "rmse": 669.5972290039062,
        "testing_r_squared": 0.71,
        "training_r_squared": 0.86,
        "under_prediction_rate": 50.63139285263291,
        "within_10_pct": 68.802879151408,
        "within_15_pct": 82.28943048364692,
        "within_20_pct": 89.08953150650335,
        "within_5_pct": 42.044450056825355
      },
      "value": 3057.090576171875
    },
    "estimate_sale_price": {
      "confidence_score": 94.2463607788086,
      "model_metrics": {
        "coefficient_of_variation": 44.60855523222251,
        "error_10th_percentile": 5113.02490234375,
        "error_25th_percentile": 13220.5859375,
        "error_50th_percentile": 29188.890625,
        "error_75th_percentile": 58933.328125,
        "error_90th_percentile": 114315.671875,
        "error_95th_percentile": 186286.953125,
        "forecast_std_dev": 281802.53125,
        "mae": 67590.8359375,
        "mape": 9.812854766845703,
        "mean_bias": -10934.208984375,
        "median_bias": -818.546875,
        "median_mape": 5.7536420822143555,
        "mse": 79532048384.0,
        "over_prediction_rate": 49.140341067934024,
        "pct_error_10th": 1.0522005558013916,
        "pct_error_90th": 18.072734832763672,
        "rmse": 282014.28125,
        "testing_r_squared": 0.91,
        "training_r_squared": 0.95,
        "under_prediction_rate": 50.859658932065976,
        "within_10_pct": 72.40704500978474,
        "within_15_pct": 85.81213307240705,
        "within_20_pct": 91.81576740285156,
        "within_5_pct": 45.07268660889013
      },
      "value": 300990.46875
    },
    "image": "bd9c6fb24c31c772_7e931788",
    "interior_sq_m": 200.5,
    "latitude": 51.03819274902344,
    "longitude": -114.07510375976562,
    "price_history": [
      {
        "date": "2025-04-05",
        "estimate_list_price": 426578.84375,
        "estimate_rent_monthly": 3088.655029296875,
        "estimate_sale_price": 296463.9375
      },
      {
        "date": "2025-05-05",
        "estimate_list_price": 429732.28125,
        "estimate_rent_monthly": 3118.920654296875,
        "estimate_sale_price": 298826.46875
      },
      {
        "date": "2025-06-04",
        "estimate_list_price": 433460.5625,
        "estimate_rent_monthly": 3134.9375,
        "estimate_sale_price": 299344.75
      },
      {
        "date": "2025-07-04",
        "estimate_list_price": 433987.53125,
        "estimate_rent_monthly": 3134.9375,
        "estimate_sale_price": 297770.78125
      },
      {
        "date": "2025-08-03",
        "estimate_list_price": 435723.5,
        "estimate_rent_monthly": 3017.817138671875,
        "estimate_sale_price": 297770.78125
      },
      {
        "date": "2025-09-02",
        "estimate_list_price": 434658.53125,
        "estimate_rent_monthly": 3072.704833984375,
        "estimate_sale_price": 291259.59375
      },
      {
        "date": "2025-10-02",
        "estimate_list_price": 428997.6875,
        "estimate_rent_monthly": 2975.49755859375,
        "estimate_sale_price": 291259.59375
      },
      {
        "date": "2025-11-01",
        "estimate_list_price": 414148.53125,
        "estimate_rent_monthly": 2944.9462890625,
        "estimate_sale_price": 284786.46875
      },
      {
        "date": "2025-12-01",
        "estimate_list_price": 412962.1875,
        "estimate_rent_monthly": 2942.477294921875,
        "estimate_sale_price": 284990.78125
      },
      {
        "date": "2025-12-31",
        "estimate_list_price": 410467.34375,
        "estimate_rent_monthly": 2942.477294921875,
        "estimate_sale_price": 294147.03125
      },
      {
        "date": "2026-01-30",
        "estimate_list_price": 408482.03125,
        "estimate_rent_monthly": 2930.892578125,
        "estimate_sale_price": 293819.84375
      },
      {
        "date": "2026-03-01",
        "estimate_list_price": 423411.78125,
        "estimate_rent_monthly": 2918.747802734375,
        "estimate_sale_price": 293819.84375
      },
      {
        "date": "2026-03-31",
        "estimate_list_price": 428446.9375,
        "estimate_rent_monthly": 2930.98046875,
        "estimate_sale_price": 293674.1875
      },
      {
        "date": "2026-04-30",
        "estimate_list_price": 426860.4375,
        "estimate_rent_monthly": 2884.659423828125,
        "estimate_sale_price": 294393.4375
      },
      {
        "date": "2026-05-30",
        "estimate_list_price": 427634.625,
        "estimate_rent_monthly": 2971.72021484375,
        "estimate_sale_price": 293495.25
      },
      {
        "date": "2026-06-29",
        "estimate_list_price": 421978.3125,
        "estimate_rent_monthly": 2924.78466796875,
        "estimate_sale_price": 300990.46875
      },
      {
        "date": "2026-07-29",
        "estimate_list_price": 425843.9375,
        "estimate_rent_monthly": 3057.090576171875,
        "estimate_sale_price": 300990.46875
      },
      {
        "date": "2026-08-28",
        "estimate_list_price": 430852.15625,
        "estimate_rent_monthly": 3057.090576171875,
        "estimate_sale_price": 300990.46875
      },
      {
        "date": "2026-09-27",
        "estimate_list_price": 430864.90625,
        "estimate_rent_monthly": 3057.090576171875,
        "estimate_sale_price": 300990.46875
      }
    ],
    "property_id": "bd9c6fb24c31c772",
    "property_type": "Apartment",
    "property_warning_flags": [
      {
        "description": "Monthly fees run about 4% of the estimated value each year, above the typical range. High fees can weigh on resale.",
        "warning": "High monthly fees"
      },
      {
        "description": "This property appears to have been converted between residential and commercial use. Conversions can carry permit, zoning, and insurance complications worth confirming.",
        "warning": "Use conversion"
      }
    ],
    "province": "Alberta",
    "score_air_quality": 6,
    "score_bicycle": 9,
    "score_cell_coverage": 10,
    "score_curb_appeal": 5,
    "score_earthquake": 9,
    "score_education": 9,
    "score_entertainment": 10,
    "score_family": 0,
    "score_fire": 10,
    "score_flood": 9,
    "score_food_and_drink": 10,
    "score_hurricane": 10,
    "score_internet": 10,
    "score_nature": 6,
    "score_parking": 10,
    "score_quiet": 3,
    "score_retirement": 0,
    "score_safety": 6,
    "score_shopping": 9,
    "score_smell": 6,
    "score_tornado": 8,
    "score_total": 7,
    "score_total_percent": 0.7320000529289246,
    "score_traffic": 0,
    "score_transit": 10,
    "score_walkability": 10,
    "score_water_quality": 8,
    "valuation_date": "2026-09-27"
  },
  "error": "",
  "price_quote": false,
  "time_ms": 250,
  "url": "https://www.houski.ca/avm-report/bd9c6fb24c31c772_a49b86c7"
}

Response type declarations

TypeScript code
interface AvmResponse {
    url: string;
    data: AvmValuation;
    error: string;
    time_ms: number;
    cost_cents: number;
    price_quote: boolean;
    cache_hit: boolean;
}

interface AvmValuation {
    property_warning_flags: AvmWarningFlag[];
    interior_sq_m: number;
    property_type: string;
    bedroom: u16;
    den: u16;
    bathroom_full: u16;
    bathroom_half: u16;
    construction_year: u16;
    property_id: string;
    image: string;
    address?: string | null;
    city?: string | null;
    country?: string | null;
    province?: string | null;
    latitude: number;
    longitude: number;
    estimate_list_price: AvmSingleValuation;
    estimate_sale_price: AvmSingleValuation;
    estimate_rent_monthly: AvmSingleValuation;
    price_history: Prediction[];
    valuation_date: string;
    score_air_quality?: u8 | null;
    score_bicycle?: u8 | null;
    score_cell_coverage?: u8 | null;
    score_curb_appeal?: u8 | null;
    score_earthquake?: u8 | null;
    score_education?: u8 | null;
    score_entertainment?: u8 | null;
    score_family?: u8 | null;
    score_fire?: u8 | null;
    score_flood?: u8 | null;
    score_food_and_drink?: u8 | null;
    score_hurricane?: u8 | null;
    score_internet?: u8 | null;
    score_nature?: u8 | null;
    score_parking?: u8 | null;
    score_quiet?: u8 | null;
    score_retirement?: u8 | null;
    score_safety?: u8 | null;
    score_shopping?: u8 | null;
    score_smell?: u8 | null;
    score_tornado?: u8 | null;
    score_total?: u8 | null;
    score_total_percent?: number | null;
    score_traffic?: u8 | null;
    score_transit?: u8 | null;
    score_walkability?: u8 | null;
    score_water_quality?: u8 | null;
    comparable_properties_total: number;
    comparable_properties: AvmComparableProperty[];
}

interface AvmSingleValuation {
    value: number;
    confidence_score: number;
    model_metrics: AvmModelMetrics;
}

interface AvmModelMetrics {
    training_r_squared: number;
    testing_r_squared: number;
    mae: number;
    rmse: number;
    mape: number;
    median_mape: number;
    mse: number;
    within_5_pct: number;
    within_10_pct: number;
    within_15_pct: number;
    within_20_pct: number;
    mean_bias: number;
    median_bias: number;
    over_prediction_rate: number;
    under_prediction_rate: number;
    error_10th_percentile: number;
    error_25th_percentile: number;
    error_50th_percentile: number;
    error_75th_percentile: number;
    error_90th_percentile: number;
    error_95th_percentile: number;
    pct_error_10th: number;
    pct_error_90th: number;
    forecast_std_dev: number;
    coefficient_of_variation: number;
}

interface AvmComparableProperty {
    address: string;
    image: string;
    latitude: number;
    longitude: number;
    distance_km: number;
    interior_sq_m: number;
    list_price: number;
    estimate_sale_date_sold: string;
}

interface AvmWarningFlag {
    warning: string;
    description: string;
}

interface Prediction {
    date: string;
    estimate_list_price?: number | null;
    estimate_sale_price?: number | null;
    estimate_rent_monthly?: number | null;
}