Financial Literature

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

macropriceslabourratesglobal
Asset classesmacro · prices · labour · rates
Frequencymonthly → annual
History1955 → today
Limit · costNo key · fair use
KeyNo key
Formats · pull withcsv · json · sdmx — python, excel, sheets
LicenceOECD terms: free to use and redistribute with attribution; some datasets from third parties are restricted.
RedistributeWith attribution; check series notes
Best for“Composite leading indicators for the big economies” · “Harmonised unemployment and CPI across the OECD”
When to use it

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.

How to read it

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'.

How to use it in your own work

Three recipes

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())
How to read the resultLook for the turn: three consecutive months up after a decline is the signal the OECD itself uses.

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())
How to read the resultHarmonised (ILO definition) — comparable across countries, unlike the national headline rates.

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())
How to read the resultMonthly averages of 10-year government yields; the spread between countries is the term-premium and credit story.

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.

SeriesAnswersRegionConcept
DF_CLI · LIIs the cycle turning? (leading indicator)globalleading
DF_IALFS_UNE_MHarmonised unemployment, any OECD countryglobalunemployment
DF_FINMARK · IRLTLong-term rates, cross-countryglobalyield_10y
DF_PRICES · CPICPI, harmonised across the OECDglobalcpi

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.