Euro indicators 5 July 2024 Next release: 3 October 2024
First quarter of 2024 compared with first quarter of 2023
Skip to the content
Up by 1.3% in the EU
Overview
In the first quarter of 2024, house prices, as measured by the House Price Index, fell by 0.4% in the euro area and rose by 1.3% in the EU compared with the same quarter of the previous year. In the fourth quarter of 2023, house prices fell by 1.2% in the euro area and rose by 0.2% in the EU. These figures come from Eurostat, the statistical office of the European Union.
Compared with the fourth quarter of 2023, house prices fell by 0.1% in the euro area and rose by 0.4% in the EU in the first quarter of 2024.
House price developments in the EU Member States
Among the Member States for which data are available, seven showed an annual decrease in house prices in the first quarter of 2024, and nineteen showed an annual increase. The largest falls were registered in Luxembourg (-10.9%), Germany (-5.7%) and France (-4.8%), while the highest increases were recorded in Poland (+18.0%), Bulgaria (+16.0%) and Lithuania (+9.9%).
Compared with the previous quarter, prices decreased in eight Member States and increased in eighteen Member States. The largest falls were registered in Denmark (-2.5%), France (-2.1%) and Slovakia (-1.7%), while the highest increases were recorded in Bulgaria (+7.1%), Hungary (+5.1%) and Poland (+4.3%).
Tables
Quarterly and annual changes in house prices | ||||||||
---|---|---|---|---|---|---|---|---|
Change compared with the previous quarter, % | Change compared with the same quarter of the previous year, % | |||||||
2023 | 2024 | 2023 | 2024 | |||||
Q2 | Q3 | Q4 | Q1 | Q2 | Q3 | Q4 | Q1 | |
Euro area | 0.2 | 0.2 | -0.8 | -0.1 | -1.6 | -2.2 | -1.2 | -0.4 |
EU | 0.4 | 0.7 | -0.3 | 0.4 | -0.9 | -1.1 | 0.2 | 1.3 |
Belgium | -0.4 | 1.3 | 1.4 | 0.7 | 1.8 | 1.0 | 2.8 | 3.1 |
Bulgaria | 4.3 | 2.7 | 1.2 | 7.1 | 10.7 | 9.2 | 10.1 | 16.0 |
Czechia | -0.4 | 0.3 | 0.3 | 0.9 | -2.9 | -3.5 | -1.0 | 1.2 |
Denmark | 0.4 | 1.8 | 1.6 | -2.5 | -6.2 | -4.8 | -0.9 | 1.2 |
Germany | -1.3 | -1.4 | -2.0 | -1.1 | -9.6 | -10.2 | -7.2 | -5.7 |
Estonia | 3.8 | -0.3 | 2.1 | 2.0 | 5.0 | 3.8 | 5.8 | 7.8 |
Ireland | -0.5 | 1.5 | 2.9 | 2.3 | 2.7 | 1.4 | 3.1 | 6.3 |
Greece | : | : | : | : | : | : | : | : |
Spain | 2.1 | 2.5 | -1.0 | 2.7 | 3.7 | 4.5 | 4.3 | 6.4 |
France | -0.5 | 0.4 | -2.7 | -2.1 | 0.7 | -1.6 | -3.6 | -4.8 |
Croatia | 3.5 | 0.3 | 3.4 | 1.7 | 13.7 | 10.9 | 9.5 | 9.1 |
Italy | 1.9 | -0.1 | 0.0 | -0.1 | 0.6 | 1.7 | 1.8 | 1.7 |
Cyprus | -0.1 | 0.5 | -0.6 | 1.4 | 3.6 | 0.6 | 1.6 | 1.1 |
Latvia | 4.9 | -1.1 | -2.7 | 2.7 | 5.4 | 3.0 | 0.8 | 3.7 |
Lithuania | 2.4 | 2.4 | 1.5 | 3.3 | 9.4 | 8.7 | 8.3 | 9.9 |
Luxembourg | -2.2 | -6.6 | -2.2 | -0.3 | -5.9 | -13.9 | -14.5 | -10.9 |
Hungary | 1.0 | 1.4 | -0.5 | 5.1 | 6.4 | 4.7 | 6.0 | 7.1 |
Malta | 1.6 | 1.5 | 1.6 | 1.9 | 5.3 | 5.7 | 6.7 | 6.7 |
Netherlands | -1.2 | 1.1 | 1.7 | 2.0 | -4.1 | -3.7 | 0.1 | 3.6 |
Austria | 0.2 | -0.2 | -1.8 | -0.4 | -2.8 | -5.4 | -3.0 | -2.2 |
Poland | 3.2 | 4.5 | 4.8 | 4.3 | 7.0 | 9.3 | 13.0 | 18.0 |
Portugal | 3.1 | 1.8 | 1.3 | 0.6 | 8.7 | 7.6 | 7.8 | 7.0 |
Romania | -0.8 | 3.4 | 1.5 | 1.3 | 0.1 | 4.8 | 3.7 | 5.5 |
Slovenia | 1.9 | 0.5 | 2.6 | 1.2 | 7.5 | 5.6 | 6.9 | 6.3 |
Slovakia | -4.0 | 0.8 | 1.9 | -1.7 | -2.2 | -4.1 | -1.4 | -3.0 |
Finland | 0.9 | -2.9 | -1.0 | -1.3 | -5.6 | -7.2 | -4.8 | -4.3 |
Sweden | 0.6 | -0.4 | -2.3 | 0.5 | -6.8 | -4.2 | -2.9 | -1.6 |
Iceland | 2.5 | -0.9 | 2.5 | 1.6 | 10.1 | 2.7 | 3.8 | 5.7 |
Norway | 2.3 | -2.2 | -1.1 | 2.8 | 1.9 | -0.5 | 2.1 | 1.8 |
Switzerland | 1.2 | 0.2 | 1.1 | -1.0 | 2.4 | 1.3 | 1.3 | 1.5 |
: not available Source datasets: prc_hpi_q (compared with the previous quarter) and prc_hpi_q (compared with the same quarter of the previous year) |
Notes for users
Revisions and timetable
Compared with Euro indicators release of 4 April 2024, revisions for the euro area and the EU are highlighted in bold in the table below:
Revisions | ||||||
---|---|---|---|---|---|---|
Q2 2023 | Q3 2023 | Q4 2023 | ||||
Quarterly changes | Previous | Current | Previous | Current | Previous | Current |
Euro area | 0.2 | 0.2 | 0.2 | 0.2 | -0.7 | -0.8 |
EU | 0.5 | 0.4 | 0.7 | 0.7 | -0.3 | -0.3 |
Annual changes | ||||||
---|---|---|---|---|---|---|
Euro area | -1.6 | -1.6 | -2.2 | -2.2 | -1.1 | -1.2 |
EU | -1.0 | -0.9 | -1.1 | -1.1 | 0.2 | 0.2 |
The next release with data (second quarter of 2024) is scheduled for 3 October 2024.
Methods and definitions
The House Price Index (HPI) measures the price changes of all residential properties purchased by households (flats, detached houses, terraced houses, etc.), both newly built and existing, independently of their final use and independently of their previous owners. The Member States’ HPIs are compiled by the National Statistical Institutes. The euro area and the EU aggregate HPIs are compiled by Eurostat. HPIs are computed as annually chained indices with weights being updated each year. The European HPI aggregates are currently calculated as weighted averages of the national HPIs using as weights the GDP at market prices (expressed in millions Purchasing Power Standards - PPS) of the countries concerned.
The figures are not seasonally adjusted.
Missing country data is estimated by Eurostat using data from non-harmonised sources. These estimates are not published but are used to calculate euro area and EU aggregates.
Geographical information
Euro area (EA20): Belgium, Germany, Estonia, Ireland, Greece, Spain, France, Croatia, Italy, Cyprus, Latvia, Lithuania, Luxembourg, Malta, the Netherlands, Austria, Portugal, Slovenia, Slovakia and Finland.
European Union (EU27): Belgium, Bulgaria, Czechia, Denmark, Germany, Estonia, Ireland, Greece, Spain, France, Croatia, Italy, Cyprus, Latvia, Lithuania, Luxembourg, Hungary, Malta, the Netherlands, Austria, Poland, Portugal, Romania, Slovenia, Slovakia, Finland and Sweden.
For more information
Website section on Housing price statistics
Database section on Housing price statistics
News article on House prices and rents
Statistics Explained article on Housing price statistics
Statistics Explained article on Owner-occupied housing price statistics
Statistics Explained article on House sales statistics
Handbook on Residential Property Price Indices
Euro indicators dashboard
Release calendar for euro indicators
Statistics Code of Practice
Get in touch
Media requests
Eurostat Media Support
Phone: (+352) 4301 33 408
E-mail: eurostat-mediasupport@ec.europa.eu
Further information on data
Share component will be rendered here.
'; /** Retrieve the order from the tooltip option */ var sortOrder = option.tooltip.order; /** Sort the 'params' array based on the 'sortOrder' parameter. */ switch (sortOrder) { /** Sort by series name in ascending order. */ case 'seriesAsc': params = params.sort((a, b) => a.seriesName.localeCompare(b.seriesName)); break; /** Sort by series name in descending order. */ case 'seriesDesc': params = params.sort((a, b) => b.seriesName.localeCompare(a.seriesName)); break; /** Sort by numerical value in ascending order. */ case 'valueAsc': params = params.sort((a, b) => parseFloat(a.value) - parseFloat(b.value)); break; /** Sort by numerical value in descending order. */ case 'valueDesc': params = params.sort((a, b) => parseFloat(b.value) - parseFloat(a.value)); break; /** Reverse the current order. */ case 'reverse': params.reverse(); break; default: break; } /** Iterate over each series in the tooltip parameters */ for (var i = 0; i < params.length; i++) { /** Retrieve the name and value of the current series */ var seriesName = params[i].seriesName; var value = params[i].value; /** Replace every specific apostrphe by simple one. */ seriesName = seriesName.replaceAll("’", "'"); /** Convert the numeric value to its string representation. */ var strValue = String(value); /** Retrieve the axis used as value */ var axis = option.yAxis.type === 'value' ? option.yAxis : option.xAxis; /** Initialize the number of decimal places */ var decimals = option.tooltip.decimals; /** Check if decimals configuration is set to default and the value contains decimal places */ if (!decimals && strValue.indexOf('.') > -1) { /** Calculate the number of decimal places */ decimals = strValue.substring(strValue.indexOf('.'), strValue.length - 1).length; } else { /** If there are no decimal places, format the value with 1 decimal place */ decimals = decimals ? decimals : 1; /** Convert the value to a fixed-point notation string with a specified number of decimal places. */ value = Number(value).toFixed(decimals); } /** Convert -0 value to 0 with the specified or calculated number of decimal places.*/ if (Number(value) == -0) { value = (Number(value) + 0).toFixed(decimals); } /** Extract the unit from within the axis label */ var unit = axis.axisLabel.unit ? axis.axisLabel.unit : ''; /** Format the value using the appropriate number of decimal places */ value = isNaN(value) ? 'N/A' : Number(value).toLocaleString(option.lang ? option.lang : 'en', { minimumFractionDigits: decimals }) + unit; /** Retrieve the color of the current series */ const color = params[i].color; /** * Add the series name and value to the tooltip content * Use a circle icon with the series color */ tooltipContent += '
' + '' + '' + '' + seriesName + '' + '' + '' + value + '' + '
'; } /** Close the tooltip content container */ tooltipContent += '
'; /** Return the formatted tooltip content */ return tooltipContent; }}/* * This content is licensed according to the W3C Software License at * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document * * File: sortable-table.js * * Desc: Adds sorting to a HTML data table that implements ARIA Authoring Practices */'use strict';class SortableTable { constructor(tableNode) { this.tableNode = tableNode; this.columnHeaders = tableNode.querySelectorAll('thead th.sortable'); this.sortColumns = []; for (var i = 0; i < this.columnHeaders.length; i++) { var ch = this.columnHeaders[i]; var buttonNode = ch.querySelector('button'); if (buttonNode) { this.sortColumns.push(i); // buttonNode.setAttribute('data-column-index', i); // buttonNode.addEventListener('click', this.handleClick.bind(this)); ch.setAttribute('data-column-index', i); ch.addEventListener('click', this.handleClick.bind(this)); } } this.optionCheckbox = document.querySelector( 'input[type="checkbox"][value="show-unsorted-icon"]' ); if (this.optionCheckbox) { this.optionCheckbox.addEventListener( 'change', this.handleOptionChange.bind(this) ); if (this.optionCheckbox.checked) { this.tableNode.classList.add('show-unsorted-icon'); } } } setColumnHeaderSort(columnIndex) { if (typeof columnIndex === 'string') { columnIndex = parseInt(columnIndex); } for (var i = 0; i < this.columnHeaders.length; i++) { var ch = this.columnHeaders[i]; var buttonNode = ch.querySelector('button'); if (i === columnIndex) { var value = ch.getAttribute('aria-sort'); if (value === 'ascending') { ch.setAttribute('aria-sort', 'descending'); this.sortColumn( columnIndex, 'descending', ch.classList.contains('num')); } else if (value === 'descending') { ch.removeAttribute('aria-sort'); this.sortColumn( columnIndex, 'initial', true ); } else { ch.setAttribute('aria-sort', 'ascending'); this.sortColumn( columnIndex, 'ascending', ch.classList.contains('num') ); } } else { if (ch.hasAttribute('aria-sort') && buttonNode) { ch.removeAttribute('aria-sort'); } } } } sortColumn(columnIndex, sortValue, isNumber) { function compareValues(a, b) { if (a.value === b.value) return 0; if (sortValue === 'descending') { return isNumber ? b.value - a.value : (a.value > b.value ? -1 : 1); } else { return isNumber ? a.value - b.value : (a.value < b.value ? -1 : 1); } } if (typeof isNumber !== 'boolean') { isNumber = false; } var tbodyNode = this.tableNode.querySelector('tbody'); var rowNodes = []; var dataCells = []; var rowNode = tbodyNode.firstElementChild; var index = 0; while (rowNode) { rowNodes.push(rowNode); var rowCells = rowNode.querySelectorAll('th, td'); var dataCell = rowCells[columnIndex]; var data = {}; data.index = index; if (sortValue !== 'initial') { data.value = dataCell.textContent.toLowerCase().trim(); } else { data.value = rowNode.getAttribute('initial-position').toLowerCase().trim(); } if (isNumber) { data.value = parseFloat(data.value); } dataCells.push(data); rowNode = rowNode.nextElementSibling; index += 1; } dataCells.sort(compareValues); // remove rows while (tbodyNode.firstChild) { tbodyNode.removeChild(tbodyNode.lastChild); } // add sorted rows for (var i = 0; i < dataCells.length; i += 1) { let pos = [dataCells[i].index]; if (sortValue === "initial") { rowNodes[pos].classList.remove("sorted"); } else { rowNodes[pos].classList.add("sorted"); } tbodyNode.appendChild(rowNodes[pos]); } } /* EVENT HANDLERS */ handleClick(event) { var tgt = event.currentTarget; this.setColumnHeaderSort(tgt.getAttribute('data-column-index')); } handleOptionChange(event) { var tgt = event.currentTarget; if (tgt.checked) { this.tableNode.classList.add('show-unsorted-icon'); } else { this.tableNode.classList.remove('show-unsorted-icon'); } }}$(document).ready(function() { load(); });;}());
Subscribe to receive the latest Eurostat Euro indicators releases