Real estate lawyers: Get property data instantly instead of hunting through databases

Photo of Alex Wilkinson
Alex Wilkinson
CEO of Houski
2026-03-23

Real estate lawyers spend hours gathering property information that should take minutes. Assessment values, square footage, construction year, comparable properties: each requires logging into a different system, waiting for pages to load, and copying by hand.

The time sink is real: Property research consumes significant time on every closing. A practice handling hundreds of closings a year burns hundreds of hours on data gathering instead of legal work.

Property data APIs pull everything with a single request. One call returns assessment values, characteristics, and market estimates.

What you're doing now vs. what you could be doing

The current process

For every closing, someone on your team:

  1. Looks up the property in municipal assessment records
  2. Searches for property characteristics somewhere else
  3. Pulls tax records from another system
  4. Maybe checks the Multiple Listing Service (MLS) for comparables
  5. Copies all this into your file
  6. Hopes nothing changed between lookups

With a property API

One request returns everything you need. The block below shows the response shape, it is a live call against the real API and the request code and JSON response are regenerated every time this page is rendered. For a real closing, resolve the address through the search endpoint first, then pull the same fields by property_id to populate your closing template:

API request
TypeScript code
const houski_data = async (): Promise<PropertiesResponse> => {

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

    const url = new URL('https://api.houski.ca/properties');
    url.searchParams.set('api_key', 'YOUR_API_KEY');
    url.searchParams.set('city', 'calgary');
    url.searchParams.set('country_abbreviation', 'ca');
    url.searchParams.set('province_abbreviation', 'ab');
    url.searchParams.set('select', 'address,city,province_abbreviation,postal_code,property_type,interior_sq_m,land_area_sq_m,bedroom,bathroom_full,construction_year,assessment_value,assessment_year,estimate_sale_price,latitude,longitude');

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

    return data;
}

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

// Log the response
console.log(data);
})();
API response
JSON
{
  "cache_hit": false,
  "cost_cents": 5.28,
  "data": [
    {
      "address": "518 Rochester Terrace NW",
      "assessment_value": 1300000,
      "assessment_year": 2026,
      "bathroom_full": 2,
      "bedroom": 3,
      "city": "Calgary",
      "construction_year": 2023,
      "estimate_sale_price": 1476086,
      "interior_sq_m": 169.45374,
      "land_area_sq_m": 511.2,
      "latitude": 51.11072,
      "longitude": -114.2748,
      "property_id": "103f92f6cf7bbdd9",
      "property_type": "Land",
      "province_abbreviation": "AB"
    },
    {
      "address": "36 Crimson Ridge Heights NW",
      "assessment_value": 194000,
      "assessment_year": 2026,
      "bathroom_full": 2,
      "bedroom": 3,
      "city": "Calgary",
      "construction_year": 2024,
      "estimate_sale_price": 426463,
      "interior_sq_m": 169.45374,
      "land_area_sq_m": 4369.5,
      "latitude": 51.107574,
      "longitude": -114.25946,
      "property_id": "104fb85a9c002e5d",
      "property_type": "Commercial",
      "province_abbreviation": "AB"
    },
    {
      "address": "54 Rowmont Link NW",
      "assessment_value": 853500,
      "assessment_year": 2026,
      "bathroom_full": 2,
      "bedroom": 3,
      "city": "Calgary",
      "construction_year": 2023,
      "estimate_sale_price": 850575,
      "interior_sq_m": 169.45374,
      "land_area_sq_m": 369.2,
      "latitude": 51.106037,
      "longitude": -114.275,
      "property_id": "1055f97323e53f25",
      "property_type": "House",
      "province_abbreviation": "AB"
    },
    {
      "address": "499 Rochester Terrace NW",
      "assessment_value": 888000,
      "assessment_year": 2026,
      "bathroom_full": 2,
      "bedroom": 3,
      "city": "Calgary",
      "construction_year": 2023,
      "estimate_sale_price": 869910,
      "interior_sq_m": 169.45374,
      "land_area_sq_m": 391.6,
      "latitude": 51.111366,
      "longitude": -114.27512,
      "property_id": "1106094a42c3757d",
      "property_type": "Land",
      "province_abbreviation": "AB"
    },
    {
      "address": "304 30 Rochester View NW",
      "assessment_value": 105000,
      "assessment_year": 2026,
      "bathroom_full": 2,
      "bedroom": 2,
      "city": "Calgary",
      "construction_year": 1800,
      "estimate_sale_price": 616919,
      "interior_sq_m": 121.70197,
      "land_area_sq_m": 97.0,
      "latitude": 51.109074,
      "longitude": -114.26745,
      "postal_code": "T3L0M8",
      "property_id": "1198b011e799062c",
      "property_type": "Townhouse",
      "province_abbreviation": "AB"
    },
    {
      "address": "95 Royston He NW",
      "assessment_value": 918500,
      "assessment_year": 2026,
      "bathroom_full": 2,
      "bedroom": 3,
      "city": "Calgary",
      "construction_year": 2023,
      "estimate_sale_price": 944068,
      "interior_sq_m": 169.45374,
      "land_area_sq_m": 842.8,
      "latitude": 51.107533,
      "longitude": -114.272934,
      "property_id": "11aa161875771a70",
      "property_type": "Land",
      "province_abbreviation": "AB"
    }
  ],
  "error": "",
  "pagination": {
    "current_page": 1,
    "has_next_page": true,
    "has_previous_page": false,
    "page_total": 110113
  },
  "price_quote": false,
  "result_total": 660677,
  "time_ms": 34,
  "ui_info": {
    "city": "Calgary",
    "city_id": "6ec95b53075d062c",
    "city_link": "ca/ab/calgary",
    "city_slug": "calgary",
    "country": "Canada",
    "country_abbreviation": "CA",
    "country_abbreviation_id": "9ace2b6431b7f1be",
    "country_abbreviation_link": "ca",
    "country_slug": "canada",
    "province": "Alberta",
    "province_abbreviation": "AB",
    "province_abbreviation_id": "aae1f05a0f89d2c7",
    "province_abbreviation_link": "ca/ab",
    "province_slug": "alberta"
  }
}

You get structured data to populate documents, compare against contract terms, or flag issues.

See our Properties API docs and Fields reference for all available data.

Practical uses for real estate practice

Quick property lookup during client calls

A client calls about 123 Main Street. Instead of "let me look that up and call you back," pull the data while you're on the phone via the /search endpoint:

API request
TypeScript code
const houski_data = async (): Promise<SearchResponse> => {

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

    const url = new URL('https://api.houski.ca/search');
    url.searchParams.set('api_key', 'YOUR_API_KEY');
    url.searchParams.set('query', '123+main+st+calgary');

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

    return data;
}

(async () => {
let data: SearchResponse = await houski_data();

// Log the response
console.log(data);
})();
API response
JSON
{
  "cache_hit": false,
  "cost_cents": 0.19999999,
  "data": [
    {
      "address": "123 Main Street",
      "property_id": "aafadb43ded908a3"
    },
    {
      "address": "123 Main Street",
      "property_id": "ae06f5914a609e6d"
    },
    {
      "address": "123 Midcrest Crescent SE",
      "property_id": "d5f6e3fa9a720e57"
    },
    {
      "address": "123 Masters Street SE",
      "property_id": "4a7f48fcb67f69a4"
    },
    {
      "address": "123 Marquis Green SE",
      "property_id": "8708c4475c5f506c"
    },
    {
      "address": "123 Mahogany Garden SE",
      "property_id": "8cf6a0fcc9b0b412"
    },
    {
      "address": "123 Masters Green SE",
      "property_id": "f89f8666ba3e35b2"
    },
    {
      "address": "123 Magnolia Street SE",
      "property_id": "fa8f7d9379def645"
    },
    {
      "address": "123 Maple Court Crescent SE",
      "property_id": "8073cca1a36c4f0f"
    },
    {
      "address": "123 Martin Crossing Parade NE",
      "property_id": "21363aba66dcca7f"
    }
  ],
  "error": "",
  "match_meta": [
    {
      "match_value": 0.7,
      "property_id": "aafadb43ded908a3"
    },
    {
      "match_value": 0.7,
      "property_id": "ae06f5914a609e6d"
    },
    {
      "match_value": 0.7,
      "property_id": "d5f6e3fa9a720e57"
    },
    {
      "match_value": 0.7,
      "property_id": "4a7f48fcb67f69a4"
    },
    {
      "match_value": 0.7,
      "property_id": "8708c4475c5f506c"
    },
    {
      "match_value": 0.7,
      "property_id": "8cf6a0fcc9b0b412"
    },
    {
      "match_value": 0.7,
      "property_id": "f89f8666ba3e35b2"
    },
    {
      "match_value": 0.7,
      "property_id": "fa8f7d9379def645"
    },
    {
      "match_value": 0.7,
      "property_id": "8073cca1a36c4f0f"
    },
    {
      "match_value": 0.7,
      "property_id": "21363aba66dcca7f"
    }
  ],
  "price_quote": false,
  "result_total": 10,
  "time_ms": 71
}

Sanity check on purchase prices

Before closing, check whether the purchase price is in the ballpark of market value. The automated valuation model (AVM) endpoint gives you an estimate with a confidence score:

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": "802 616 15 Avenue SW",
        "distance_km": 0.11240647,
        "estimate_sale_date_sold": "2026-06-22",
        "image": "b596dd0be7e65ba5_87146c39",
        "interior_sq_m": 89.000374,
        "latitude": 51.039192,
        "list_price": 269900,
        "longitude": -114.07533
      },
      {
        "address": "303 616 15 Avenue SW",
        "distance_km": 0.11240647,
        "estimate_sale_date_sold": "2025-10-22",
        "image": "c0290e1291b85f6f_f2c54242",
        "interior_sq_m": 88.35006,
        "latitude": 51.039192,
        "list_price": 267500,
        "longitude": -114.07533
      },
      {
        "address": "501 1209 6 Street SW",
        "distance_km": 0.40037048,
        "estimate_sale_date_sold": "2025-07-16",
        "image": "bfe19f1bd25edec5_6d6f31cf",
        "interior_sq_m": 92.99517,
        "latitude": 51.041553,
        "list_price": 269000,
        "longitude": -114.07714
      },
      {
        "address": "402 820 15 Avenue SW",
        "distance_km": 0.3949422,
        "estimate_sale_date_sold": "2026-07-20",
        "image": "d630851caec37a97_e6d637d7",
        "interior_sq_m": 95.03902,
        "latitude": 51.039337,
        "list_price": 270000,
        "longitude": -114.080444
      },
      {
        "address": "604 330 15 Avenue SW",
        "distance_km": 0.36335313,
        "estimate_sale_date_sold": "2024-03-02",
        "image": "5fe35f1f84713e8e_feba293b",
        "interior_sq_m": 89.836494,
        "latitude": 51.03906,
        "list_price": 265000,
        "longitude": -114.0701
      },
      {
        "address": "204 330 15 Avenue SW",
        "distance_km": 0.36335313,
        "estimate_sale_date_sold": "2025-07-04",
        "image": "1bfdde85fb55e04d_5932f4ab",
        "interior_sq_m": 89.557785,
        "latitude": 51.03906,
        "list_price": 264900,
        "longitude": -114.0701
      },
      {
        "address": "101 523 15 Avenue SW",
        "distance_km": 0.15784955,
        "estimate_sale_date_sold": "2023-08-29",
        "image": "6d3f02fca68d547e_b6f2526e",
        "interior_sq_m": 91.97324,
        "latitude": 51.038586,
        "list_price": 288888,
        "longitude": -114.07294
      },
      {
        "address": "606 537 14 Avenue SW",
        "distance_km": 0.1804406,
        "estimate_sale_date_sold": "2023-12-02",
        "image": "9e126925987ae5c0_56a2deed",
        "interior_sq_m": 89.46488,
        "latitude": 51.03956,
        "list_price": 255000,
        "longitude": -114.073715
      },
      {
        "address": "305 235 15 Avenue SW",
        "distance_km": 0.49067223,
        "estimate_sale_date_sold": "2025-11-24",
        "image": "c4b5e786dc389a35_4c1ca2ae",
        "interior_sq_m": 88.442955,
        "latitude": 51.038467,
        "list_price": 269999,
        "longitude": -114.06811
      },
      {
        "address": "205 235 15 Avenue SW",
        "distance_km": 0.49067223,
        "estimate_sale_date_sold": "2024-06-29",
        "image": "80a93745ce38ee61_80fbaf17",
        "interior_sq_m": 88.16425,
        "latitude": 51.038467,
        "list_price": 269900,
        "longitude": -114.06811
      }
    ],
    "comparable_properties_total": 29040,
    "construction_year": 1979,
    "country": "Canada",
    "den": 0,
    "estimate_list_price": {
      "confidence_score": 95.00434,
      "model_metrics": {
        "coefficient_of_variation": 34.37363413774068,
        "error_10th_percentile": 4142.26904296875,
        "error_25th_percentile": 10785.3046875,
        "error_50th_percentile": 25437.125,
        "error_75th_percentile": 53379.21875,
        "error_90th_percentile": 106661.171875,
        "error_95th_percentile": 183243.8125,
        "forecast_std_dev": 219811.484375,
        "mae": 59226.43359375,
        "mape": 8.339874267578125,
        "mean_bias": -8763.900390625,
        "median_bias": 496.109375,
        "median_mape": 4.995657920837402,
        "mse": 48393924608.0,
        "over_prediction_rate": 50.6266753604289,
        "pct_error_10th": 0.8739217519760132,
        "pct_error_90th": 15.445496559143066,
        "rmse": 219986.1875,
        "testing_r_squared": 0.94,
        "training_r_squared": 0.99,
        "under_prediction_rate": 49.37332463957111,
        "within_10_pct": 77.64978627834529,
        "within_15_pct": 89.26320365138012,
        "within_20_pct": 94.435992175614,
        "within_5_pct": 50.03260160834601
      },
      "value": 271133.47
    },
    "estimate_rent_monthly": {
      "confidence_score": 93.86368,
      "model_metrics": {
        "coefficient_of_variation": 23.273093277937697,
        "error_10th_percentile": 29.049169540405273,
        "error_25th_percentile": 75.1527099609375,
        "error_50th_percentile": 168.203125,
        "error_75th_percentile": 335.72265625,
        "error_90th_percentile": 647.5496215820312,
        "error_95th_percentile": 1060.30810546875,
        "forecast_std_dev": 679.4482421875,
        "mae": 318.021240234375,
        "mape": 10.556913375854492,
        "mean_bias": -41.29466247558594,
        "median_bias": -4.029541015625,
        "median_mape": 6.1363205909729,
        "mse": 463356.25,
        "over_prediction_rate": 49.3053225048661,
        "pct_error_10th": 1.0789308547973633,
        "pct_error_90th": 20.960853576660156,
        "rmse": 680.7027587890625,
        "testing_r_squared": 0.7,
        "training_r_squared": 0.84,
        "under_prediction_rate": 50.6946774951339,
        "within_10_pct": 68.61534331163165,
        "within_15_pct": 82.13974092220954,
        "within_20_pct": 89.09322773340492,
        "within_5_pct": 42.42566615209075
      },
      "value": 2373.0881
    },
    "estimate_sale_price": {
      "confidence_score": 94.26222,
      "model_metrics": {
        "coefficient_of_variation": 45.40137217851901,
        "error_10th_percentile": 5040.875,
        "error_25th_percentile": 12724.40625,
        "error_50th_percentile": 28462.125,
        "error_75th_percentile": 58169.59375,
        "error_90th_percentile": 115548.2578125,
        "error_95th_percentile": 188690.921875,
        "forecast_std_dev": 286273.5,
        "mae": 67500.0390625,
        "mape": 10.191784858703612,
        "mean_bias": -9652.046875,
        "median_bias": -987.84375,
        "median_mape": 5.737776279449463,
        "mse": 82045485056.0,
        "over_prediction_rate": 48.96551724137931,
        "pct_error_10th": 1.0408254861831665,
        "pct_error_90th": 18.17011833190918,
        "rmse": 286435.84375,
        "testing_r_squared": 0.91,
        "training_r_squared": 0.95,
        "under_prediction_rate": 51.03448275862069,
        "within_10_pct": 73.1776047460141,
        "within_15_pct": 85.44308490915833,
        "within_20_pct": 91.67222840192808,
        "within_5_pct": 45.761957730812014
      },
      "value": 294333.06
    },
    "image": "bd9c6fb24c31c772_7e931788",
    "interior_sq_m": 92.438484,
    "latitude": 51.038193,
    "longitude": -114.0751,
    "price_history": [
      {
        "date": "2025-05-21",
        "estimate_list_price": 313377.78,
        "estimate_rent_monthly": 2289.2402,
        "estimate_sale_price": 320429.56
      },
      {
        "date": "2025-06-20",
        "estimate_list_price": 313439.94,
        "estimate_rent_monthly": 2308.8833,
        "estimate_sale_price": 315973.0
      },
      {
        "date": "2025-07-20",
        "estimate_list_price": 314960.94,
        "estimate_rent_monthly": 2308.8833,
        "estimate_sale_price": 316800.66
      },
      {
        "date": "2025-08-19",
        "estimate_list_price": 312448.5,
        "estimate_rent_monthly": 2358.0667,
        "estimate_sale_price": 315292.72
      },
      {
        "date": "2025-09-18",
        "estimate_list_price": 311678.0,
        "estimate_rent_monthly": 2350.9622,
        "estimate_sale_price": 309836.12
      },
      {
        "date": "2025-10-18",
        "estimate_list_price": 307468.38,
        "estimate_rent_monthly": 2351.636,
        "estimate_sale_price": 308248.16
      },
      {
        "date": "2025-11-17",
        "estimate_list_price": 307162.97,
        "estimate_rent_monthly": 2376.993,
        "estimate_sale_price": 301529.72
      },
      {
        "date": "2025-12-17",
        "estimate_list_price": 303381.53,
        "estimate_rent_monthly": 2335.967,
        "estimate_sale_price": 294457.44
      },
      {
        "date": "2026-01-16",
        "estimate_list_price": 298996.94,
        "estimate_rent_monthly": 2320.4446,
        "estimate_sale_price": 294480.2
      },
      {
        "date": "2026-02-15",
        "estimate_list_price": 288514.38,
        "estimate_rent_monthly": 2320.4446,
        "estimate_sale_price": 294480.2
      },
      {
        "date": "2026-03-17",
        "estimate_list_price": 291996.88,
        "estimate_rent_monthly": 2303.094,
        "estimate_sale_price": 294480.2
      },
      {
        "date": "2026-04-16",
        "estimate_list_price": 290117.44,
        "estimate_rent_monthly": 2308.4219,
        "estimate_sale_price": 293803.03
      },
      {
        "date": "2026-05-16",
        "estimate_list_price": 288908.4,
        "estimate_rent_monthly": 2308.5254,
        "estimate_sale_price": 293588.22
      },
      {
        "date": "2026-06-15",
        "estimate_list_price": 285737.0,
        "estimate_rent_monthly": 2324.2617,
        "estimate_sale_price": 293907.0
      },
      {
        "date": "2026-07-15",
        "estimate_list_price": 281405.28,
        "estimate_rent_monthly": 2332.7334,
        "estimate_sale_price": 293034.9
      },
      {
        "date": "2026-08-14",
        "estimate_list_price": 276388.28,
        "estimate_rent_monthly": 2373.0881,
        "estimate_sale_price": 294551.25
      },
      {
        "date": "2026-09-13",
        "estimate_list_price": 277337.25,
        "estimate_rent_monthly": 2343.6184,
        "estimate_sale_price": 296753.6
      },
      {
        "date": "2026-10-13",
        "estimate_list_price": 276858.66,
        "estimate_rent_monthly": 2373.0881,
        "estimate_sale_price": 296753.6
      },
      {
        "date": "2026-11-12",
        "estimate_list_price": 271133.47,
        "estimate_rent_monthly": 2373.0881,
        "estimate_sale_price": 294333.06
      }
    ],
    "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": 10,
    "score_cell_coverage": 10,
    "score_curb_appeal": 4,
    "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": 2,
    "score_retirement": 0,
    "score_safety": 6,
    "score_shopping": 9,
    "score_smell": 6,
    "score_tornado": 8,
    "score_total": 7,
    "score_total_percent": 0.72800004,
    "score_traffic": 0,
    "score_transit": 10,
    "score_walkability": 10,
    "score_water_quality": 8,
    "valuation_date": "2026-11-12"
  },
  "error": "",
  "price_quote": false,
  "time_ms": 281,
  "url": "https://www.houski.ca/avm-report/bd9c6fb24c31c772_a49b86c7"
}

Compare the contract price against the estimate_sale_price value. This doesn't replace an appraisal, but if the purchase price is 40% above the estimate, that's worth a conversation with your client.

See AVM documentation for confidence scores and what the estimates include.

Finding comparable properties

Query for properties with similar characteristics by bracketing interior_sq_m and filtering on property_type_eq:

API request
TypeScript code
const houski_data = async (): Promise<PropertiesResponse> => {

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

    const url = new URL('https://api.houski.ca/properties');
    url.searchParams.set('api_key', 'YOUR_API_KEY');
    url.searchParams.set('city', 'calgary');
    url.searchParams.set('country_abbreviation', 'ca');
    url.searchParams.set('interior_sq_m_gte', '110');
    url.searchParams.set('interior_sq_m_lte', '180');
    url.searchParams.set('property_type_eq', 'House');
    url.searchParams.set('province_abbreviation', 'ab');
    url.searchParams.set('results_per_page', '20');
    url.searchParams.set('select', 'address,interior_sq_m,bedroom,construction_year,assessment_value,estimate_sale_price');

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

    return data;
}

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

// Log the response
console.log(data);
})();
API response
JSON
{
  "cache_hit": false,
  "cost_cents": 10.4,
  "data": [
    {
      "address": "54 Rowmont Link NW",
      "assessment_value": 853500,
      "bedroom": 3,
      "construction_year": 2023,
      "estimate_sale_price": 850575,
      "interior_sq_m": 169.45374,
      "property_id": "1055f97323e53f25"
    },
    {
      "address": "40 Rowmont Common NW",
      "assessment_value": 660000,
      "bedroom": 3,
      "construction_year": 2024,
      "estimate_sale_price": 698422,
      "interior_sq_m": 173.07692,
      "property_id": "11d2132629e36a28"
    },
    {
      "address": "16 Rowmont Common NW",
      "assessment_value": 758500,
      "bedroom": 3,
      "construction_year": 2024,
      "estimate_sale_price": 805834,
      "interior_sq_m": 173.07692,
      "property_id": "11f8d3671079fb5e"
    },
    {
      "address": "24 Rowley Common NW",
      "assessment_value": 844000,
      "bedroom": 3,
      "construction_year": 2021,
      "estimate_sale_price": 849602,
      "interior_sq_m": 161.60349,
      "property_id": "12e3ffac04ec3562"
    },
    {
      "address": "91 Royston Park NW",
      "assessment_value": 902000,
      "bedroom": 3,
      "construction_year": 2025,
      "estimate_sale_price": 889796,
      "interior_sq_m": 170.28986,
      "property_id": "145b4b70a1b793f6"
    },
    {
      "address": "71 Royston Park NW",
      "assessment_value": 921000,
      "bedroom": 3,
      "construction_year": 2025,
      "estimate_sale_price": 892903,
      "interior_sq_m": 170.28986,
      "property_id": "14c51adaf57c0fa3"
    },
    {
      "address": "14 Rowmont Court NW",
      "assessment_value": 1090000,
      "bedroom": 3,
      "construction_year": 2025,
      "estimate_sale_price": 1069733,
      "interior_sq_m": 169.45374,
      "property_id": "15eea15d534c94cc"
    },
    {
      "address": "42 Rowley Garden NW",
      "assessment_value": 884500,
      "bedroom": 3,
      "construction_year": 2022,
      "estimate_sale_price": 870333,
      "interior_sq_m": 169.45374,
      "property_id": "16e6fd1f8834fdb8"
    },
    {
      "address": "49 Rowmont He NW",
      "assessment_value": 773000,
      "bedroom": 3,
      "construction_year": 2023,
      "estimate_sale_price": 785020,
      "interior_sq_m": 169.45374,
      "property_id": "1727bad384612a5b"
    },
    {
      "address": "70 Rowmont Garden NW",
      "assessment_value": 803000,
      "bedroom": 3,
      "construction_year": 2024,
      "estimate_sale_price": 842772,
      "interior_sq_m": 169.45374,
      "property_id": "182a8d4ba841fbdf"
    },
    {
      "address": "22 Rowley Garden NW",
      "assessment_value": 843500,
      "bedroom": 3,
      "construction_year": 2022,
      "estimate_sale_price": 852683,
      "interior_sq_m": 169.45374,
      "property_id": "189e79b0088911e4"
    },
    {
      "address": "52 Rodelle Park NW",
      "assessment_value": 1010000,
      "bedroom": 3,
      "construction_year": 2024,
      "estimate_sale_price": 967281,
      "interior_sq_m": 169.45374,
      "property_id": "192c5126c78ae249"
    },
    {
      "address": "27 Royston Park NW",
      "assessment_value": 718500,
      "bedroom": 3,
      "construction_year": 2025,
      "estimate_sale_price": 863114,
      "interior_sq_m": 170.28986,
      "property_id": "1937026e92db962a"
    },
    {
      "address": "136 Rowmont He NW",
      "assessment_value": 864500,
      "bedroom": 3,
      "construction_year": 2024,
      "estimate_sale_price": 866386,
      "interior_sq_m": 169.45374,
      "property_id": "1a181b0c2fc33c17"
    },
    {
      "address": "26 Rowmont Link NW",
      "assessment_value": 889000,
      "bedroom": 3,
      "construction_year": 2023,
      "estimate_sale_price": 845897,
      "interior_sq_m": 169.45374,
      "property_id": "1a25576c1b8459d6"
    },
    {
      "address": "64 Rodelle Park NW",
      "assessment_value": 984000,
      "bedroom": 3,
      "construction_year": 2025,
      "estimate_sale_price": 1017639,
      "interior_sq_m": 169.45374,
      "property_id": "1b0752469f608fa9"
    },
    {
      "address": "75 Royston Park NW",
      "assessment_value": 856000,
      "bedroom": 3,
      "construction_year": 2025,
      "estimate_sale_price": 887496,
      "interior_sq_m": 170.28986,
      "property_id": "1b08ab83feaac992"
    },
    {
      "address": "41 Rowmont Manor NW",
      "assessment_value": 784000,
      "bedroom": 3,
      "construction_year": 2024,
      "estimate_sale_price": 797341,
      "interior_sq_m": 169.45374,
      "property_id": "1b0d71d5e4fa66a6"
    },
    {
      "address": "36 Rowmont Common NW",
      "assessment_value": 732500,
      "bedroom": 3,
      "construction_year": 2024,
      "estimate_sale_price": 797403,
      "interior_sq_m": 173.07692,
      "property_id": "1b3880954aa7c2d8"
    },
    {
      "address": "24 Rowmont Common NW",
      "assessment_value": 762500,
      "bedroom": 3,
      "construction_year": 2023,
      "estimate_sale_price": 764564,
      "interior_sq_m": 164.34412,
      "property_id": "1c3f4924fce46426"
    }
  ],
  "error": "",
  "pagination": {
    "current_page": 1,
    "has_next_page": true,
    "has_previous_page": false,
    "page_total": 7795
  },
  "price_quote": false,
  "result_total": 155900,
  "time_ms": 32,
  "ui_info": {
    "city": "Calgary",
    "city_id": "6ec95b53075d062c",
    "city_link": "ca/ab/calgary",
    "city_slug": "calgary",
    "country": "Canada",
    "country_abbreviation": "CA",
    "country_abbreviation_id": "9ace2b6431b7f1be",
    "country_abbreviation_link": "ca",
    "country_slug": "canada",
    "province": "Alberta",
    "province_abbreviation": "AB",
    "province_abbreviation_id": "aae1f05a0f89d2c7",
    "province_abbreviation_link": "ca/ab",
    "province_slug": "alberta"
  }
}

Bulk data for estate matters

Handling an estate with multiple properties? Pull data on all of them at once.

Document population

Pull property data directly into your closing document templates instead of typing it manually.

What the API actually provides

Property characteristics

  • Address, city, postal code
  • Property type (house, condo, etc.)
  • Square footage (interior and land)
  • Bedrooms, bathrooms
  • Year built
  • Lat/long coordinates

Records data

  • The assessing authority's parcel number for the property (parcel_number), written exactly as the authority writes it
  • Zoning, where published
  • The council tax band of a home in England or Wales (council_tax_band)

Valuation data

  • Assessment value and year, with its land and improvement parts where the assessing authority publishes them separately
  • Estimated market value (estimated sale price, list price, rent)
  • Confidence scores on estimates, from the AVM endpoint

Expansion data (optional, additional cost)

  • Historical listing data
  • Permit history
  • Assessment history over multiple years

What it doesn't do:

  • Read your contracts
  • Do legal analysis
  • Replace title searches

It gets you most of the way there in seconds. You still apply judgment and verify what matters.

Pricing

  • Property lookups: Most fields cost a tenth of a cent per field per property
  • AVM valuations: $5.00 per property
  • Search queries: Billed per field per row, the same way as property lookups

A typical 15-field lookup costs a few cents. The time savings pays for itself immediately.

Getting started

  1. Sign up and get an API key
  2. Test with a known property and compare
  3. Build into your workflow, whether a simple lookup tool or integration with your practice management system

Questions? Check our API documentation or contact us.