Construction cost (or producer prices), new residential buildings - monthly data - sts_copi_m

Data - Eurostat

Info

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

First observation: Monthly: 1980M01 (N = 4)

Last data update: 23 jul 2026, 23:06. Last compile: 24 jul 2026, 03:50

Structure

Construction Cost Index, New Residential Buildings

Spain, Austria, Portugal, Netherlands

Code
sts_copi_m %>%
  filter(geo %in% c("ES", "AT", "PT", "NL"),
         indic_bt == "COST",
         unit == "I21") %>%
  month_to_date %>%

  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(color = ifelse(geo == "NL", color2, color)) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal() + scale_color_identity() + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1980, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Construction cost, new residential buildings (2021 = 100)")

Spain: Costs vs. Producer Prices

Year-on-year Growth

Code
sts_copi_m %>%
  filter(geo == "ES",
         unit == "PCH_SM") %>%
  month_to_date %>%

  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Indic_bt)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1980, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Year-on-year change") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

Latest Month by Country

Code
latest_m <- sts_copi_m %>%
  filter(geo == "ES",
         indic_bt == "COST",
         unit == "PCH_SM",
         !is.na(values)) %>%
  summarise(m = max(time)) %>%
  pull(m)

sts_copi_m %>%
  filter(unit == "PCH_SM",
         time == latest_m) %>%
  mutate(values = values/100) %>%
  select(Geo, Indic_bt, values) %>%
  spread(Indic_bt, values) %>%
  arrange(-Costs) %>%
  print_table_conditional()
Geo Costs Producer prices
Türkiye 0.284 0.284
Portugal 0.070 0.070
Austria 0.057 0.057
Netherlands 0.051 0.051
Lithuania 0.044 0.044
Norway 0.044 0.044
Spain 0.027 0.027
Finland 0.020 0.020
Ireland NA 0.032
Italy NA 0.015