Eurostat’s API
Data - Eurostat
Info
List of APIs
Info
All datasets: https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/dataflow/ESTAT/all
All codelists: https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/codelist/ESTAT/all
API for data access: https://wikis.ec.europa.eu/display/EUROSTATHELP/API+for+data+access
JSON example: https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/nama_10_gdp?format=JSON&lang=EN&time=2019
Examples:
Listings
Components
namq_10_gdp
Code
"https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/datastructure/ESTAT/namq_10_gdp" %>%
readSDMX() %>%
slot("datastructures") %>%
pluck(1) %>%
slot("Components") %>%
as_tibble %>%
print_table_conditional()| component | conceptRef | conceptVersion | conceptAgency | conceptSchemeRef | conceptSchemeVersion | conceptSchemeAgency | codelist | codelistVersion | codelistAgency | isMeasureDimension | isFrequencyDimension | isEntityDimension | isCountDimension | isNonObservationTimeDimension | isIdentityDimension | crossSectionalAttachDataset | crossSectionalAttachGroup | crossSectionalAttachSection | crossSectionalAttachObservation |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Dimension | freq | NA | NA | NAMQ_10_GDP | 127.0 | ESTAT | FREQ | 3.9 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Dimension | unit | NA | NA | NAMQ_10_GDP | 127.0 | ESTAT | UNIT | 81.0 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Dimension | s_adj | NA | NA | NAMQ_10_GDP | 127.0 | ESTAT | S_ADJ | 1.12 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Dimension | na_item | NA | NA | NAMQ_10_GDP | 127.0 | ESTAT | NA_ITEM | 30.0 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Dimension | geo | NA | NA | NAMQ_10_GDP | 127.0 | ESTAT | GEO | 28.0 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| TimeDimension | TIME_PERIOD | 127.0 | ESTAT | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| PrimaryMeasure | OBS_VALUE | 127.0 | ESTAT | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| Attribute | OBS_FLAG | NA | NA | NAMQ_10_GDP | 127.0 | ESTAT | OBS_FLAG | 1.39 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Attribute | CONF_STATUS | NA | NA | NAMQ_10_GDP | 127.0 | ESTAT | CONF_STATUS | 1.2 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
prc_hicp_manr
Code
"https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/datastructure/ESTAT/prc_hicp_manr" %>%
readSDMX() %>%
slot("datastructures") %>%
pluck(1) %>%
slot("Components") %>%
as_tibble %>%
print_table_conditional()| component | conceptRef | conceptVersion | conceptAgency | conceptSchemeRef | conceptSchemeVersion | conceptSchemeAgency | codelist | codelistVersion | codelistAgency | isMeasureDimension | isFrequencyDimension | isEntityDimension | isCountDimension | isNonObservationTimeDimension | isIdentityDimension | crossSectionalAttachDataset | crossSectionalAttachGroup | crossSectionalAttachSection | crossSectionalAttachObservation |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Dimension | freq | NA | NA | PRC_HICP_MANR | 69.0 | ESTAT | FREQ | 3.9 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Dimension | unit | NA | NA | PRC_HICP_MANR | 69.0 | ESTAT | UNIT | 70.0 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Dimension | coicop | NA | NA | PRC_HICP_MANR | 69.0 | ESTAT | COICOP | 6.3 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Dimension | geo | NA | NA | PRC_HICP_MANR | 69.0 | ESTAT | GEO | 27.0 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| TimeDimension | TIME_PERIOD | 69.0 | ESTAT | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| PrimaryMeasure | OBS_VALUE | 69.0 | ESTAT | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| Attribute | OBS_FLAG | NA | NA | PRC_HICP_MANR | 69.0 | ESTAT | OBS_FLAG | 1.39 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Attribute | CONF_STATUS | NA | NA | PRC_HICP_MANR | 69.0 | ESTAT | CONF_STATUS | 1.2 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
hbs_str_t223
Code
"https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/datastructure/ESTAT/hbs_str_t223" %>%
readSDMX() %>%
slot("datastructures") %>%
pluck(1) %>%
slot("Components") %>%
as_tibble %>%
print_table_conditional()| component | conceptRef | conceptVersion | conceptAgency | conceptSchemeRef | conceptSchemeVersion | conceptSchemeAgency | codelist | codelistVersion | codelistAgency | isMeasureDimension | isFrequencyDimension | isEntityDimension | isCountDimension | isNonObservationTimeDimension | isIdentityDimension | crossSectionalAttachDataset | crossSectionalAttachGroup | crossSectionalAttachSection | crossSectionalAttachObservation |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Dimension | freq | NA | NA | HBS_STR_T223 | 41.0 | ESTAT | FREQ | 3.7 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Dimension | quant_inc | NA | NA | HBS_STR_T223 | 41.0 | ESTAT | QUANT_INC | 2.2 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Dimension | coicop | NA | NA | HBS_STR_T223 | 41.0 | ESTAT | COICOP | 6.3 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Dimension | unit | NA | NA | HBS_STR_T223 | 41.0 | ESTAT | UNIT | 65.0 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Dimension | geo | NA | NA | HBS_STR_T223 | 41.0 | ESTAT | GEO | 25.2 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| TimeDimension | TIME_PERIOD | 41.0 | ESTAT | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| PrimaryMeasure | OBS_VALUE | 41.0 | ESTAT | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| Attribute | OBS_FLAG | NA | NA | HBS_STR_T223 | 41.0 | ESTAT | OBS_FLAG | 1.38 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
| Attribute | CONF_STATUS | NA | NA | HBS_STR_T223 | 41.0 | ESTAT | CONF_STATUS | 1.1 | ESTAT | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | NA | NA | NA | NA |
Codelists
FREQ
Code
"https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/codelist/ESTAT/FREQ" %>%
readSDMX() %>%
as_tibble %>%
select(1, 4) %>%
print_table_conditional()| id | label.en |
|---|---|
| P | Pluri-annual |
| A | Annual |
| S | Half-yearly, semesterly |
| Q | Quarterly |
| M | Monthly |
| W | Weekly |
| B | Daily - business week |
| D | Daily |
| H | Hourly |
| I | Irregular / A-periodic |
| NAP | Not applicable |
| A3 | Triannual |
coicop
Code
"https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/codelist/ESTAT/coicop" %>%
readSDMX() %>%
as_tibble %>%
select(1, 4) %>%
print_table_conditional()https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/contentconstraint/ESTAT/ISOC_CI_ID_H/1.0
New
Code
data_structure <- "https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/datastructure/ESTAT/NAMA_10_GDP/28.0" %>%
readSDMX()
components <- "https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/datastructure/ESTAT/NAMQ_10_GDP" %>%
readSDMX() %>%
slot("datastructures") %>%
pluck(1) %>%
slot("Components") %>%
as_tibble
components <- "https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/datastructure/ESTAT/NAMQ_10_GDP" %>%
readSDMX() %>%
slot("datastructures") %>%
pluck(1) %>%
slot("Components") %>%
as_tibble
Concept_scheme <- "https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/conceptscheme/ESTAT/ISOC_CI_ID_H/28.0" %>%
readSDMX()GDP Data
https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/codelist/ESTAT/FREQ/1.31
Example 1
Code
"https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/NAMA_10_GDP/A.CP_MEUR.B1GQ.FR+DE+IT" %>%
readSDMX() %>%
as_tibble %>%
mutate(date = as.Date(paste0(obsTime, "-01-01"))) %>%
ggplot + geom_line(aes(x = date, y = obsValue, color = geo)) +
scale_y_log10() + theme_minimal()
Example 3
Code
"https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/PRC_HICP_MANR/M..CP01+CP04.FR" %>%
readSDMX() %>%
as_tibble %>%
mutate(date = as.Date(paste0(obsTime, "-01-01"))) %>%
ggplot + geom_line(aes(x = date, y = obsValue, color = coicop)) +
scale_y_continuous() + theme_minimal()
Example 4
Without label
Code
"https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/UNE_RT_M/M.SA.TOTAL.PC_ACT.T.EA21+FR" %>%
rsdmx::readSDMX() %>%
as_tibble %>%
mutate(date = obsTime %>% paste0("-01-01") %>% as.Date()) %>%
filter(date >= as.Date("2000-01-01")) %>%
ggplot + geom_line(aes(x = date, y = obsValue/100, color = geo)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
labels = date_format("%Y")) +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
legend.position = c(0.2, 0.8),
legend.title = element_blank()) +
scale_color_manual(values = c("#003399", "#ED2939")) +
xlab("") + ylab("Unemployment, Percentage of active population") +
scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
labels = scales::percent_format(accuracy = 1))
With label
Code
geo <- "https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/codelist/ESTAT/GEO" %>%
readSDMX() %>%
as_tibble %>%
select(1, 4) %>%
setNames(c("geo", "Geo"))
"https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/UNE_RT_M/M.SA.TOTAL.PC_ACT.T.EA21+FR" %>%
rsdmx::readSDMX() %>%
as_tibble %>%
mutate(date = obsTime %>% paste0("-01-01") %>% as.Date()) %>%
filter(date >= as.Date("2000-01-01")) %>%
left_join(geo, by = "geo") %>%
mutate(values = obsValue/100) %>%
left_join(colors, by = c("Geo" = "country")) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
scale_color_identity() + add_flags +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
labels = date_format("%Y")) +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
legend.position = c(0.2, 0.8),
legend.title = element_blank()) +
scale_color_manual(values = c("#003399", "#ED2939")) +
xlab("") + ylab("Unemployment, Percentage of active population") +
scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
labels = scales::percent_format(accuracy = 1))
Example 2
Getting started with SDMX 2.1
New one: https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/ISOC_CI_ID_H/A.H_IPC.PC_HH_IACC.TOTAL.EU27_2020?startPeriod=2008&endPeriod=2010
Bulk Download Facility: https://ec.europa.eu/eurostat/estat-navtree-portlet-prod/BulkDownloadListing
Listing: https://ec.europa.eu/eurostat/estat-navtree-portlet-prod/BulkDownloadListing?sort=1&dir=data
get_eurostat_raw: https://rdrr.io/cran/eurostat/src/R/get_eurostat_raw.R.
REST Request
- Link. html