!

Instant property valuations via API: How Houski's AVM endpoint works

Photo of Alex Wilkinson
Alex Wilkinson
CEO of Houski
2026-04-05

Traditional property valuations meant hiring appraisers, waiting days, and paying hundreds per property. For businesses valuing properties at scale - lenders, investors, insurers, property managers - that doesn't work.

Houski's automated valuation model (AVM) endpoint changes the equation. One API call returns valuations for list price, sale price, and monthly rent, with confidence scores, model accuracy metrics, comparable properties, and a fully rendered shareable report.

See it in action

Before reading the docs, see what actually comes back. The AVM API documentation page renders two live example reports generated by the endpoint on real Canadian properties (look for the "Example AVM reports" buttons near the top).

Each report shows the three valuations, confidence scores, full model metrics including an error distribution, the comparable properties used, and the property characteristics that fed the model. That same report URL comes back on every API call so you can hand a link to clients or load it in an iframe.

What you get from a single API call

Three independent valuations

  • Estimated list price (likely listing price today)
  • Estimated sale price (likely closing price)
  • Estimated monthly rent (rental market value)

Confidence and accuracy metrics

  • Confidence score for each valuation (0-100)
  • R-squared score showing model explanatory power
  • Median absolute percentage error showing typical error size
  • Hit rates within 5%, 10%, 15%, and 20% bands
  • Full error distribution percentiles
  • Forecast standard deviation and coefficient of variation

Market context

  • Up to 10 comparable properties within 5km
  • Address, distance, list price, and estimated sale date for each comparable
  • Total comparable count in the same city and property type

Property-specific insights

  • Warning flags for potential valuation issues
  • Property characteristics used in the model
  • A shareable HTML report URL you can hand to clients

The most accurate valuations in Canada

Our city-level models are designed to outperform the best publicly reported off-market accuracy from major US providers. Current per-city accuracy metrics, including median absolute percentage error and R-squared for every model, are published live on the AVM information page.

We are not aware of another Canadian valuation provider that publishes accuracy metrics. We do. When you're making decisions worth hundreds of thousands, you deserve to know how reliable your data is.

Accuracy metrics fluctuate as we refine models, so the AVM information page is the source of truth for current performance across every city and property type.

"What if" scenario modeling

The AVM endpoint accepts property characteristic overrides so you can model scenarios without changing the underlying data:

  • What's this house worth with 4 bedrooms instead of 3?
  • How does adding 50 square meters affect the valuation?
  • What would a newer construction year do?

Pass overrides for bedroom count, bathroom count, interior square meters, construction year, property type, maintenance fee, or garage type for instant revised valuations.

Use cases

Mortgage lenders: Assess collateral during underwriting. Confidence scores and model metrics show valuation reliability.

Property investors: Screen acquisitions at scale. Spot properties where estimated value differs significantly from asking price.

Insurance companies: Determine replacement costs and coverage. Comparables provide market context for unusual valuations.

Property managers: Set competitive rental rates. The rent estimate uses the latest model on each request.

Portfolio managers: Track asset values across holdings without manual appraisals.

Tax assessors: Cross-reference assessment values against market estimates to flag properties for review.

Transparent pricing

The AVM endpoint costs $5.00 per request. Each request generates all three estimate types (list, sale, rent) plus comparables, full metrics, and a shareable report - a fraction of traditional appraisal costs.

Getting started

New to the API? Get a key in a few minutes. The endpoint requires a property_id (from our properties endpoint) and your API key. The block below is a live call against the real API - the request code and the JSON response are generated every time this page is rendered, so they always reflect the current schema and current data:

API request
TypeScript code
const houski_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('https://api.houski.ca/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_data();

// Log the response
console.log(data);
})();
API 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.15573714673519137,
        "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": "1105 1209 6 Street SW",
        "distance_km": 0.39864420890808105,
        "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": "109 545 18 Avenue SW",
        "distance_km": 0.19652090966701508,
        "estimate_sale_date_sold": "2025-09-03",
        "image": "703794262c3f0a6f_ae0e2846",
        "interior_sq_m": 94.10999298095705,
        "latitude": 51.03668594360352,
        "list_price": 319900,
        "longitude": -114.0736083984375
      },
      {
        "address": "401 1209 6 Street SW",
        "distance_km": 0.39864420890808105,
        "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": "500 610 17 Avenue SW",
        "distance_km": 0.0,
        "estimate_sale_date_sold": "2023-05-17",
        "image": "fb81bd27e5d3b319_860c3dd6",
        "interior_sq_m": 93.36677551269533,
        "latitude": 51.03819274902344,
        "list_price": 324900,
        "longitude": -114.07510375976562
      },
      {
        "address": "701 1209 6 Street SW",
        "distance_km": 0.39864420890808105,
        "estimate_sale_date_sold": "2024-04-04",
        "image": "27170c00d68d56c5_a08329a3",
        "interior_sq_m": 94.48160552978516,
        "latitude": 51.04155349731445,
        "list_price": 314900,
        "longitude": -114.07714080810548
      },
      {
        "address": "504 616 15 Avenue SW",
        "distance_km": 0.11205749213695526,
        "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": "203 330 15 Avenue SW",
        "distance_km": 0.35846400260925293,
        "estimate_sale_date_sold": "2024-05-13",
        "image": "9bfb40e46e0da97_57c6d01e",
        "interior_sq_m": 90.20809936523438,
        "latitude": 51.039058685302734,
        "list_price": 318800,
        "longitude": -114.07009887695312
      },
      {
        "address": "305 1209 6 Street SW",
        "distance_km": 0.39864420890808105,
        "estimate_sale_date_sold": "2024-08-04",
        "image": "1119eb5e5c0e6dd6_9dfcbaf5",
        "interior_sq_m": 94.2957992553711,
        "latitude": 51.04155349731445,
        "list_price": 290000,
        "longitude": -114.07714080810548
      }
    ],
    "comparable_properties_total": 26446,
    "construction_year": 1979,
    "country": "Canada",
    "den": 0,
    "estimate_list_price": {
      "confidence_score": 95.37734985351562,
      "model_metrics": {
        "coefficient_of_variation": 21.297779888460052,
        "error_10th_percentile": 3827.418701171875,
        "error_25th_percentile": 9674.828125,
        "error_50th_percentile": 23070.7421875,
        "error_75th_percentile": 47898.9296875,
        "error_90th_percentile": 92634.5625,
        "error_95th_percentile": 148044.328125,
        "forecast_std_dev": 128036.875,
        "mae": 47591.03125,
        "mape": 6.9191975593566895,
        "mean_bias": -5065.5068359375,
        "median_bias": 430.265625,
        "median_mape": 4.622647285461426,
        "mse": 16419014656.0,
        "over_prediction_rate": 50.56352952509392,
        "pct_error_10th": 0.825827956199646,
        "pct_error_90th": 14.368406295776367,
        "rmse": 128136.703125,
        "testing_r_squared": 0.95,
        "training_r_squared": 0.98,
        "under_prediction_rate": 49.43647047490608,
        "within_10_pct": 80.1416048550236,
        "within_15_pct": 90.8823812734804,
        "within_20_pct": 95.21722377420288,
        "within_5_pct": 53.00067430883345
      },
      "value": 304696.46875
    },
    "estimate_rent_monthly": {
      "confidence_score": 84.40579986572266,
      "model_metrics": {
        "coefficient_of_variation": 74.19626193400119,
        "error_10th_percentile": 11197.140625,
        "error_25th_percentile": 29858.390625,
        "error_50th_percentile": 73107.78125,
        "error_75th_percentile": 163402.125,
        "error_90th_percentile": 341056.21875,
        "error_95th_percentile": 550266.6875,
        "forecast_std_dev": 451020.15625,
        "mae": 168982.734375,
        "mape": 33.335357666015625,
        "mean_bias": -57108.90234375,
        "median_bias": -1695.578125,
        "median_mape": 15.594200134277344,
        "mse": 206676312064.0,
        "over_prediction_rate": 49.18625,
        "pct_error_10th": 2.5083909034729004,
        "pct_error_90th": 66.41152954101562,
        "rmse": 454616.65625,
        "testing_r_squared": 0.72,
        "training_r_squared": 0.82,
        "under_prediction_rate": 50.81375,
        "within_10_pct": 36.0375,
        "within_15_pct": 48.791250000000005,
        "within_20_pct": 58.3375,
        "within_5_pct": 19.635
      },
      "value": 2113.846923828125
    },
    "estimate_sale_price": {
      "confidence_score": 95.3768310546875,
      "model_metrics": {
        "coefficient_of_variation": 21.802883473823258,
        "error_10th_percentile": 3706.49365234375,
        "error_25th_percentile": 9493.46875,
        "error_50th_percentile": 22532.15625,
        "error_75th_percentile": 47268.0703125,
        "error_90th_percentile": 93783.46875,
        "error_95th_percentile": 150844.203125,
        "forecast_std_dev": 127978.265625,
        "mae": 47541.25,
        "mape": 7.054271221160889,
        "mean_bias": -4664.0380859375,
        "median_bias": 475.828125,
        "median_mape": 4.623165130615234,
        "mse": 16400123904.0,
        "over_prediction_rate": 50.63577690010597,
        "pct_error_10th": 0.8310901522636414,
        "pct_error_90th": 14.612176895141602,
        "rmse": 128062.96875,
        "testing_r_squared": 0.95,
        "training_r_squared": 0.99,
        "under_prediction_rate": 49.36422309989404,
        "within_10_pct": 79.77555148829593,
        "within_15_pct": 90.50187843175031,
        "within_20_pct": 94.70185916578365,
        "within_5_pct": 53.04402273384067
      },
      "value": 293364.59375
    },
    "image": "bd9c6fb24c31c772_7e931788",
    "interior_sq_m": 92.43848419189452,
    "latitude": 51.03819274902344,
    "longitude": -114.07510375976562,
    "price_history": [
      {
        "date": "2025-02-18",
        "estimate_list_price": 328939.625,
        "estimate_rent_monthly": 2109.8994140625,
        "estimate_sale_price": 303350.5625
      },
      {
        "date": "2025-03-20",
        "estimate_list_price": 329062.625,
        "estimate_rent_monthly": 2109.8994140625,
        "estimate_sale_price": 304171.25
      },
      {
        "date": "2025-04-19",
        "estimate_list_price": 329062.625,
        "estimate_rent_monthly": 2109.8994140625,
        "estimate_sale_price": 304964.21875
      },
      {
        "date": "2025-05-19",
        "estimate_list_price": 335027.4375,
        "estimate_rent_monthly": 2109.8994140625,
        "estimate_sale_price": 311037.21875
      },
      {
        "date": "2025-06-18",
        "estimate_list_price": 333825.6875,
        "estimate_rent_monthly": 2109.8994140625,
        "estimate_sale_price": 314355.09375
      },
      {
        "date": "2025-07-18",
        "estimate_list_price": 332129.96875,
        "estimate_rent_monthly": 2109.8994140625,
        "estimate_sale_price": 315810.03125
      },
      {
        "date": "2025-08-17",
        "estimate_list_price": 331247.09375,
        "estimate_rent_monthly": 2109.8994140625,
        "estimate_sale_price": 313273.1875
      },
      {
        "date": "2025-09-16",
        "estimate_list_price": 322242.5,
        "estimate_rent_monthly": 2109.8994140625,
        "estimate_sale_price": 307987.21875
      },
      {
        "date": "2025-10-16",
        "estimate_list_price": 310982.65625,
        "estimate_rent_monthly": 2113.846923828125,
        "estimate_sale_price": 304819.40625
      },
      {
        "date": "2025-11-15",
        "estimate_list_price": 310966.9375,
        "estimate_rent_monthly": 2113.846923828125,
        "estimate_sale_price": 309683.09375
      },
      {
        "date": "2025-12-15",
        "estimate_list_price": 310966.9375,
        "estimate_rent_monthly": 2113.846923828125,
        "estimate_sale_price": 308561.96875
      },
      {
        "date": "2026-01-14",
        "estimate_list_price": 303210.59375,
        "estimate_rent_monthly": 2113.846923828125,
        "estimate_sale_price": 304967.40625
      },
      {
        "date": "2026-02-13",
        "estimate_list_price": 302817.875,
        "estimate_rent_monthly": 2113.846923828125,
        "estimate_sale_price": 298701.09375
      },
      {
        "date": "2026-03-15",
        "estimate_list_price": 303162.3125,
        "estimate_rent_monthly": 2113.846923828125,
        "estimate_sale_price": 298037.53125
      },
      {
        "date": "2026-04-14",
        "estimate_list_price": 302872.15625,
        "estimate_rent_monthly": 2113.846923828125,
        "estimate_sale_price": 297308.53125
      },
      {
        "date": "2026-05-14",
        "estimate_list_price": 302872.15625,
        "estimate_rent_monthly": 2113.846923828125,
        "estimate_sale_price": 292016.375
      },
      {
        "date": "2026-06-13",
        "estimate_list_price": 302610.59375,
        "estimate_rent_monthly": 2113.846923828125,
        "estimate_sale_price": 292016.375
      },
      {
        "date": "2026-07-13",
        "estimate_list_price": 304696.46875,
        "estimate_rent_monthly": 2113.846923828125,
        "estimate_sale_price": 293364.59375
      },
      {
        "date": "2026-08-12",
        "estimate_list_price": 304696.46875,
        "estimate_rent_monthly": 2113.846923828125,
        "estimate_sale_price": 293364.59375
      }
    ],
    "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": 4,
    "score_earthquake": 9,
    "score_education": 9,
    "score_entertainment": 10,
    "score_family": 0,
    "score_fire": 9,
    "score_flood": 9,
    "score_food_and_drink": 10,
    "score_hurricane": 10,
    "score_internet": 10,
    "score_nature": 6,
    "score_parking": 8,
    "score_quiet": 2,
    "score_retirement": 0,
    "score_safety": 6,
    "score_shopping": 9,
    "score_smell": 4,
    "score_tornado": 8,
    "score_total": 7,
    "score_total_percent": 0.6960000395774841,
    "score_traffic": 0,
    "score_transit": 9,
    "score_walkability": 10,
    "score_water_quality": 7,
    "valuation_date": "2026-08-12"
  },
  "error": "",
  "price_quote": false,
  "time_ms": 656,
  "url": "https://www.houski.ca/avm-report/bd9c6fb24c31c772_a49b86c7"
}

The url field on every response points to a fully rendered report page you can share with clients or open in a browser - the same kind of page linked at the top of this post.

See the AVM API documentation for the complete request and response schema, every model metric field, and code examples in TypeScript, Python, Go, Java, C#, and Rust.

For simpler use cases without the full metrics package, the predict endpoint returns date-conditioned valuations across historical periods at lower cost.