Business surveys - NACE Rev. 2 activity - Services - monthly data - ei_bsse_m_r2

Data - Eurostat

Info

Last observation: Monthly: 2026M06 (N = 360)

First observation: Monthly: 1988M01 (N = 12)

Last data update: 23 jul 2026, 22:51. Last compile: 25 jul 2026, 21:07

Structure

indic

English

Code
ei_bsse_m_r2 %>%
  
  group_by(indic, Indic) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
indic Indic Nobs
BS-SARM Evolution of demand over the past 3 months 20321
BS-SABC Business situation development over the past 3 months 20267
BS-SAEM Expectation of the demand over the next 3 months 20256
BS-SCI Services confidence indicator 20200
BS-SEEM Expectation of the employment over the next 3 months 20015
BS-PE3M Expectations of the prices over the next 3 months 17926

French

Code
load_data("eurostat/indic_fr.RData")
ei_bsse_m_r2 %>%
  
  group_by(indic, Indic) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
indic Indic Nobs
BS-SARM Evolution of demand over the past 3 months 20321
BS-SABC Business situation development over the past 3 months 20267
BS-SAEM Expectation of the demand over the next 3 months 20256
BS-SCI Services confidence indicator 20200
BS-SEEM Expectation of the employment over the next 3 months 20015
BS-PE3M Expectations of the prices over the next 3 months 17926

s_adj

Code
ei_bsse_m_r2 %>%
  
  group_by(s_adj, S_adj) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
s_adj S_adj Nobs
SA Seasonally adjusted data, not calendar adjusted data 59931
NSA Unadjusted data (i.e. neither seasonally adjusted nor calendar adjusted data) 59054

unit

Code
ei_bsse_m_r2 %>%
  
  group_by(unit, Unit) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
unit Unit Nobs
BAL Balance 118985

time

Code
ei_bsse_m_r2 %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional

Covid Crisis

Table

Code
ei_bsse_m_r2 %>%
  filter(indic == "BS-SARM",
         time %in% c("2019M09", "2020M03", "2020M04", "2020M09"),
         s_adj == "NSA") %>%
  select(geo, Geo, time, values) %>%

  spread(time, values) %>%
  arrange(`2020M04`) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

France, Germany, Italy, Europe

Code
ei_bsse_m_r2 %>%
  filter(indic == "BS-SARM",
         geo %in% c("FR", "DE", "IT", "EU27_2020"),
         s_adj == "NSA") %>%
  select(geo, Geo, time, values) %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[time == "1997M01"]) %>%
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo),
         Geo = ifelse(geo == "EU27_2020", "Europe", Geo)) %>%
  month_to_date %>%
  filter(date >= as.Date("2020-01-01"),
         date <= as.Date("2020-09-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot() + ylab("Construction Production") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = "1 month",
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.1, 0.2)) +
  scale_y_continuous(breaks = seq(-3000, 2000, 100))

France, Germany, Italy

BS-SARM - Evolution of demand over the past 3 months

Code
ei_bsse_m_r2 %>%
  filter(indic == "BS-SARM",
         geo %in% c("FR", "DE", "IT", "EU27_2020"),
         s_adj == "NSA") %>%
  select(geo, Geo, time, values) %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[time == "1997M01"]) %>%
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo),
         Geo = ifelse(geo == "EU27_2020", "Europe", Geo)) %>%
  month_to_date %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot() + ylab("Evolution of demand") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = "5 years",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.1, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(-3000, 2000, 100))

BS-SABC - Business situation development over the past 3 months

Code
ei_bsse_m_r2 %>%
  filter(indic == "BS-SABC",
         geo %in% c("FR", "DE", "IT", "EU27_2020"),
         s_adj == "SA") %>%
  select(geo, Geo, time, values) %>%
  group_by(geo) %>%
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo),
         Geo = ifelse(geo == "EU27_2020", "Europe", Geo)) %>%
  month_to_date %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot() + ylab("Business situation development") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = "5 years",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.1, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(-3000, 2000, 10))

BS-SAEM - Expectation of demand

Code
ei_bsse_m_r2 %>%
  filter(indic == "BS-SAEM",
         geo %in% c("FR", "DE", "IT", "EU27_2020"),
         s_adj == "SA") %>%
  select(geo, Geo, time, values) %>%
  group_by(geo) %>%
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo),
         Geo = ifelse(geo == "EU27_2020", "Europe", Geo)) %>%
  month_to_date %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot() + ylab("Expectation of demand") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = "5 years",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.1, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(-3000, 2000, 10))

BS-SEEM - Expectation of the employment

Code
ei_bsse_m_r2 %>%
  filter(indic == "BS-SEEM",
         geo %in% c("FR", "DE", "IT", "EU27_2020"),
         s_adj == "SA") %>%
  select(geo, Geo, time, values) %>%
  group_by(geo) %>%
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo),
         Geo = ifelse(geo == "EU27_2020", "Europe", Geo)) %>%
  month_to_date %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot() + ylab("Expectation of employment") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = "5 years",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.1, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(-3000, 2000, 10))

BS-PE3M - Expectations of the prices

Code
ei_bsse_m_r2 %>%
  filter(indic == "BS-PE3M",
         geo %in% c("FR", "DE", "IT", "EU27_2020"),
         s_adj == "SA") %>%
  select(geo, Geo, time, values) %>%
  group_by(geo) %>%
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo),
         Geo = ifelse(geo == "EU27_2020", "Europe", Geo)) %>%
  month_to_date %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot() + ylab("Expectations of the prices ") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = "5 years",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.1, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(-3000, 2000, 10))