OECD’s API
Data - OECD
Info
List of APIs
LAST_COMPILE
| LAST_COMPILE |
|---|
| 2026-07-26 |
Info
OECD Data API documentation: https://gitlab.algobank.oecd.org/public-documentation/dotstat-migration/-/raw/main/OECD_Data_API_documentation.pdf
Upgrading your queries from the legacy OECD.Stat APIs to the new OECD Data API. pdf
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_tibbleMetadata
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))