Immoweb APIimmoweb.be ↗
Search and retrieve Brussels-Capital Region apartment and studio rental listings from Immoweb.be. Filter by price, municipality, and property type via 3 endpoints.
What is the Immoweb API?
The Immoweb.be API gives programmatic access to residential rental listings across all 19 municipalities of the Brussels-Capital Region through 3 endpoints. Use search_rentals to page through up to 30 listing summaries per call with filters for price range, property type, and postal code, then call get_listing or get_listings_batch to retrieve full listing records including floor, surface area, room counts, rent, monthly charges, and coordinates.
curl -X GET 'https://api.parse.bot/scraper/913b0236-d989-482a-92da-fb07b84e09e9/search_rentals?order_by=relevance&max_price=1000&property_type=apartment' \ -H 'X-API-Key: $PARSE_API_KEY'
Searches currently published residential rental listings (apartments, including studios, duplexes, penthouses etc.) for rent in the Brussels-Capital Region (all 19 municipalities). One call returns one page of up to 30 listing summaries plus the site's total result count and derived page count; pass `page` (default 1) to walk further pages, `has_more` is false on the last page. Results are always capped by a maximum base rent (default 1000 EUR/month, excluding charges) and can optionally be narrowed by a minimum rent, to studios only, or to specific Brussels municipalities via their postal codes. Sort order follows the site's own menu. Summary fields that the advertiser did not publish (title, address, surface, charges) are null; open `get_listing` with `listing_id` for the full record.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based result page; each page holds up to 30 listings. A page beyond `page_count` returns an empty `listings` array. |
| order_by | string | Sort order of the result pages. |
| max_price | integer | Maximum base monthly rent in EUR (charges excluded). Listings above this rent are excluded. |
| min_price | integer | Minimum base monthly rent in EUR. Omitted = no lower bound. |
| postal_codes | string | Comma-separated Brussels-Capital postal codes (1000-1210) to restrict the search to specific municipalities, e.g. 1050,1060. Omitted = whole Brussels-Capital Region. The scraper splits on commas — do NOT pass an array. |
| property_type | string | Property type filter. `apartment` covers every apartment subtype (studios included); `studio` restricts to studios only. |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"filters": "object echoing the filters applied (max_price, min_price, property_type, postal_codes array or null, region, order_by)",
"has_more": "boolean, true when a later page exists",
"listings": "array of listing summaries: listing_id (string, use with get_listing), url (canonical listing page), title, property_type, property_subtype (e.g. FLAT_STUDIO, DUPLEX), municipality, postal_code, address (street + number, null when hidden), latitude/longitude, surface_m2, bedrooms, base_rent_eur, monthly_charges_eur, price_label (site display string), advertiser_name, flag (site badge such as new / under_option, null when none), last_modified (ISO timestamp), photo_count, thumbnail_url",
"page_size": "integer, listings per page as served by the site (30)",
"page_count": "integer, total pages derived from total_results / page_size",
"total_results": "integer, total matching listings reported by the site"
},
"sample": {
"data": {
"page": 1,
"filters": {
"region": "Brussels-Capital",
"order_by": "relevance",
"max_price": 1000,
"min_price": null,
"postal_codes": null,
"property_type": "apartment"
},
"has_more": true,
"listings": [
{
"url": "https://www.immoweb.be/en/classified/apartment/for-rent/schaerbeek/1030/21856892",
"flag": "new",
"title": "Modern apartment for rent near public transport !",
"address": "Rue Gallait 62",
"bedrooms": 1,
"latitude": 50.8663563,
"longitude": 4.3682926,
"listing_id": "21856892",
"surface_m2": 82,
"photo_count": 4,
"postal_code": "1030",
"price_label": "€950 (+ €70)",
"municipality": "Schaerbeek",
"base_rent_eur": 950,
"last_modified": "2026-09-21T15:03:27.271Z",
"property_type": "APARTMENT",
"thumbnail_url": "https://media-resize.immowebstatic.be/classifieds/7a15e24e-c69d-4532-8fe0-3ce46af30cdf/736x736/4a089112299a78f15e919b2c07c4fb7c.jpg",
"advertiser_name": "Latour et Petit Location",
"property_subtype": "APARTMENT",
"monthly_charges_eur": 70
}
],
"page_size": 30,
"page_count": 25,
"total_results": 740
},
"status": "success"
}
}About the Immoweb API
Search and Filter Brussels Rentals
search_rentals returns paginated summaries of currently published apartment and studio rental listings on Immoweb.be. Each call targets the Brussels-Capital Region and accepts filters for min_price, max_price, property_type (apartment or studio), and postal_codes (comma-separated Brussels codes from 1000 to 1210). The response includes total_results, page_count, and a has_more boolean so you can walk the full result set. Each summary in the listings array carries a listing_id you pass to the detail endpoints.
Full Listing Details
get_listing accepts a single listing_id and returns the complete public record: canonical url, title, address, latitude/longitude, floor, bedrooms, bathrooms, shower_rooms, toilets, kitchen_type, living_room_surface, bedroom_surface, net_habitable_surface, base rent, monthly_charges, has_lift, has_terrace, has_garden, has_parking, description, photo_count, and listing status (active or rented_or_sold).
Batch Fetching
get_listings_batch accepts up to 10 comma-separated listing_ids in one call and returns all the same detail fields as get_listing. It adds a count object reporting how many ids succeeded or failed, an errors array with per-id failure reasons (not_found, upstream_error, or extraction_failed), an include_photos flag that when set to true appends a photo_urls array (736×736 variant) to each record, and a language parameter to select fr or en for listing text.
The Immoweb API is a managed, monitored endpoint for immoweb.be — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when immoweb.be changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official immoweb.be API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a rental price monitor that tracks base rent trends across Brussels postal codes over time.
- Create a neighbourhood comparison tool using net_habitable_surface and rent fields across the 19 municipalities.
- Aggregate listing data to calculate median rent per bedroom count for Brussels studio vs. apartment segments.
- Feed a property alert service that pages search_rentals daily and surfaces newly published listings matching a user's budget and postal code.
- Populate a map-based search UI using the latitude/longitude and address fields returned by get_listing.
- Automate due-diligence checks on a shortlist of listings by batch-fetching up to 10 records at once with get_listings_batch.
- Compile a photo gallery for a rental aggregator using photo_urls from get_listings_batch with include_photos enabled.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.