Euro indicators 3 October 2024 Next release: 10 January 2025
Second quarter of 2024 compared with second quarter of 2023
Skip to the content
Up by 2.9% in the EU
Overview
In the second quarter of 2024, house prices, as measured by the House Price Index, increased by 1.3% in the euro area and by 2.9% in the EU compared with the same quarter of the previous year. In the first quarter of 2024, house prices fell by 0.3% in the euro area and rose by 1.5% in the EU. These figures come from Eurostat, the statistical office of the European Union.
Compared with the first quarter of 2024, house prices increased by 1.8% in the euro area and by 1.9% in the EU in the second quarter of 2024.
House price developments in the EU Member States
Among the Member States for which data are available, six showed an annual decrease in house prices in the second quarter of 2024, and twenty showed an annual increase. The largest falls were registered in Luxembourg (-8.3%), Finland (-4.8%) and France (-4.6%), while the highest increases were recorded in Poland (+17.7%), Bulgaria (+15.1%), Lithuania (+10.4%) and Croatia (+10.0%).
Compared with the previous quarter, prices decreased in two Member States, remained stable in one (Hungary) and increased in twenty-three Member States. The falls were registered in France and Belgium (both -0.2%), while the highest increases were recorded in Croatia (+4.3%), Portugal (+3.9%) and Spain (+3.6%).
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 | |||||
Q3 | Q4 | Q1 | Q2 | Q3 | Q4 | Q1 | Q2 | |
Euro area | 0.2 | -0.8 | 0.0 | 1.8 | -2.2 | -1.2 | -0.3 | 1.3 |
EU | 0.7 | -0.2 | 0.6 | 1.9 | -1.2 | 0.2 | 1.5 | 2.9 |
Belgium | 1.3 | 1.4 | 0.8 | -0.2 | 1.0 | 2.8 | 3.2 | 3.4 |
Bulgaria | 2.7 | 1.2 | 7.1 | 3.4 | 9.2 | 10.1 | 16.0 | 15.1 |
Czechia | 0.3 | 0.3 | 0.9 | 2.6 | -3.5 | -1.0 | 1.2 | 4.2 |
Denmark | 1.8 | 1.6 | -2.5 | 3.0 | -4.8 | -0.9 | 1.3 | 3.9 |
Germany | -1.3 | -2.0 | -0.6 | 1.3 | -10.2 | -7.2 | -5.1 | -2.6 |
Estonia | -0.3 | 2.1 | 2.0 | 2.8 | 3.8 | 5.8 | 7.8 | 6.7 |
Ireland | 1.5 | 2.9 | 2.3 | 1.4 | 1.4 | 3.1 | 6.3 | 8.4 |
Greece | : | : | : | : | : | : | : | : |
Spain | 2.5 | -1.0 | 2.7 | 3.6 | 4.5 | 4.3 | 6.4 | 7.9 |
France | 0.4 | -2.7 | -2.2 | -0.2 | -1.6 | -3.6 | -4.8 | -4.6 |
Croatia | 0.3 | 3.4 | 1.7 | 4.3 | 10.9 | 9.5 | 9.1 | 10.0 |
Italy | -0.1 | 0.0 | -0.2 | 3.2 | 1.7 | 1.8 | 1.6 | 2.9 |
Cyprus | 0.5 | -0.6 | 1.4 | 1.2 | 0.6 | 1.6 | 1.1 | 2.5 |
Latvia | -1.1 | -2.7 | 2.7 | 2.3 | 3.0 | 0.8 | 3.6 | 1.1 |
Lithuania | 2.4 | 1.5 | 3.3 | 2.8 | 8.7 | 8.3 | 9.9 | 10.4 |
Luxembourg | -6.6 | -2.2 | -0.7 | 1.0 | -13.9 | -14.5 | -11.2 | -8.3 |
Hungary | 0.4 | 1.7 | 7.5 | 0.0 | 3.7 | 7.3 | 10.9 | 9.8 |
Malta | 1.5 | 1.6 | 1.9 | 1.8 | 5.7 | 6.7 | 6.7 | 7.0 |
Netherlands | 1.1 | 1.7 | 2.0 | 2.6 | -3.7 | 0.1 | 3.7 | 7.7 |
Austria | -0.2 | -1.8 | -1.2 | 2.5 | -5.4 | -3.0 | -2.9 | -0.7 |
Poland | 4.5 | 4.8 | 4.3 | 2.9 | 9.3 | 13.0 | 18.0 | 17.7 |
Portugal | 1.8 | 1.3 | 0.6 | 3.9 | 7.6 | 7.8 | 7.0 | 7.8 |
Romania | 3.4 | 1.5 | 1.3 | 0.5 | 4.8 | 3.7 | 5.5 | 6.8 |
Slovenia | 0.5 | 2.6 | 1.2 | 2.2 | 5.6 | 6.9 | 6.3 | 6.7 |
Slovakia | 0.8 | 1.9 | -1.7 | 3.0 | -4.1 | -1.4 | -3.0 | 4.0 |
Finland | -2.9 | -1.0 | -1.3 | 0.3 | -7.2 | -4.8 | -4.3 | -4.8 |
Sweden | -0.4 | -2.3 | 0.5 | 1.4 | -4.2 | -2.9 | -1.6 | -0.8 |
Iceland | -0.9 | 2.5 | 1.6 | 2.9 | 2.7 | 3.8 | 5.7 | 6.1 |
Norway | -2.2 | -1.1 | 2.8 | 3.5 | -0.5 | 2.1 | 1.8 | 3.0 |
Switzerland | 0.2 | 1.1 | -1.0 | 1.1 | 1.3 | 1.3 | 1.5 | 1.4 |
: 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 5 July 2024, revisions for the euro area and the EU are highlighted in bold in the table below:
Revisions | ||||||
---|---|---|---|---|---|---|
Q3 2023 | Q4 2023 | Q1 2024 | ||||
Quarterly changes | Previous | Current | Previous | Current | Previous | Current |
Euro area | 0.2 | 0.2 | -0.8 | -0.8 | -0.1 | 0.0 |
EU | 0.7 | 0.7 | -0.3 | -0.2 | 0.4 | 0.6 |
Annual changes | ||||||
---|---|---|---|---|---|---|
Euro area | -2.2 | -2.2 | -1.2 | -1.2 | -0.4 | -0.3 |
EU | -1.1 | -1.2 | 0.2 | 0.2 | 1.3 | 1.5 |
The next release with data (third quarter of 2024) is scheduled for 10 January 2025.
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