Consumer Expectations Survey

Data - ECB

Info

source dataset Title .html .rData
ecb CES Consumer Expectations Survey 2026-06-03 2026-05-28

Data on inflation

source dataset Title .html .rData
ecb CES Consumer Expectations Survey 2026-06-03 2026-05-28
bis CPI Consumer Price Index 2026-06-04 2026-06-04
eurostat nama_10_co3_p3 NA NA NA
eurostat prc_hicp_cow HICP - country weights 2026-06-04 2026-04-26
eurostat prc_hicp_ctrb Contributions to euro area annual inflation (in percentage points) 2026-06-04 2026-04-26
eurostat prc_hicp_inw HICP - item weights 2026-05-30 2026-04-26
eurostat prc_hicp_manr HICP (2015 = 100) - monthly data (annual rate of change) 2026-06-04 2026-04-26
eurostat prc_hicp_midx HICP (2015 = 100) - monthly data (index) 2026-06-04 2026-04-26
eurostat prc_hicp_mmor HICP (2015 = 100) - monthly data (monthly rate of change) 2026-06-04 2026-04-26
eurostat prc_ppp_ind Purchasing power parities (PPPs), price level indices and real expenditures for ESA 2010 aggregates 2026-06-04 2026-04-26
eurostat sts_inpp_m Producer prices in industry, total - monthly data 2026-06-04 2026-04-26
eurostat sts_inppd_m Producer prices in industry, domestic market - monthly data 2026-06-04 2026-04-26
eurostat sts_inppnd_m Producer prices in industry, non domestic market - monthly data 2026-06-04 2026-05-28
fred cpi Consumer Price Index 2026-06-04 2026-05-29
fred inflation Inflation 2026-06-04 2026-05-29
imf CPI Consumer Price Index (CPI) 2026 February - CPI_2026_FEB_VINTAGE 2026-06-04 2026-04-13
oecd MEI_PRICES_PPI Producer Prices - MEI_PRICES_PPI 2026-06-04 2024-04-15
oecd PPP2017 2017 PPP Benchmark results 2024-04-16 2023-07-25
oecd PRICES_CPI Consumer price indices (CPIs) 2024-04-16 2024-04-15
wdi FP.CPI.TOTL.ZG NA NA NA
wdi NY.GDP.DEFL.KD.ZG NA NA NA

Données sur l’inflation en France

source dataset Title .html .rData
insee ILC-ILAT-ICC Indices pour la révision d’un bail commercial ou professionnel 2026-06-04 2026-06-03
insee INDICES_LOYERS Indices des loyers d'habitation (ILH) 2026-06-04 2026-06-03
insee IPC-1970-1980 Indice des prix à la consommation - Base 1970, 1980 2026-06-04 2026-06-03
insee IPC-1990 Indices des prix à la consommation - Base 1990 2026-06-04 2026-06-03
insee IPC-2015 Indice des prix à la consommation - Base 2015 2026-06-04 2026-06-04
insee IPC-PM-2015 Prix moyens de vente de détail 2026-02-24 2026-06-03
insee IPCH-2015 Indices des prix à la consommation harmonisés 2026-06-04 2026-06-03
insee IPCH-IPC-2015-ensemble Indices des prix à la consommation harmonisés 2026-06-04 2026-06-04
insee IPGD-2015 Indice des prix dans la grande distribution 2026-06-04 2025-12-20
insee IPLA-IPLNA-2015 Indices des prix des logements neufs et Indices Notaires-Insee des prix des logements anciens 2026-06-04 2026-06-03
insee IPPI-2015 Indices de prix de production et d'importation dans l'industrie 2026-06-04 2026-06-04
insee IRL Indice pour la révision d’un loyer d’habitation 2026-01-08 2026-06-04
insee SERIES_LOYERS Variation des loyers 2026-06-04 2026-06-04
insee T_CONSO_EFF_FONCTION Consommation effective des ménages par fonction 2026-06-04 2025-12-22
insee bdf2017 Budget de famille 2017 2026-02-03 2023-11-21
insee echantillon-agglomerations-IPC-2024 Échantillon d’agglomérations enquêtées de l’IPC en 2024 2026-01-27 2026-01-27
insee echantillon-agglomerations-IPC-2025 Échantillon d’agglomérations enquêtées de l’IPC en 2025 2026-01-27 2026-01-27
insee liste-varietes-IPC-2024 Liste des variétés pour la mesure de l'IPC en 2024 2026-01-27 2025-04-02
insee liste-varietes-IPC-2025 Liste des variétés pour la mesure de l'IPC en 2025 2026-01-27 2026-01-27
insee ponderations-elementaires-IPC-2024 Pondérations élémentaires 2024 intervenant dans le calcul de l’IPC 2026-01-27 2025-04-02
insee ponderations-elementaires-IPC-2025 Pondérations élémentaires 2025 intervenant dans le calcul de l’IPC 2026-01-27 2026-01-27
insee table_conso_moyenne_par_categorie_menages Montants de consommation selon différentes catégories de ménages 2026-06-04 2026-01-27
insee table_poste_au_sein_sous_classe_ecoicopv2_france_entiere_ Ventilation de chaque sous-classe (niveau 4 de la COICOP v2) en postes et leurs pondérations 2026-06-04 2026-01-27
insee tranches_unitesurbaines Poids de chaque tranche d’unités urbaines dans la consommation 2026-06-04 2026-01-27

LAST_COMPILE

LAST_COMPILE
2026-06-05

Last

Code
CES %>%
  wave_to_date %>%
  group_by(date) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(date)) %>%
  head(1) %>%
  print_table_conditional()
date Nobs
2026-03-01 180

Var_label

Code
CES %>%
  group_by(Var, Var_label) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
Var Var_label Nobs
c1010 Inflation perceptions over the previous 12 months (qualitative) 960
c1020 Inflation perceptions over the previous 12 months (% change) 960
c1110 Inflation expectations over the next 12 months (qualitative) 960
c1120 Inflation expectations over the next 12 months (% change) 960
c1150 Inflation expectations/uncertainty 12 months ahead (probabilistic bins) 960
c1210 Inflation expectations 3 years ahead (qualitative) 960
c1220 Inflation expectations 3 years ahead (% change) 960
e2010 Inflation expectations 5 years ahead (qualitative) 880
e2020 Inflation expectations 5 years ahead (% change) 880

Breakdown_label

All

Code
CES %>%
  group_by(Breakdown, Breakdown_label) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
Breakdown Breakdown_label Nobs
Age 18-34 years 424
Age 35-54 years 424
Age 55-70 years 424
Country AT 424
Country BE 424
Country DE 424
Country EL 424
Country ES 424
Country FI 424
Country FR 424
Country IE 424
Country IT 424
Country NL 424
Country PT 424
Income 1 424
Income 2 424
Income 3 424
Income 4 424
Income 5 424
Wave NA 424

Country

Code
CES %>%
  filter(Breakdown == "Country") %>%
  rename(geo = Breakdown_label) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo, Geo) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
geo Geo Nobs
AT Austria 424
BE Belgium 424
DE Germany 424
EL Greece 424
ES Spain 424
FI Finland 424
FR France 424
IE Ireland 424
IT Italy 424
NL Netherlands 424
PT Portugal 424

wave

Code
CES %>%
  wave_to_date %>%
  group_by(date) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(date)) %>%
  print_table_conditional()

All Europe (Wave)

% change

Mean

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Wave",
         Var %in% c("c1020", "c1120", "c1220")) %>%
  transmute(date, Var_label, OBS_VALUE = Mean/100) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Var_label)) + 
  theme_minimal() + xlab("") + ylab("Mean (%)") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "2 months"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 20, 1),
                     labels = percent_format(a = 1)) + 
  theme(legend.position = c(0.33, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())

Median

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Wave",
         Var %in% c("c1020", "c1120", "c1220")) %>%
  transmute(date, Var_label, OBS_VALUE = Median/100) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Var_label)) + 
  theme_minimal() + xlab("") + ylab("Median (%)") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "2 months"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 20, 1),
                     labels = percent_format(a = 1)) + 
  theme(legend.position = c(0.33, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())

qualitative

Net percentage

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Wave",
         Var %in% c("c1010", "c1110", "c1210")) %>%
  transmute(date, Var_label, OBS_VALUE = Net_perc/100) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Var_label)) + 
  theme_minimal() + xlab("") + ylab("Net_perc (%)") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "2 months"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 100, 5),
                     labels = percent_format(a = 1)) + 
  theme(legend.position = c(0.33, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())

Up

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Wave",
         Var %in% c("c1010", "c1110", "c1210")) %>%
  transmute(date, Var_label, OBS_VALUE = Net_perc/100) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Var_label)) + 
  theme_minimal() + xlab("") + ylab("Up (%)") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "2 months"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 100, 5),
                     labels = percent_format(a = 1)) + 
  theme(legend.position = c(0.33, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())

Down

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Wave",
         Var %in% c("c1010", "c1110", "c1210")) %>%
  transmute(date, Var_label, OBS_VALUE = Down/100) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Var_label)) + 
  theme_minimal() + xlab("") + ylab("Up (%)") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "2 months"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 100, 1),
                     labels = percent_format(a = 1)) + 
  theme(legend.position = c(0.33, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())

France, Germany, Italy, Spain

1-year

Mean

All

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Country",
         Var == "c1020") %>%
  rename(geo = Breakdown_label) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(OBS_VALUE = Mean/100) %>%
  rename(Ref_area = Geo) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  theme_minimal() + xlab("") + ylab("Inflation expectations over the next 12 months\n% change, Mean") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "2 months"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 20, 1),
                     labels = percent_format(a = 1)) + 
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.75, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())

October 2021-

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Country",
         Var == "c1020") %>%
  rename(geo = Breakdown_label) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(OBS_VALUE = Mean/100) %>%
  filter(date >= as.Date("2021-10-01")) %>%
  rename(Ref_area = Geo) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  theme_minimal() + xlab("") + ylab("Inflation expectations over the next 12 months\n% change, Mean") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "1 month"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 20, 1),
                     labels = percent_format(a = 1)) + 
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.75, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())

Median

All

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Country",
         Var == "c1020") %>%
  rename(geo = Breakdown_label) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(OBS_VALUE = Median/100) %>%
  rename(Ref_area = Geo) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  theme_minimal() + xlab("") + ylab("Inflation expectations over the next 12 months\n% change, Median") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "2 months"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 20, 1),
                     labels = percent_format(a = 1)) + 
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.75, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())

October 2021-

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Country",
         Var == "c1020") %>%
  rename(geo = Breakdown_label) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(OBS_VALUE = Median/100) %>%
  filter(date >= as.Date("2021-10-01")) %>%
  rename(Ref_area = Geo) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  theme_minimal() + xlab("") + ylab("Inflation expectations over the next 12 months\n% change, Median") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "1 month"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 20, 1),
                     labels = percent_format(a = 1)) + 
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.75, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())

3-year

Mean

All

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Country",
         Var == "c1220") %>%
  rename(geo = Breakdown_label) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(OBS_VALUE = Mean/100) %>%
  rename(Ref_area = Geo) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  theme_minimal() + xlab("") + ylab("Inflation expectations 3 years ahead\n% change, Mean") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "2 months"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 20, 1),
                     labels = percent_format(a = 1)) + 
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.75, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())

October 2021-

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Country",
         Var == "c1220",
         date >= as.Date("2021-10-01")) %>%
  rename(geo = Breakdown_label) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(OBS_VALUE = Mean/100) %>%
  rename(Ref_area = Geo) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  theme_minimal() + xlab("") + ylab("Inflation expectations 3 years ahead\n% change, Mean") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "1 month"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 20, 1),
                     labels = percent_format(a = 1)) + 
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.75, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())

Median

All

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Country",
         Var == "c1220") %>%
  rename(geo = Breakdown_label) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(OBS_VALUE = Median/100) %>%
  rename(Ref_area = Geo) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  theme_minimal() + xlab("") + ylab("Inflation expectations 3 years ahead\n% change, Median") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "2 months"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 20, .2),
                     labels = percent_format(a = .1)) + 
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.75, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())

October 2021-

Code
CES %>%
  wave_to_date %>%
  filter(Breakdown == "Country",
         Var == "c1220",
         date >= as.Date("2021-10-01")) %>%
  rename(geo = Breakdown_label) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(OBS_VALUE = Median/100) %>%
  rename(Ref_area = Geo) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  theme_minimal() + xlab("") + ylab("Inflation expectations 3 years ahead\n% change, Median") +
  scale_x_date(breaks = seq.Date(as.Date("2019-12-01"), Sys.Date(), "1 month"),
               labels = date_format("%b %y")) +
  scale_y_continuous(breaks = 0.01*seq(-20, 20, .2),
                     labels = percent_format(a = .1)) + 
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.75, 0.90),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
        legend.title = element_blank())