Housing Market API integration guide
The reference tables, endpoint descriptions, error codes and examples are generated from the API specification and stay in English in every language. Names, parameters and codes are identical everywhere.
Filters
The country parameter is required. Every other filter narrows the result, and filters combine.
A parameter the endpoint does not define is refused with invalid_parameter instead of being ignored, so a misspelled filter cannot silently return an unfiltered page.
Places can be filtered by identifier or by name. Names are matched without regard to case. Use either the name or the identifier for a level, not both.
The price filters compare the number as published, in each listing’s own currency. Nothing is converted.
A cursor belongs to the filters it was issued for. To change a filter, start again from the first page.
Parameters of GET /v1/properties
| Parameter | Type | Required | Values | Description |
|---|---|---|---|---|
country | string | yes | pattern ^[A-Z]{2}$ | ISO 3166-1 alpha-2 code of the country, for example TH. A country
outside your subscription is refused with country_not_entitled. |
listing_type | string | no | all sale rentdefault all | Which kind of listing to include. all is the default. |
property_type | string | no | Return only this property type, for example condominium. The value
is the property_type that listings carry; an unknown value returns
an empty page. | |
province_id | integer | no | min 1 | Return only listings in this province or state, by the province_id listings carry. |
city | string | no | Return only listings in this city, matched by name without regard to
case. Do not combine with city_id. | |
city_id | integer | no | min 1 | Return only listings in this city, by the city_id listings carry. |
area | string | no | Return only listings in this district or area, matched by name
without regard to case. Do not combine with area_id. | |
area_id | integer | no | min 1 | Return only listings in this district or area, by the area_id listings carry. |
min_price | number | no | min 0 | Lowest price to include, in the listing's own currency. Prices are never converted, so in a country with listings in more than one currency the filter compares the number as published. |
max_price | number | no | min 0 | Highest price to include, in the listing's own currency. |
min_bedrooms | integer | no | min 0 | Fewest bedrooms to include. Listings that do not state a number of bedrooms are left out. |
max_bedrooms | integer | no | min 0 | Most bedrooms to include. Listings that do not state a number of bedrooms are left out. |
published_since | string | no | Return only listings first published at or after this instant: a date
(YYYY-MM-DD, read as midnight UTC) or a date-time with a time zone,
for example 2026-10-01T00:00:00Z. A date-time without a time zone is
refused with invalid_parameter. | |
updated_since | string | no | Return only listings whose last_updated is at or after this instant,
in the same format as published_since. Use it to fetch what changed
since your last walk. A listing that has been withdrawn is not
returned; request it by id to confirm it is gone. | |
limit | integer | no | default 50min 1max 100 | Page size. At most the maximum shown; larger values are refused with invalid_parameter. |
cursor | string | no | The next_cursor of the previous page. Opaque: do not parse it, store
it, or build one. It is bound to your key and to the filters of the
request that produced it, and a cursor used with different filters is
refused with invalid_cursor. |