Immoweb
Belgian property for sale and to rent: price, surfaces, energy certificate and the advertising agency.
/immoweb/v1/location_searchfreeResolve a Belgian place name, postal code, district, province or estate-agency name to the exact values `search` takes. Returns ranked matches, each carrying the parameter name and the value to pass, so a caller never has to guess an immoweb token.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | required | — | A Belgian place or estate agency to resolve: a town, a district, a province, a postal code, or an agency name. Works in Dutch, French and English ('Gent'/'Gand', 'Antwerp'/'Antwerpen', 'Liège'/'Luik'). |
| kind = all | optional | all · places · agencies | Which groups to return. |
| language = en | optional | en · nl · fr | Belgium is trilingual and the language is NOT only a label. Ids, prices, surfaces and coordinates are identical in all three, but an advertiser writes the ad in one or more languages: ask for a language they did not use and immoweb returns a null title and description. This engine falls back to whatever the advertiser did publish and tells you which language it used in `description_language`. What the language really controls is the LABELS: province and region names, the EPC wording and the formatted price string. |
/immoweb/v1/search2 creditsSearch Belgian property listings — for sale or to rent — anywhere in Belgium or narrowed to postal codes, districts, provinces or one estate agency, with immoweb's own filters: price, bedrooms, rooms, habitable and land surface, garden, terrace and kitchen surface, property type and subtype, EPC/PEB rating, building condition, construction year, facades, parking, amenities and sort. 30 listings per page.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| transaction = sale | optional | sale · rent · both · buy · for-sale · to-rent | Sale or rental market. Immoweb requires one, and an unknown value is silently ignored upstream, so anything else is rejected here rather than quietly returning the sale market. |
| property_type = residential | optional | house · apartment · residential · land · garage · office · commercial · industry · apartment-block · house-group · apartment-group · other | Which immoweb catalogue to search. Several may be combined with a comma ('house,apartment'). Belgium-wide for-sale stock on 2026-09-24: house 50 974, apartment 34 466, land 11 214, apartment-block 6 969, commercial 6 638, garage 3 846, industry 3 461, apartment-group 2 530, office 2 443, house-group 1 650, other 369. |
| property_subtypes | optional | AGRICULTURAL_AREA · APARTMENT_BLOCK · BARGE · BED_N_BREAKFAST · BUILDING · BUILDING_LAND · BUNGALOW · CAMPSITE · CASTLE · CHALET · COMMERCIAL_PREMISES · COMMERCIAL_VILLA · COUNTRY_COTTAGE · COVERED_PARKING_SPACE · DUPLEX · EXCEPTIONAL_PROPERTY · FARMHOUSE · FIELDS · FLAT_STUDIO · FOREST · GITES · GROUND_FLOOR · HOLIDAY_PARK · HOTEL · HOTEL_RESTAURANT_CAFE · INDUSTRIAL_PREMISES · KOT · LARGE_TOWN_HOUSE · LOCK_UP_GARAGE · LOCK_UP_PARKING · LOFT · MANOR_HOUSE · MANSION · MEADOW · MILL · MIXED_USE_BUILDING · MIXED_USE_BUILDING_COMMERCIAL · MIXED_USE_BUILDING_INDUSTRIES · MIXED_USE_BUILDING_OFFICES · MOBILE_HOME · OFFICES · OFFICE_BLOCK · ORCHARD · OTHER · OTHER_HOUSE · OTHER_PROPERTY · OUTDOOR_PARKING_SPACE · PAVILION · PENTHOUSE · PROVINCIAL_FARMHOUSE · RECREATIONAL_AREA · SERVICE_FLAT · STATIC_CARAVAN · TOWN_HOUSE · TRIPLEX · UNBUILDABLE_LAND · VILLA · WAREHOUSE | Narrow to specific kinds. They belong to a property_type: VILLA/TOWN_HOUSE/CASTLE and friends to houses, PENTHOUSE/DUPLEX/LOFT/FLAT_STUDIO/KOT to apartments, BUILDING_LAND/FOREST/MEADOW to land. A subtype from the wrong catalogue returns an honest 0 rather than an error. |
| country = BE | optional | BE · FR · NL · LU · DE · ES · IT | Immoweb is Belgian but also carries foreign stock advertised to Belgians. Houses for sale on 2026-09-24: BE 50 977, FR 1 034, ES 174, NL 48, IT 48, LU 30, DE 4. |
| postal_codes | optional | — | Belgian postal codes, either bare ('9000') or prefixed ('BE-9000'). Several may be combined — location_search returns a ready-made list for 'Gent (all localities)' style matches. A code immoweb does not know is silently ignored upstream, so an unrecognisable shape is refused here. |
| districts | optional | — | Immoweb district tokens (GENT, BRUSSELS, ANTWERP…). Get them from location_search: it returns the exact token in `value` for every District match. |
| provinces | optional | ANTWERP · BRUSSELS · EAST_FLANDERS · FLEMISH_BRABANT · HAINAUT · LIEGE · LIMBURG · LUXEMBOURG · NAMUR · WALLOON_BRABANT · WEST_FLANDERS | One or more of the eleven Belgian provinces. Dutch and French spellings (Oost-Vlaanderen, Brabant-Wallon, Luik…) are accepted. |
| agency_id | optional | — | Show only the stock of one or more estate agencies. location_search returns the id for every Agency/Agent match, and agency_search returns it as agency_id. |
| property_ids | optional | — | Fetch specific listings by id in one call — a cheap way to re-check a saved set. Ids that do not match the other criteria (a rental id under transaction=sale, a sold listing) are simply absent from the result, so compare what comes back against what you asked for. |
| epc | optional | A++ · A+ · A · B · C · D · E · F · G · X | Energy-performance rating (EPC in Flanders, PEB in Wallonia and Brussels). Several may be combined. Belgian houses for sale on 2026-09-24: A++ 175, A+ 1 385, A 5 098, B 6 343, C 8 208, G 3 079, X (none published) 55. |
| building_condition | optional | AS_NEW · JUST_RENOVATED · GOOD · TO_BE_DONE_UP · TO_RENOVATE · TO_RESTORE · FIRST_TIME_USED · CASCO | State of repair as the advertiser declared it. Several may be combined (AS_NEW 11 071 + GOOD 13 731 = 24 800 Belgian houses for sale). |
| garden_orientation | optional | NORTH · NORTH_EAST · EAST · SOUTH_EAST · SOUTH · SOUTH_WEST · WEST · NORTH_WEST | Which way the garden or terrace faces. Eight compass points; SOUTH is the commonest (1 369 of 50 977 Belgian houses for sale). |
| modified_since | optional | — | Only listings touched on or after this date (YYYY-MM-DD). Together with days_since_modified_max this is how you poll immoweb for what is new without re-reading the whole market. |
| price_min | optional | 0– | Minimum price in EUR — the monthly rent when transaction=rent. 🔴 Life-annuity listings have no price at all and therefore pass every minimum; they come back with price null and price_type 'life_annuity'. |
| price_max | optional | 0– | Maximum price in EUR (monthly rent when transaction=rent). |
| bedrooms_min | optional | 0– | Minimum number of bedrooms. |
| bedrooms_max | optional | 0– | Maximum number of bedrooms. |
| rooms_min | optional | 0– | Minimum total room count. |
| rooms_max | optional | 0– | Maximum total room count. |
| surface_min | optional | 0– | Minimum net habitable surface in m². |
| surface_max | optional | 0– | Maximum net habitable surface in m². |
| land_surface_min | optional | 0– | Minimum plot size in m². |
| land_surface_max | optional | 0– | Maximum plot size in m². |
| garden_surface_min | optional | 0– | Minimum garden surface in m². |
| garden_surface_max | optional | 0– | Maximum garden surface in m². |
| terrace_surface_min | optional | 0– | Minimum terrace surface in m². |
| terrace_surface_max | optional | 0– | Maximum terrace surface in m². |
| kitchen_surface_min | optional | 0– | Minimum kitchen surface in m². |
| kitchen_surface_max | optional | 0– | Maximum kitchen surface in m². |
| construction_year_min | optional | 0– | Built in or after this year. |
| construction_year_max | optional | 0– | Built in or before this year. |
| facades_min | optional | 0– | Minimum number of free facades (4 = detached). |
| facades_max | optional | 0– | Maximum number of free facades (2 = terraced). |
| parking_min | optional | 0– | Minimum number of parking places. |
| parking_max | optional | 0– | Maximum number of parking places (0 = none). |
| buildable_surface_min | optional | 0– | Minimum total buildable ground-floor surface in m² (land and development). |
| buildable_surface_max | optional | 0– | Maximum total buildable ground-floor surface in m². |
| showroom_surface_min | optional | 0– | Minimum showroom surface in m² (commercial). |
| showroom_surface_max | optional | 0– | Maximum showroom surface in m² (commercial). |
| access_doors_min | optional | 0– | Minimum number of access doors (industrial). |
| access_doors_max | optional | 0– | Maximum number of access doors (industrial). |
| loading_bays_min | optional | 0– | Minimum number of loading bays (industrial). |
| loading_bays_max | optional | 0– | Maximum number of loading bays (industrial). |
| business_price_min | optional | 0– | Minimum price of the business / goodwill in EUR. |
| business_price_max | optional | 0– | Maximum price of the business / goodwill in EUR. |
| days_since_modified_max | optional | 0– | Only listings touched in the last N days (1 → 1 771 Belgian houses for sale, 7 → 6 042 of 50 977). |
| has_garden | optional | — | Has a garden (16 411 of 50 977 Belgian houses for sale). |
| has_terrace | optional | — | Has a terrace (29 667). |
| has_terrace_or_garden | optional | — | Has a terrace OR a garden (33 739). |
| has_swimming_pool | optional | — | Has a swimming pool (1 941). |
| has_lift | optional | — | Has a lift (832 houses; far commoner on apartments — 5 606 of 11 971 rentals). |
| has_fireplace | optional | — | Has an open fire or stove (2 640). |
| has_fitted_kitchen | optional | — | The kitchen is installed rather than bare (25 790). |
| has_disabled_access | optional | — | Declared accessible (2 330). |
| has_virtual_tour | optional | — | Has a virtual tour or 360° media (7 407). |
| has_reception_desk | optional | — | Has a reception desk (offices and commercial). |
| has_goodwill | optional | — | The business goodwill is included (commercial). |
| is_new_build | optional | — | New-build only when true (5 922); resale only when false (45 052). |
| is_furnished | optional | — | Furnished (885 houses for sale; 2 125 of 11 971 apartment rentals). |
| is_public_sale | optional | — | Sold at public auction (500). |
| is_future_public_sale | optional | — | A public sale announced but not yet open (5). |
| is_life_annuity | optional | — | Sold as a life annuity — 'viager' / 'lijfrente' (169). These listings have no single price; see price_type. |
| is_investment_property | optional | — | Advertised as an investment with rental income (5 009). |
| is_workspace | optional | — | Has a workspace or office element (11 775). |
| is_under_option | optional | — | Under option / sale agreed (10 381). |
| is_newly_published | optional | — | Newly published (10 821). |
| immediately_available | optional | — | Available immediately (8 845). |
| construction_permit_obtained | optional | — | The construction permit has been obtained (20 607). |
| small_pets_allowed | optional | — | Small pets allowed — rentals (743 of 11 971 apartment rentals). |
| big_pets_allowed | optional | — | Large pets allowed — rentals (270). |
| sort = relevance | optional | relevance · cheapest · most_expensive · newest · oldest | Result order. These five are the orders immoweb actually applies — it also accepts 'postal_code' and 'proximity', echoes them back, and returns the relevance order unchanged, so they are not offered. |
| page = 1 | optional | 1–333 | First page to fetch, 30 listings per page. Immoweb stops at page 333 (≈9 990 listings) and answers HTTP 500 beyond it, whatever the market total — use filters, postal codes or provinces to slice a big market instead. |
| max_pages = 1 | optional | 1–15 | How many consecutive pages to fetch in one call (1-15). Each page is one upstream request of about 1 MB. |
| include_promoted = true | optional | — | Immoweb injects one paid-placement listing at the top of page 1 — it ignores the sort order and also appears in its organic position further down. It is a real property, so it is returned by default flagged `promoted: true` and counted in meta.promoted_count. Set false to receive only the organic rows. |
| strict_filters = true | optional | — | Immoweb answers HTTP 200 and returns the UNFILTERED market when it does not recognise a filter value. Its response echoes back the filters it really applied, so this engine compares the two on every call and, by default, fails the request naming any filter that was dropped. Set false to receive the results anyway with the dropped filters listed in meta.filters_ignored. |
| language = en | optional | en · nl · fr | Belgium is trilingual and the language is NOT only a label. Ids, prices, surfaces and coordinates are identical in all three, but an advertiser writes the ad in one or more languages: ask for a language they did not use and immoweb returns a null title and description. This engine falls back to whatever the advertiser did publish and tells you which language it used in `description_language`. What the language really controls is the LABELS: province and region names, the EPC wording and the formatted price string. |
/immoweb/v1/property_detail2 creditsThe full immoweb listing: price and price per m², bedrooms, bathrooms, shower rooms and toilets, habitable / land / garden / terrace surfaces, EPC or PEB score with primary energy consumption and carbon emission, construction year, building condition and facade count, heating and energy equipment, cadastral income, monthly charges, flood zone and urban-planning status, land characteristics, parking, thirty amenity flags, address and coordinates, every photo, the full description in the language the advertiser wrote it, and the advertising agency.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| property_id | required | — | Immoweb listing id — the digits at the end of any immoweb listing URL ('21866842'), or paste the whole URL and the id is taken out of it. A Belgian listing disappears the day it sells, so there is no id that stays valid forever; for a guaranteed-live example pass `newest:<property_type>` (newest:house, newest:apartment, newest:land …) and the newest listing of that kind is resolved and returned. That form costs one extra upstream lookup. |
| language = en | optional | en · nl · fr | Belgium is trilingual and the language is NOT only a label. Ids, prices, surfaces and coordinates are identical in all three, but an advertiser writes the ad in one or more languages: ask for a language they did not use and immoweb returns a null title and description. This engine falls back to whatever the advertiser did publish and tells you which language it used in `description_language`. What the language really controls is the LABELS: province and region names, the EPC wording and the formatted price string. |
/immoweb/v1/market_countfreeHow many listings match a filter combination — immoweb's own total, in a 26-byte answer. Use it to size a market, to check a filter before paging through it, or to track supply over time without downloading any listings.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| transaction = sale | optional | sale · rent · both · buy · for-sale · to-rent | Sale or rental market. Immoweb requires one, and an unknown value is silently ignored upstream, so anything else is rejected here rather than quietly returning the sale market. |
| property_type = residential | optional | house · apartment · residential · land · garage · office · commercial · industry · apartment-block · house-group · apartment-group · other | Which immoweb catalogue to search. Several may be combined with a comma ('house,apartment'). Belgium-wide for-sale stock on 2026-09-24: house 50 974, apartment 34 466, land 11 214, apartment-block 6 969, commercial 6 638, garage 3 846, industry 3 461, apartment-group 2 530, office 2 443, house-group 1 650, other 369. |
| property_subtypes | optional | AGRICULTURAL_AREA · APARTMENT_BLOCK · BARGE · BED_N_BREAKFAST · BUILDING · BUILDING_LAND · BUNGALOW · CAMPSITE · CASTLE · CHALET · COMMERCIAL_PREMISES · COMMERCIAL_VILLA · COUNTRY_COTTAGE · COVERED_PARKING_SPACE · DUPLEX · EXCEPTIONAL_PROPERTY · FARMHOUSE · FIELDS · FLAT_STUDIO · FOREST · GITES · GROUND_FLOOR · HOLIDAY_PARK · HOTEL · HOTEL_RESTAURANT_CAFE · INDUSTRIAL_PREMISES · KOT · LARGE_TOWN_HOUSE · LOCK_UP_GARAGE · LOCK_UP_PARKING · LOFT · MANOR_HOUSE · MANSION · MEADOW · MILL · MIXED_USE_BUILDING · MIXED_USE_BUILDING_COMMERCIAL · MIXED_USE_BUILDING_INDUSTRIES · MIXED_USE_BUILDING_OFFICES · MOBILE_HOME · OFFICES · OFFICE_BLOCK · ORCHARD · OTHER · OTHER_HOUSE · OTHER_PROPERTY · OUTDOOR_PARKING_SPACE · PAVILION · PENTHOUSE · PROVINCIAL_FARMHOUSE · RECREATIONAL_AREA · SERVICE_FLAT · STATIC_CARAVAN · TOWN_HOUSE · TRIPLEX · UNBUILDABLE_LAND · VILLA · WAREHOUSE | Narrow to specific kinds. They belong to a property_type: VILLA/TOWN_HOUSE/CASTLE and friends to houses, PENTHOUSE/DUPLEX/LOFT/FLAT_STUDIO/KOT to apartments, BUILDING_LAND/FOREST/MEADOW to land. A subtype from the wrong catalogue returns an honest 0 rather than an error. |
| country = BE | optional | BE · FR · NL · LU · DE · ES · IT | Immoweb is Belgian but also carries foreign stock advertised to Belgians. Houses for sale on 2026-09-24: BE 50 977, FR 1 034, ES 174, NL 48, IT 48, LU 30, DE 4. |
| postal_codes | optional | — | Belgian postal codes, either bare ('9000') or prefixed ('BE-9000'). Several may be combined — location_search returns a ready-made list for 'Gent (all localities)' style matches. A code immoweb does not know is silently ignored upstream, so an unrecognisable shape is refused here. |
| districts | optional | — | Immoweb district tokens (GENT, BRUSSELS, ANTWERP…). Get them from location_search: it returns the exact token in `value` for every District match. |
| provinces | optional | ANTWERP · BRUSSELS · EAST_FLANDERS · FLEMISH_BRABANT · HAINAUT · LIEGE · LIMBURG · LUXEMBOURG · NAMUR · WALLOON_BRABANT · WEST_FLANDERS | One or more of the eleven Belgian provinces. Dutch and French spellings (Oost-Vlaanderen, Brabant-Wallon, Luik…) are accepted. |
| agency_id | optional | — | Show only the stock of one or more estate agencies. location_search returns the id for every Agency/Agent match, and agency_search returns it as agency_id. |
| property_ids | optional | — | Fetch specific listings by id in one call — a cheap way to re-check a saved set. Ids that do not match the other criteria (a rental id under transaction=sale, a sold listing) are simply absent from the result, so compare what comes back against what you asked for. |
| epc | optional | A++ · A+ · A · B · C · D · E · F · G · X | Energy-performance rating (EPC in Flanders, PEB in Wallonia and Brussels). Several may be combined. Belgian houses for sale on 2026-09-24: A++ 175, A+ 1 385, A 5 098, B 6 343, C 8 208, G 3 079, X (none published) 55. |
| building_condition | optional | AS_NEW · JUST_RENOVATED · GOOD · TO_BE_DONE_UP · TO_RENOVATE · TO_RESTORE · FIRST_TIME_USED · CASCO | State of repair as the advertiser declared it. Several may be combined (AS_NEW 11 071 + GOOD 13 731 = 24 800 Belgian houses for sale). |
| garden_orientation | optional | NORTH · NORTH_EAST · EAST · SOUTH_EAST · SOUTH · SOUTH_WEST · WEST · NORTH_WEST | Which way the garden or terrace faces. Eight compass points; SOUTH is the commonest (1 369 of 50 977 Belgian houses for sale). |
| modified_since | optional | — | Only listings touched on or after this date (YYYY-MM-DD). Together with days_since_modified_max this is how you poll immoweb for what is new without re-reading the whole market. |
| price_min | optional | 0– | Minimum price in EUR — the monthly rent when transaction=rent. 🔴 Life-annuity listings have no price at all and therefore pass every minimum; they come back with price null and price_type 'life_annuity'. |
| price_max | optional | 0– | Maximum price in EUR (monthly rent when transaction=rent). |
| bedrooms_min | optional | 0– | Minimum number of bedrooms. |
| bedrooms_max | optional | 0– | Maximum number of bedrooms. |
| rooms_min | optional | 0– | Minimum total room count. |
| rooms_max | optional | 0– | Maximum total room count. |
| surface_min | optional | 0– | Minimum net habitable surface in m². |
| surface_max | optional | 0– | Maximum net habitable surface in m². |
| land_surface_min | optional | 0– | Minimum plot size in m². |
| land_surface_max | optional | 0– | Maximum plot size in m². |
| garden_surface_min | optional | 0– | Minimum garden surface in m². |
| garden_surface_max | optional | 0– | Maximum garden surface in m². |
| terrace_surface_min | optional | 0– | Minimum terrace surface in m². |
| terrace_surface_max | optional | 0– | Maximum terrace surface in m². |
| kitchen_surface_min | optional | 0– | Minimum kitchen surface in m². |
| kitchen_surface_max | optional | 0– | Maximum kitchen surface in m². |
| construction_year_min | optional | 0– | Built in or after this year. |
| construction_year_max | optional | 0– | Built in or before this year. |
| facades_min | optional | 0– | Minimum number of free facades (4 = detached). |
| facades_max | optional | 0– | Maximum number of free facades (2 = terraced). |
| parking_min | optional | 0– | Minimum number of parking places. |
| parking_max | optional | 0– | Maximum number of parking places (0 = none). |
| buildable_surface_min | optional | 0– | Minimum total buildable ground-floor surface in m² (land and development). |
| buildable_surface_max | optional | 0– | Maximum total buildable ground-floor surface in m². |
| showroom_surface_min | optional | 0– | Minimum showroom surface in m² (commercial). |
| showroom_surface_max | optional | 0– | Maximum showroom surface in m² (commercial). |
| access_doors_min | optional | 0– | Minimum number of access doors (industrial). |
| access_doors_max | optional | 0– | Maximum number of access doors (industrial). |
| loading_bays_min | optional | 0– | Minimum number of loading bays (industrial). |
| loading_bays_max | optional | 0– | Maximum number of loading bays (industrial). |
| business_price_min | optional | 0– | Minimum price of the business / goodwill in EUR. |
| business_price_max | optional | 0– | Maximum price of the business / goodwill in EUR. |
| days_since_modified_max | optional | 0– | Only listings touched in the last N days (1 → 1 771 Belgian houses for sale, 7 → 6 042 of 50 977). |
| has_garden | optional | — | Has a garden (16 411 of 50 977 Belgian houses for sale). |
| has_terrace | optional | — | Has a terrace (29 667). |
| has_terrace_or_garden | optional | — | Has a terrace OR a garden (33 739). |
| has_swimming_pool | optional | — | Has a swimming pool (1 941). |
| has_lift | optional | — | Has a lift (832 houses; far commoner on apartments — 5 606 of 11 971 rentals). |
| has_fireplace | optional | — | Has an open fire or stove (2 640). |
| has_fitted_kitchen | optional | — | The kitchen is installed rather than bare (25 790). |
| has_disabled_access | optional | — | Declared accessible (2 330). |
| has_virtual_tour | optional | — | Has a virtual tour or 360° media (7 407). |
| has_reception_desk | optional | — | Has a reception desk (offices and commercial). |
| has_goodwill | optional | — | The business goodwill is included (commercial). |
| is_new_build | optional | — | New-build only when true (5 922); resale only when false (45 052). |
| is_furnished | optional | — | Furnished (885 houses for sale; 2 125 of 11 971 apartment rentals). |
| is_public_sale | optional | — | Sold at public auction (500). |
| is_future_public_sale | optional | — | A public sale announced but not yet open (5). |
| is_life_annuity | optional | — | Sold as a life annuity — 'viager' / 'lijfrente' (169). These listings have no single price; see price_type. |
| is_investment_property | optional | — | Advertised as an investment with rental income (5 009). |
| is_workspace | optional | — | Has a workspace or office element (11 775). |
| is_under_option | optional | — | Under option / sale agreed (10 381). |
| is_newly_published | optional | — | Newly published (10 821). |
| immediately_available | optional | — | Available immediately (8 845). |
| construction_permit_obtained | optional | — | The construction permit has been obtained (20 607). |
| small_pets_allowed | optional | — | Small pets allowed — rentals (743 of 11 971 apartment rentals). |
| big_pets_allowed | optional | — | Large pets allowed — rentals (270). |
| language = en | optional | en · nl · fr | Belgium is trilingual and the language is NOT only a label. Ids, prices, surfaces and coordinates are identical in all three, but an advertiser writes the ad in one or more languages: ask for a language they did not use and immoweb returns a null title and description. This engine falls back to whatever the advertiser did publish and tells you which language it used in `description_language`. What the language really controls is the LABELS: province and region names, the EPC wording and the formatted price string. |
/immoweb/v1/agency_search1 creditThe immoweb estate-agency directory, ranked by how much stock each agency is advertising: name, group, description, website, VAT and IPI registration number, address and coordinates, opening hours, and live for-sale / to-rent counts. Pass the agency_id to `search` to list everything that agency has on the market.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| postal_codes | optional | — | Postal codes to list agencies for (bare '9000' or 'BE-9000'). Omit to get the national ranking, which starts with the big agency groups. |
| page = 1 | optional | 1–200 | Agency page — 10 agencies per page. |
| language = en | optional | en · nl · fr | Belgium is trilingual and the language is NOT only a label. Ids, prices, surfaces and coordinates are identical in all three, but an advertiser writes the ad in one or more languages: ask for a language they did not use and immoweb returns a null title and description. This engine falls back to whatever the advertiser did publish and tells you which language it used in `description_language`. What the language really controls is the LABELS: province and region names, the EPC wording and the formatted price string. |
curl -X POST https://api.reefapi.com/immoweb/v1/location_search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"Gent"}'{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}