Prix de l’immobilier

Données - BDF

Info

Structure

source dataset Title .html .rData
bdf RPP Prix de l'immobilier 2026-07-22 2026-07-22

Données sur l’immobilier

source dataset Title .html .rData
acpr as151 Enquête annuelle du SGACPR sur le financement de l'habitat 2022 2026-07-22 2024-04-05
acpr as160 Enquête annuelle du SGACPR sur le financement de l'habitat 2023 2026-07-22 2024-09-26
acpr as174 Enquête annuelle du SGACPR sur le financement de l'habitat 2024 2026-07-22 2025-09-29
bdf BSI1 Agrégats monétaires - France 2026-07-22 2026-07-22
bdf CPP Prix immobilier commercial 2026-07-22 2024-07-01
bdf FM Marché financier, taux 2026-07-22 2026-07-22
bdf MIR Taux d'intérêt - Zone euro 2026-07-22 2026-07-22
bdf MIR1 Taux d'intérêt - France 2026-07-23 2026-07-23
bdf RPP Prix de l'immobilier 2026-07-22 2026-07-22
bdf immobilier Immobilier en France 2026-07-22 2026-07-21
cgedd nombre-vente-maison-appartement-ancien Nombre de ventes de logements anciens cumulé sur 12 mois 2026-07-22 2026-07-22
insee CONSTRUCTION-LOGEMENTS Construction de logements 2026-07-23 2026-07-23
insee ENQ-CONJ-ART-BAT Conjoncture dans l'artisanat du bâtiment 2026-07-23 2026-07-23
insee ENQ-CONJ-IND-BAT Conjoncture dans l'industrie du bâtiment - ENQ-CONJ-IND-BAT 2026-07-23 2026-07-23
insee ENQ-CONJ-PROMO-IMMO Conjoncture dans la promotion immobilière 2026-07-23 2026-07-23
insee ENQ-CONJ-TP Conjoncture dans les travaux publics 2026-07-23 2026-07-23
insee ILC-ILAT-ICC Indices pour la révision d’un bail commercial ou professionnel 2026-07-23 2026-07-23
insee INDICES_LOYERS Indices des loyers d'habitation (ILH) 2026-07-23 2026-07-23
insee IPLA-IPLNA-2015 Indices des prix des logements neufs et Indices Notaires-Insee des prix des logements anciens 2026-07-23 2026-07-23
insee IRL Indice pour la révision d’un loyer d’habitation 2026-07-23 2026-07-23
insee PARC-LOGEMENTS Estimations annuelles du parc de logements (EAPL) 2026-07-23 2026-07-23
insee SERIES_LOYERS Variation des loyers 2026-07-23 2026-07-23
insee t_dpe_val Dépenses de consommation des ménages pré-engagées 2026-07-23 2026-02-27
notaires arrdt Prix au m^2 par arrondissement - arrdt 2026-07-22 2026-07-22
notaires dep Prix au m^2 par département 2026-07-22 2026-07-22
olap loyers Loyers 2024-06-20 2023-07-20

Data on housing

source dataset Title .html .rData
bdf RPP Prix de l'immobilier 2026-07-22 2026-07-22
bis LONG_PP Residential property prices - detailed series 2026-07-22 2024-05-10
bis SELECTED_PP Property prices, selected series 2026-07-22 2026-07-22
ecb RPP Residential Property Price Index Statistics 2026-07-23 2026-07-23
eurostat ei_hppi_q House price index (2015 = 100) - quarterly data 2026-07-23 2026-07-23
eurostat hbs_str_t223 Mean consumption expenditure by income quintile 2025-10-11 2026-07-23
eurostat prc_hicp_midx HICP (2015 = 100) - monthly data (index) 2026-07-23 2026-07-23
eurostat prc_hpi_q House price index (2015 = 100) - quarterly data 2026-07-23 2026-07-23
fred housing House Prices 2026-07-22 2026-07-22
insee IPLA-IPLNA-2015 Indices des prix des logements neufs et Indices Notaires-Insee des prix des logements anciens 2026-07-23 2026-07-23
oecd SNA_TABLE5 Final consumption expenditure of households 2026-07-23 2023-10-19
oecd housing NA NA NA

LAST_COMPILE

LAST_COMPILE
2026-07-24

Last

date Nobs
2025-12-31 7

Prix au mètre carré des appartements neufs

France entière, Ile de France

Code
RPP %>%
  
  filter(RPP_DWELLING == "NF") %>%
  mutate(Variable = gsub("Prix au mètre carré des appartements neufs, ", "", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Prix au mètre carré des appartements neufs") +
  scale_y_log10(breaks = seq(0, 7000, 500),
                labels = dollar_format(suffix = " €/m2", prefix = "", accuracy = 1))

Indices de prix des logements anciens

100 = 2009

Log

Code
RPP %>%
  
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  mutate(value = 100*value/value[date == as.Date("2007-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_log10(breaks = seq(0, 7000, 10))

Lineaire

Code
RPP %>%
  
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_continuous(breaks = seq(0, 7000, 10))

100 = 2015

Log

Code
RPP %>%
  
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_log10(breaks = seq(0, 7000, 10))

Lineaire

Code
RPP %>%
  
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_continuous(breaks = seq(0, 7000, 10))

100 = 2001

Log

Code
RPP %>%
  
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  group_by(Variable) %>%
  filter(date >= as.Date("2000-12-31")) %>%
  mutate(value = 100*value/value[date == as.Date("2000-12-31")]) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_log10(breaks = seq(0, 7000, 10))

Lineaire

Code
RPP %>%
  
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  group_by(Variable) %>%
  filter(date >= as.Date("2000-12-31")) %>%
  mutate(value = 100*value/value[date == as.Date("2000-12-31")]) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_continuous(breaks = seq(0, 7000, 10))

100 = 1998

Lineaire

Code
plot_lineaire <- RPP %>%
  
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  filter(date >= as.Date("1997-12-31")) %>%
  mutate(value = 100*value/value[date == as.Date("1997-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_continuous(breaks = seq(0, 7000, 50))

plot_lineaire

Log

Code
plot_log <- plot_lineaire + 
  ylab("") + scale_y_log10(breaks = seq(0, 7000, 50))

plot_log

Bind

Code
ggpubr::ggarrange(plot_lineaire + ggtitle("Echelle linéaire"), plot_log + ggtitle("Echelle log"), common.legend = T)

100 = 1999

Lineaire

Code
plot_lineaire <- RPP %>%
  
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  filter(date >= as.Date("1998-12-31")) %>%
  mutate(value = 100*value/value[date == as.Date("1998-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2030, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_continuous(breaks = seq(0, 7000, 50))

plot_lineaire

Log

Code
plot_log <- plot_lineaire + 
  ylab("") + scale_y_log10(breaks = seq(0, 7000, 50))

plot_log

Bind

Code
ggpubr::ggarrange(plot_lineaire + ggtitle("Echelle linéaire"), plot_log + ggtitle("Echelle log"), common.legend = T)

100 = 2000

Paris, IDF, France

Code
RPP %>%
  
  filter(RPP_DWELLING %in% c("ED", "EF"),
         date >= as.Date("1999-12-31")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  mutate(value = 100*value/value[date == as.Date("1999-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_log10(breaks = seq(0, 7000, 50))

Paris, France

Lineaire

Code
plot_lineaire <- RPP %>%
  
  filter(RPP_DWELLING %in% c("ED", "EF"),
         date >= as.Date("1998-12-31"),
         RPP_GEO_COV %in% c("CC", "00")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  mutate(value = 100*value/value[date == as.Date("1998-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal() + xlab("") + ylab("Indice des prix des logements anciens") +
  scale_x_date(breaks = seq(1999, 2030, 5) %>% paste0(., "-01-01") %>% as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(0, 7000, 50))

plot_lineaire

Log

Code
plot_log <- plot_lineaire +
  scale_y_log10(breaks = seq(0, 7000, 50)) + ylab("")

plot_log

Bind

Code
ggpubr::ggarrange(plot_lineaire + ggtitle("Echelle linéaire"),
                  plot_log + ggtitle("Echelle log"), common.legend = T)

100 = 2007

Paris, IDF, France

Code
RPP %>%
  
  filter(RPP_DWELLING %in% c("ED", "EF"),
         date >= as.Date("2007-12-31")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  mutate(value = 100*value/value[date == as.Date("2007-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens (2008 = 100") +
  scale_y_log10(breaks = seq(0, 7000, 10))

Paris, France

Code
RPP %>%
  
  filter(RPP_DWELLING %in% c("ED", "EF"),
         date >= as.Date("2007-12-31"),
         RPP_GEO_COV %in% c("CC", "00")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  mutate(value = 100*value/value[date == as.Date("2007-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens (2008 = 100") +
  scale_y_log10(breaks = seq(0, 7000, 10))

Prix de vente moyen d’une maison neuve

Code
RPP %>%
  
  filter(RPP_DWELLING == "NH") %>%
  mutate(Variable = gsub("Prix de vente moyen d'une maison neuve, ","", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Prix de vente moyen d'une maison neuve") +
  scale_y_log10(breaks = seq(0, 7000, 20))