Methodology
What this data is
Immoweb listings, scraped over time. That means:
- Asking prices, not transaction prices. A listing records what a seller advertised, not what a buyer paid. Belgian sale prices typically settle below asking. Where an official recorded price exists (Statbel, first half of 2025), it is shown alongside on the Geography page.
- A panel, not a snapshot. The same listing appears repeatedly across scrapes, so the raw tables hold ~6M rows describing ~1.5M distinct listings. Everything here deduplicates to the latest observation per listing before aggregating.
The coverage problem
The scraper did not run continuously. Monthly scrape days range from 6 to 31, and there is no data
at all for
No listings were captured at all during that period, so those months cannot be reconstructed by reprocessing.
This shapes what the dashboard reports. Medians, ratios, yields and price indices are robust, because a median is insensitive to how many observations were sampled provided the sample is not systematically skewed. Those carry the dashboard. Raw counts and volumes are a different matter: they largely measure how often the scraper ran, so they are flagged or broken out wherever they appear.
Time series are keyed on publication_creationDate, the listing's own date, never on the scrape
date, so the x axis reflects when a property came to market rather than when the scraper ran.
Cleaning rules
Raw values span €1 to €32,000,000 and surfaces from 1 m² to 452,230 m². Applied throughout:
- sale prices winsorised to €80,000 to €2,150,000 (the 1st to 99th percentile)
- rents to €300 to €15,000 a month
- habitable surface to 11 to 2,000 m², and only where a €/m² figure is computed
- life annuity sales and build obligation plots excluded
- multi-unit stock (apartment blocks, mixed use buildings) excluded, since it is priced per building rather than per dwelling and would inflate every median
- construction year is deliberately not filtered on. It is populated in only 64% of rows, so requiring it would silently discard a third of the market.
Gross rental yield
12 × median asking rent ÷ median asking price, computed per commune where both sides carry at
least
It is a market level ratio, not an investment return. The rent and sale medians come from different properties, and the figure ignores purchase costs, registration duty, maintenance, vacancy, management and tax. Belgian registration duty alone runs to 12.5% in Wallonia and Brussels.