OECD
OECD Data Explorer — Leading indicators, CPI, unemployment and rates for the OECD's members and partners, harmonised
When you need the OECD's harmonised monthly series — leading indicators, harmonised unemployment, CPI, long-term rates — across countries in one format, or the OECD's own datasets (productivity, tax, trade in value added).
Reach for it when…
When you need the OECD's harmonised monthly series — leading indicators, harmonised unemployment, CPI, long-term rates — across countries in one format, or the OECD's own datasets (productivity, tax, trade in value added).
Not for: A country's own release-day number (its statistics office), non-OECD countries beyond the partner set, daily market data.
Units, revisions, traps
Units. Per dataset: index (CLI, amplitude-adjusted, 100 = trend), percent (unemployment, rates), index or growth (CPI).
Revisions. CLIs are revised with each release as source data revise; the last few months are the least reliable.
- Dataflow ids are long (OECD.SDD.STES,DSD_STES@DF_CLI,4.1) and the key has many dimensions — copy the URL from the Data Explorer's 'developer API' panel.
- format=csvfilewithlabels gives readable columns; plain csv gives codes.
- CLI turning points are the point; the level around 100 means little.
- sdmx.oecd.org refuses generic script user-agents (Cloudflare error 1010); send one that names you.
Classic mistake: Reading a CLI of 99.8 as 'the economy is shrinking'.
Three recipes
- Recipe 1 · Composite leading indicator, monthly
- Recipe 2 · Harmonised unemployment, several countries
- Recipe 3 · Long-term interest rates, OECD-wide
Each recipe: Python · Excel · Sheets, with how to read the result. Python recipes run under pandas; recipe 1 is re-run by the weekly check where the source allows it.
How to use it in your own work
Copy the snippet, change the series id, read the result the way the footer says. Replace YOUR_…_KEY with your own key where one is needed.
Recipe 1Composite leading indicator, monthly
# CLI, amplitude adjusted, United States
import requests, pandas as pd, io
H = {"User-Agent": "Your Name [email protected]"} # identify yourself; generic script user-agents are refused
u = ("https://sdmx.oecd.org/public/rest/data/OECD.SDD.STES,DSD_STES@DF_CLI,4.1/USA.M.LI...AA...H"
"?format=csvfilewithlabels&startPeriod=2022-01")
df = pd.read_csv(io.StringIO(requests.get(u, headers=H, timeout=60).text))
print(df[["TIME_PERIOD", "OBS_VALUE"]].tail())- Data → From Web → the same URL → Load.
=IMPORTDATA with the same URL.Recipe 2Harmonised unemployment, several countries
import requests, pandas as pd, io
H = {"User-Agent": "Your Name [email protected]"} # identify yourself; generic script user-agents are refused
u = ("https://sdmx.oecd.org/public/rest/data/OECD.SDD.TPS,DSD_LFS@DF_IALFS_UNE_M,1.0/USA+JPN+KOR+DEU..._Z.Y._T.Y_GE15..M"
"?format=csvfilewithlabels&startPeriod=2024-01")
df = pd.read_csv(io.StringIO(requests.get(u, headers=H, timeout=60).text))
print(df.pivot_table(index="TIME_PERIOD", columns="REF_AREA", values="OBS_VALUE").tail())- From Web with the same URL.
=IMPORTDATA with the same URL.Recipe 3Long-term interest rates, OECD-wide
import requests, pandas as pd, io
H = {"User-Agent": "Your Name [email protected]"} # identify yourself; generic script user-agents are refused
u = ("https://sdmx.oecd.org/public/rest/data/OECD.SDD.STES,DSD_STES@DF_FINMARK,4.0/USA+JPN+DEU+KOR.M.IRLT.PA.....?format=csvfilewithlabels&startPeriod=2023-01")
df = pd.read_csv(io.StringIO(requests.get(u, headers=H, timeout=60).text))
print(df.pivot_table(index="TIME_PERIOD", columns="REF_AREA", values="OBS_VALUE").tail())- From Web with the same URL.
=IMPORTDATA with the same URL.Series → question map
The ids we use from OECD Data Explorer, each with the question it answers. The catalog's compare view reads the concept tags behind these rows.
| Series | Answers | Region | Concept |
|---|---|---|---|
| DF_CLI · LI | Is the cycle turning? (leading indicator) | global | leading |
| DF_IALFS_UNE_M | Harmonised unemployment, any OECD country | global | unemployment |
| DF_FINMARK · IRLT | Long-term rates, cross-country | global | yield_10y |
| DF_PRICES · CPI | CPI, harmonised across the OECD | global | cpi |
Compare with
Same question, different source: World Bank Indicators API, IMF Data, FRED. The compare view lines up coverage, frequency, history and access side by side and lists what the combination makes possible.
Open compare: OECD Data Explorer · World Bank Indicators API · IMF Data →
Questions readers ask
Is the OECD API free?
Yes, no key, SDMX with a CSV option.
Why is my key rejected?
Dimension order matters and differs per dataset. Build the query in the Data Explorer and copy the URL from its API panel.
Does FRED carry OECD series?
Many of them (the MEI series), which is the easier route when you already pull from FRED.
From the paper
Educational only — we explain, we never advise · snippet licence: public domain · corrections to [email protected], fixed within a day and logged in the changelog.