Individuals and small businesses under $2M annual revenue use pay-as-you-go: pay for what you use, no long-term commitments.
Minimum monthly charge: $99 USD/month
If pay-as-you-go usage is below $99, you're still charged $99.
Cancel anytime: No long-term contracts. Cancellation immediately invoices accrued usage in the current cycle, or the $99 minimum, whichever is greater. Charges are not prorated and are non-refundable, including the $99 minimum on same-day signup-and-cancel.
Power users wanting a predictable billing cycle can negotiate a fixed monthly fee. Contact us.
Cost calculation: Usage costs are based on the data returned for the current page of results, not the full set of matching records. Each additional page you fetch with the page parameter is billed again. Per-field pricing is in the API fields documentation.
Cost estimates: Use the 'price_quote' query parameter with any request to get the cost of the current page of results without being billed or receiving the data.
Current cycle cost: See your accrued usage cost for the current billing cycle in your dashboard, refreshed every 12 hours.
You are billed for what comes back, never for how much was searched to find it. Endpoints that return property records bill per field per row. Endpoints that return something else bill per thing returned. The rates below are the live values the /properties service charges, not a copy of them.
| Endpoint | You are billed for | Rate |
|---|---|---|
| /properties, /geocoding, /search | Each field you selected, on each row of the current page. Every response also carries address and property_id, which are billed at the cheap tier. | $0.001 per field per row (typical field) |
| Nested rows from expand | Each nested listing, rental, assessment or permit row returned, whatever that row contains | $0.001 per row |
| /aggregate | Each aggregation value returned, whatever the size of the area it summarizes | $0.01 per value |
| /map, cluster or heatmap | Each cluster or heatmap cell returned, never the rows behind it | $0.00001 per cluster or cell |
| /map, property mode | Same per-field pricing as /properties | $0.001 per field per row |
| /predict | Each predicted value: one field, on one date, for one property. A predicted value costs the same as reading that field. | $0.001 per value (typical field) |
| /location | Each location returned, the same whatever resolution you ask for and the same nested or flat | $0.00001 per location |
| /avm | The request, flat, because it runs a full valuation model | $5.00 per request |
| /auth | Nothing. Key validation is free | Free |
Per-field prices vary a little by field. The exact price of every field is listed in the API fields documentation, and adding price_quote=true to any request tells you the exact cost before you run it.
Map and location rates are billed on what comes back, not on how much data was searched to produce it. A map of a whole province costs the same as a map of one neighbourhood at the same detail, so panning and zooming stays predictable.
$5.00 USD per AVM, whether ordered through the /avm endpoint or from your dashboard. Each call returns list, sale, and rent estimates plus a full report. More info on the AVM page.
How AVM billing works:
Companies over $2M annual revenue use an annual contract: unlimited API usage, assigned implementation engineer, and priority support.
Contact us to discuss.
Every account has a maximum monthly API spend, $199 USD to start, which you set on your dashboard. Once your usage this billing period reaches it, further requests are refused with an error message that says the maximum has been reached and where to raise it, and nothing is billed for a refused request. Price quotes keep working, so you can still see what a query would cost. Usage figures refresh within a few minutes.
Fair, transparent pricing that scales with your usage. No surprises, no hidden fees.
Select the programming language you want to display the code examples in.
Add the price_quote query parameter to any request to get a cost estimate.
price_quote returns the cost of the current page of results without billing you or returning the data, so you can preview cost without charges.
curl -X GET "http://127.0.0.1:8080/properties?address=151-mckerrell-place-se&api_key=YOUR_API_KEY&city=calgary&country_abbreviation=ca&price_quote=true&province_abbreviation=ab"
const houski_properties_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('http://127.0.0.1:8080/properties');
url.searchParams.set('address', '151-mckerrell-place-se');
url.searchParams.set('api_key', 'YOUR_API_KEY');
url.searchParams.set('city', 'calgary');
url.searchParams.set('country_abbreviation', 'ca');
url.searchParams.set('price_quote', 'true');
url.searchParams.set('province_abbreviation', 'ab');
const response = await fetch(url);
const data = await response.json();
return data;
}
(async () => {
let data: PropertiesResponse = await houski_properties_data();
// Log the response
console.log(data);
})();
{
"cache_hit": true,
"cost_cents": 0.019999999552965164,
"data": [],
"error": "",
"pagination": {
"current_page": 1,
"has_next_page": false,
"has_previous_page": false,
"page_total": 1
},
"price_quote": true,
"result_total": 1,
"time_ms": 716,
"ui_info": {}
}