Predict property metrics over time such as list price, sale price, and rent, on any date from January 2021 to today. The models are trained on sales, listings, and rents from January 2021 onward and do not forecast, so a request for a date outside that window is refused.
Supports single and batch requests. Batch mode predicts multiple properties at once, useful for portfolio trend analysis.
Override property characteristics via query parameters to test hypothetical scenarios - for example, predicting value changes from added bedrooms or square footage.
$0.001 per predicted value for a typical field. One value is one field, on one date, for one property, so the cost is your field count times your date count times the number of properties matched. Two fields over twelve months for one property is 26 predicted values, $0.026.
A predicted value costs exactly what that field costs as stored data on the properties endpoint, so the price you already know for a field is the price you pay here. All three predictable fields, list price, sale price, and monthly rent, cost the same, and adding price_quote=true tells you the exact figure before you run it. For a full valuation with a report behind it, use the automated valuation model endpoint instead.
Note: Query parameters (bedroom, den, etc.) override existing property data.
| Name | Required | Type | Description |
|---|---|---|---|
| api_key | Yes | UUID v4 | Your API key for authorization |
| property_id | Yes | String | The target property's ID (for batch selection, separate ids by a comma) |
| start_date | No (default: today) | String | Start date for prediction in YYYY-MM-DD format, from 2021-01-01 to today |
| fields | Yes | String | Any predictable field |
| period | No (default: month) | String | The time period for the predictions - day, week, month, year |
| next | No (default: 0) | Integer | How many periods after the start_date to predict. Maximum 1000. A range that reaches past today is refused, because the models do not forecast. |
| last | No (default: 0) | Integer | How many previous periods before the start_date to predict. Maximum 1000. A range that reaches before 2021-01-01 is refused. |
| bedroom | No | Integer | Number of bedrooms (overrides property data when provided) |
| den | No | Integer | Number of dens (overrides property data when provided) |
| bathroom_full | No | Integer | Number of full bathrooms (overrides property data when provided) |
| bathroom_half | No | Integer | Number of half bathrooms (overrides property data when provided) |
| construction_year | No | Integer | Year the property was built (overrides property data when provided) |
| interior_sq_m | No | Float | Interior square meters (overrides property data when provided) |
| property_type | No | String | Property type (overrides property data when provided) |
| maintenance_fee | No | Float | Monthly maintenance fee (overrides property data when provided) |
| garage_type_first | No | String | Garage type (overrides property data when provided) |
Type declarations are available at the bottom of this page.
| Name | Type | Description |
|---|---|---|
| cache_hit | Boolean | Indicates if the data was retrieved from the cache |
| cost_cents | Float | Cost of the API call in cents |
| data | Array<PredictData> | Array of prediction data for each property |
| error | String | Details about the error. Empty if no error |
| price_quote | Boolean | Indicates if this is a price quote request (no charge) |
| result_total | Integer | Number of properties found for the property_id values you sent |
| time_ms | Integer | Time taken for the request to complete in milliseconds |
Per-property prediction data:
| Name | Type | Description |
|---|---|---|
| property_id | String | Unique identifier for the property |
| predictions | Array<Prediction> | Array of time-series predictions for the property |
Each prediction point:
| Name | Type | Description |
|---|---|---|
| date | String | Date of the prediction in YYYY-MM-DD format |
| estimate_list_price | Float, omitted when not requested | Estimated listing price in dollars. Left out when the field was not requested in the fields parameter, or when the model could not produce a value |
| estimate_sale_price | Float, omitted when not requested | Estimated sale price in dollars. Left out when the field was not requested in the fields parameter, or when the model could not produce a value |
| estimate_rent_monthly | Float, omitted when not requested | Estimated monthly rent in dollars. Left out when the field was not requested in the fields parameter, or when the model could not produce a value |
Predict with modified characteristics:
Select the programming language you want to display the code examples in.
curl -X GET "http://127.0.0.1:8080/predict?api_key=YOUR_API_KEY&bedroom=4&fields=estimate_sale_price,estimate_list_price&interior_sq_m=200.5&last=3&next=3&period=week&property_id=bd9c6fb24c31c772&start_date=2023-02-01"
const houski_predict_data = async (): Promise<PredictResponse> => {
// You must copy the PredictResponse type declarations from the
// Houski API documentation to strongly type the response
const url = new URL('http://127.0.0.1:8080/predict');
url.searchParams.set('api_key', 'YOUR_API_KEY');
url.searchParams.set('bedroom', '4');
url.searchParams.set('fields', 'estimate_sale_price,estimate_list_price');
url.searchParams.set('interior_sq_m', '200.5');
url.searchParams.set('last', '3');
url.searchParams.set('next', '3');
url.searchParams.set('period', 'week');
url.searchParams.set('property_id', 'bd9c6fb24c31c772');
url.searchParams.set('start_date', '2023-02-01');
const response = await fetch(url);
const data = await response.json();
return data;
}
(async () => {
let data: PredictResponse = await houski_predict_data();
// Log the response
console.log(data);
})();
{
"cache_hit": true,
"cost_cents": 1.399999976158142,
"data": [
{
"predictions": [
{
"date": "2023-01-11",
"estimate_list_price": 293540.59375,
"estimate_sale_price": 237957.3125
},
{
"date": "2023-01-18",
"estimate_list_price": 293540.59375,
"estimate_sale_price": 238551.484375
},
{
"date": "2023-01-25",
"estimate_list_price": 299312.78125,
"estimate_sale_price": 238551.484375
},
{
"date": "2023-02-01",
"estimate_list_price": 299312.78125,
"estimate_sale_price": 238590.15625
},
{
"date": "2023-02-08",
"estimate_list_price": 288472.5625,
"estimate_sale_price": 238189.34375
},
{
"date": "2023-02-15",
"estimate_list_price": 291858.53125,
"estimate_sale_price": 238189.34375
},
{
"date": "2023-02-22",
"estimate_list_price": 291858.53125,
"estimate_sale_price": 238189.34375
}
],
"property_id": "bd9c6fb24c31c772"
}
],
"error": "",
"price_quote": false,
"result_total": 1,
"time_ms": 97
}
interface PredictResponse {
cache_hit: boolean;
cost_cents: number;
data: PredictData[];
error: string;
price_quote: boolean;
result_total: number;
time_ms: number;
}
interface PredictData {
property_id: string;
predictions: Prediction[];
}
interface Prediction {
date: string;
estimate_list_price?: number | null;
estimate_sale_price?: number | null;
estimate_rent_monthly?: number | null;
}