Consumer surveys - Consumers - monthly data - ei_bsco_m

Data - Eurostat

Info

Last observation: 2026M07 (N = 792)

First observation: 1980M01 (N = 20)

Last data update: 14 aoû 2026, 19:23. Last compile: 18 aoû 2026, 00:29

Structure

indic

French

Code
indic <- read_parquet("indic_fr.parquet")
ei_bsco_m |>
  
  group_by(indic, Indic) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
indic Indic Nobs
BS-FS-LY Financial situation over the last 12 months 26405
BS-FS-NY Financial situation over the next 12 months 26405
BS-GES-LY General economic situation over the last 12 months 26405
BS-GES-NY General economic situation over the next 12 months 26405
BS-UE-NY Unemployment expectations over the next 12 months 26360
BS-MP-PR The current economic situation is adequate to make major purchases 26320
BS-PT-LY Price trends over the last 12 months 26158
BS-PT-NY Price trends over the next 12 months 26158
BS-SFSH Statement on financial situation of household 26156
BS-SV-NY Savings over the next 12 months 26148
BS-CSMCI Consumer confidence indicator 26043
BS-MP-NY Major purchases over the next 12 months 26043

English

Code
indic <- read_parquet("indic.parquet")
ei_bsco_m |>
  
  group_by(indic, Indic) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
indic Indic Nobs
BS-FS-LY Financial situation over the last 12 months 26405
BS-FS-NY Financial situation over the next 12 months 26405
BS-GES-LY General economic situation over the last 12 months 26405
BS-GES-NY General economic situation over the next 12 months 26405
BS-UE-NY Unemployment expectations over the next 12 months 26360
BS-MP-PR The current economic situation is adequate to make major purchases 26320
BS-PT-LY Price trends over the last 12 months 26158
BS-PT-NY Price trends over the next 12 months 26158
BS-SFSH Statement on financial situation of household 26156
BS-SV-NY Savings over the next 12 months 26148
BS-CSMCI Consumer confidence indicator 26043
BS-MP-NY Major purchases over the next 12 months 26043

France, Germany, Italy

BS-CSMCI - Consumer confidence indicator

All

Code
ei_bsco_m |>
  filter(indic == "BS-CSMCI",
         geo %in% c("FR", "DE", "IT"),
         s_adj == "NSA") |>
  select(geo, Geo, time, values) |>

  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  month_to_date() |>
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + ylab("Consumer confidence indicator") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags + theme(legend.position = "none") +
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-2000, 2000, 5))

1995-

Code
ei_bsco_m |>
  filter(indic == "BS-CSMCI",
         geo %in% c("FR", "DE", "IT"),
         s_adj == "NSA") |>
  select(geo, Geo, time, values) |>
  group_by(geo) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  month_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + ylab("Consumer confidence indicator") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags + theme(legend.position = "none") +
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-2000, 2000, 5))

2000-

Code
ei_bsco_m |>
  filter(indic == "BS-CSMCI",
         geo %in% c("FR", "DE", "IT"),
         s_adj == "NSA") |>
  select(geo, Geo, time, values) |>
  group_by(geo) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  month_to_date() |>
  filter(date >= as.Date("2000-01-01")) |>
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + ylab("Consumer confidence indicator") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags + theme(legend.position = "none") +
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-2000, 2000, 5))