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

Data - Eurostat

Info

Last observation: 2026M07 (N = 12)

First observation: 1980M01 (N = 4)

Last data update: 15 aoû 2026, 23:13. Last compile: 18 aoû 2026, 04:03

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_flags +
  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
Portugal 0.072 0.072
Austria 0.054 0.054
Netherlands 0.050 0.050
Norway 0.041 0.041
Lithuania 0.039 0.039
Spain 0.028 0.028
Finland 0.027 0.027
Ireland NA 0.032
Italy NA 0.018