Prix de l’immobilier

Data - BDF

Info

source dataset Title .html .rData
bdf RPP Prix de l'immobilier 2026-01-30 2026-01-30

Données sur l’immobilier

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

Data on housing

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

LAST_COMPILE

LAST_COMPILE
2026-01-31

Last

date Nobs
2025-09-30 7

variable

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  group_by(variable, Variable) %>%
  summarise(Nobs = n()) %>%
  {if (is_html_output()) print_table(.) else .}
variable Variable Nobs
RPP.Q.FR.N.ED.00.1.00 Indices des prix des logements anciens, Ensemble des logements, France métropolitaine 119
RPP.Q.FR.N.EF.CC.1.00 Indices des prix des logements anciens, Appartements, Paris 135
RPP.Q.FR.N.EF.CS.1.00 Indices des prix des logements anciens, Appartements, Ile de France Petite Couronne 135
RPP.Q.FR.N.NF.00.1.00 Prix au mètre carré des appartements neufs, France entière 123
RPP.Q.FR.N.NF.CR.1.00 Prix au mètre carré des appartements neufs, Ile de France 83
RPP.Q.FR.N.NH.00.1.00 Prix de vente moyen d'une maison neuve, France entière 123
RPP.Q.FR.N.NH.CR.1.00 Prix de vente moyen d'une maison neuve, Ile de France 83

RPP_DWELLING

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  left_join(RPP_DWELLING, by = "RPP_DWELLING") %>%
  group_by(RPP_DWELLING, Rpp_dwelling) %>%
  summarise(Nobs = n()) %>%
  {if (is_html_output()) print_table(.) else .}
RPP_DWELLING Rpp_dwelling Nobs
ED Residential property prices, Existing dwellings 119
EF Residential property prices, Existing flats 270
NF Residential property prices, New flats 206
NH Residential property prices, New houses 206

RPP_GEO_COV

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  left_join(RPP_GEO_COV, by = "RPP_GEO_COV") %>%
  group_by(RPP_GEO_COV, Rpp_geo_cov) %>%
  summarise(Nobs = n()) %>%
  {if (is_html_output()) print_table(.) else .}
RPP_GEO_COV Rpp_geo_cov Nobs
00 Whole country 365
CC Capital city 135
CR Capital Region 166
CS Capital city and suburbs 135

RPP_SOURCE

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  left_join(RPP_SOURCE, by = "RPP_SOURCE") %>%
  group_by(RPP_SOURCE, Rpp_source) %>%
  summarise(Nobs = n()) %>%
  {if (is_html_output()) print_table(.) else .}
RPP_SOURCE Rpp_source Nobs
1 NSI 801

Prix au mètre carré des appartements neufs

France entière, Ile de France

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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 %>%
  left_join(RPP_var, by = "variable") %>%
  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))