!

Design philosophy

Simplicity first design

Intuitive endpoints, clear documentation, and runnable example requests. The quick start minimizes setup time so you can integrate with minimal friction.

You only pay for the data you need

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.

Consistent logic for sorting, filtering, and data/field selection

Standardized sort, filter, and field selection across all endpoints. Consistent query parameters simplify learning and enable code reuse.

Price quotes available for any request

Append ?price_quote=true to any query to get a cost estimate for the current page of results without executing the request.

Consistent response formats

Every endpoint returns a uniform structure. Errors conform to the same type, simplifying handling in strongly-typed languages.

No need to pass IDs (for GUIs)

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/calgary

The 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.

Opinionated link structure

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.

The properties endpoint includes the ui_info object

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.

Responses contain a pagination object

Where applicable, responses include a standard pagination object. It's stable across endpoints, so pagination logic is reusable.