energy_class_asking_prices
Advertised homes and asking prices by energy class
Apartments (studios included) and houses advertised for sale or rent on the snapshot date, by country, tenure, property type and energy-performance class, with each class's share and its asking price per m². The class is the one each country's certificate states on its headline scale: Luxembourg CPE primary energy, French DPE energy consumption, Walloon PEB overall performance, German Energieausweis overall performance. Values on another indicator or off the scheme's scale count as not_stated. Letters are not comparable across countries. Rooms, colocations, multi-unit buildings and land are excluded. Price per m² is the asking price (or monthly base rent) divided by the living area, kept only for areas of 10–2,000 m², sale prices of 500–40,000 EUR/m² and rents of 3–120 EUR/m² a month; listings outside these bands still count in class shares, because their class is known, but not in price statistics. Asking prices are not transaction prices. Every class of the scale and not_stated is listed for each country, tenure and type with at least one listing, so absence is explicit.
Grain: one row per country × tenure × property type × energy class (every class of the country's scale, plus not_stated). Source: ChatHome public listing catalog: active, publicly listed adverts with a V3 card body. Energy classes are the certificate facets read from each advert.
| Column | Type | Description |
|---|---|---|
| snapshot_date | string | Date the catalog was read (YYYY-MM-DD, UTC). |
| country | string | ISO country of the home: LU, FR, BE or DE. |
| energy_scheme | string | Certificate scheme: LU_CPE, FR_DPE, BE_WAL_PEB or DE_ENERGIEAUSWEIS. |
| indicator | string | The scheme's headline indicator used for the class: primary_energy (LU), energy_consumption (FR), overall_performance (BE, DE). |
| tenure | string | sale or rent. |
| property_type | string | apartment (studios included) or house. |
| energy_class | string | Class label on the scheme's own scale, or not_stated when the advert states no class on the headline indicator, states one off the scale, or states two different ones. |
| class_rank | int | Position on the scheme's own scale, 0 = best. Comparable only within one scheme. Null for not_stated. |
| listings | int | Listings in this cell. Null when fewer than 5, because such small counts are unreliable (the row is then suppressed). |
| share_of_listings_pct | float | Share of this class among all listings of the same country, tenure and property type, not_stated included, in percent (1 decimal). Null when suppressed. |
| share_of_stated_pct | float | Share of this class among the listings of the same country, tenure and property type that state a class, in percent (1 decimal). Null for not_stated and when suppressed. |
| new_build_share_pct | float | Share of the cell's listings that are new builds, under construction, planned, or units of a multi-unit project, in percent (1 decimal). Null when fewer than 10 listings. |
| price_listings | int | Listings of the cell with a price per m² inside the plausibility bands. Null when fewer than 10. |
| unit | string | Unit of median, p25 and p75: eur_per_m2 (sale) or eur_per_m2_per_month (rent). |
| median | float | Median asking price per m² of the price listings. Sale rounded to whole euros, rent to 0.1 euro. Null unless price_listings is at least 10. |
| p25 | float | 25th percentile of asking price per m² (linear interpolation). Null unless price_listings is at least 10. |
| p75 | float | 75th percentile of asking price per m² (linear interpolation). Null unless price_listings is at least 10. |
| suppressed | bool | True when the cell has fewer than 5 listings: its counts, shares and prices are then null, because such small counts are unreliable. The adverts are public and this is not a confidentiality guarantee: a hidden count can sometimes be worked out from the shares. |