OECD’s API - api

Data - OECD

Info

List of APIs

source dataset Title Updated
bdf api Banque de France's API - api 2026-09-09
bea api Bureau of Economic Analysis' API - api 2026-09-11
bis api Bank of International Settlements' API - api 2026-09-11
bls api Bureau of Labor Statistics' API - api 2026-09-11
dbnomics api DBnomics' API - api 2026-09-11
ecb api European Central Bank's API - api 2026-09-09
eurostat api Eurostat's API - api 2026-09-11
imf api International Monetary Fund's API - api 2026-09-11
insee api Institut National de la Statistique et des Etudes Economiques' API - api 2026-09-09
oecd api OECD's API - api 2026-08-02
wdi api World Development Indicators' API - api 2026-09-11

LAST_COMPILE

LAST_COMPILE
2026-09-12

Info

GDP Per capita, US vs. EU

Data

Code
QNA_EXPENDITURE_CAPITA <- "https://sdmx.oecd.org/public/rest/data/OECD.SDD.NAD,DSD_NAMAIN1@DF_QNA_EXPENDITURE_CAPITA/Q..USA+EA........LR.." |>
  readSDMX() |>
  as_tibble()

Metadata

Download

Code
QNA_EXPENDITURE_CAPITA_var <- "https://sdmx.oecd.org/public/rest/dataflow/OECD.SDD.NAD/DSD_NAMAIN1@DF_QNA_EXPENDITURE_CAPITA/1.0?references=all" |>
  readSDMX()

English

Code
metadata_load <- function(code, CL_code, data = QNA_EXPENDITURE_CAPITA_var){
  assign(code, as.data.frame(data@codelists, codelistId = CL_code) |>
           select(id, label.en) |>
           setNames(c(code, str_to_title(code))),
         envir = .GlobalEnv)
}
metadata_load("REF_AREA", "CL_AREA")
REF_AREA |>
  print_table_conditional()

French

Code
metadata_load_fr <- function(code, CL_code, data = QNA_EXPENDITURE_CAPITA_var){
  assign(code, as.data.frame(data@codelists, codelistId = CL_code) |>
           select(id, label.fr) |>
           setNames(c(code, str_to_title(code))),
         envir = .GlobalEnv)
}
metadata_load_fr("REF_AREA", "CL_AREA")
REF_AREA |>
  print_table_conditional()

Plot

Code
QNA_EXPENDITURE_CAPITA |>
  mutate(date = zoo::as.yearqtr(obsTime, format = "%Y-Q%q") |> as.Date()) |>
  filter(year(date) >= 1999) |>
  left_join(REF_AREA, by = "REF_AREA") |>
  group_by(Ref_area) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1999T1 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = Ref_area)) + 
  scale_color_manual(values = c("#B22234", "#003399")) +
  geom_rect(data = nber_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#B22234', alpha = 0.1)  +
  geom_rect(data = cepr_recessions |>
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = 0, ymax = +Inf), 
            fill = '#003399', alpha = 0.1)  +
  scale_x_date(breaks = c(seq(1998, 2100, 2)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.26, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(50, 200, 5))