OECD’s API

Data - OECD

Info

source dataset Title .html .rData
oecd api OECD's API 2026-07-24 2024-04-16

List of APIs

source dataset Title .html .rData
bdf api NA NA NA
bea api NA NA NA
bis api NA NA NA
bls api NA NA NA
dbnomics api NA NA NA
ecb api NA NA NA
eurostat api NA NA NA
imf api NA NA NA
insee api NA NA NA
oecd api OECD's API 2026-07-24 2024-04-16
wdi api NA NA NA

LAST_COMPILE

LAST_COMPILE
2026-07-26

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