Intuitive endpoints, clear documentation, and runnable example requests. The quick start minimizes setup time so you can integrate with minimal friction.
Most endpoints bill only for the fields you request. Customize queries to include only the data you need.
A few endpoints are flat-priced per request. The AVM endpoint costs $5.00 USD per request because it runs a full automated valuation model. Flat per-request pricing is called out on the relevant endpoint's page.
Pay-as-you-go usage has a $99 USD/month minimum. If usage is below $99, you're billed $99. See the pricing page for details, including enterprise contracts for companies over $2M revenue.
Standardized sort, filter, and field selection across all endpoints. Consistent query parameters simplify learning and enable code reuse.
Append ?price_quote=true to any query to get a cost estimate for the current page of results without executing the request.
Every endpoint returns a uniform structure. Errors conform to the same type, simplifying handling in strongly-typed languages.
The API returns IDs but doesn't require them for retrieval. This is mainly for SEO and to keep front-end interfaces simple and intuitive.
Results are retrieved via a hierarchy of string-based location info.
Consider this URL:
https://houski.ca/property/ca/ab/calgaryThe country, province, and city are all in the URL - enough for the API to retrieve every property in that area.
Requests don't need IDs because this string-based hierarchy is deterministic. The API derives the IDs automatically.
Responses include relative links to where each resource should live in your UI. For example, properties from /properties include a link to that property's detail URL. You must select the links you want as fields in your request.
ui_info contains context for the query - community, city, address, province, country - even when no results are returned. This creates a stable UI resource for things like breadcrumbs on empty result pages.
Where applicable, responses include a standard pagination object. It's stable across endpoints, so pagination logic is reusable.