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_conditionalCovid 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))