BYTETOOLS

OECD Data Explorer API

Free OECD SDMX API with no key: composite leading indicators, CPI, GDP, employment and the full OECD statistical catalogue as SDMX-JSON or CSV. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the OECD Data Explorer API?

The OECD serves its statistical database through a free SDMX REST API at sdmx.oecd.org with no key. A request names an agency, dataflow and version, then filters with a dot-separated dimension key.

The OECD rebuilt its data platform around SDMX, and the addressing scheme reflects that: `OECD.SDD.STES,DSD_STES@DF_CLI,4.1` names the owning unit, the data structure, the dataflow and the version. It looks forbidding, but it is copy-pasteable straight out of the Data Explorer UI, which is the practical way to get a working URL rather than deriving one from documentation.

The dimension key is positional and dots are significant. `USA.M.LI...AA...H` has empty positions that act as wildcards, matching every value of those dimensions — so miscounting the dots silently changes which series you get rather than raising an error. Unlike the BIS API, this one accepts `format=jsondata` as a query parameter, and `format=csvfile` returns a flat table that is far quicker to work with when you do not need the full metadata.

Quick facts

Base URL
https://sdmx.oecd.org/public/rest/data
Authentication
No key or registration for the public endpoint. Data is subject to the OECD's terms of use.
Rate limit
No published limit. Very large unfiltered extractions may be refused.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the OECD Data Explorer API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. US composite leading indicator, monthly from January 2026

GET https://sdmx.oecd.org/public/rest/data/OECD.SDD.STES,DSD_STES@DF_CLI,4.1/USA.M.LI...AA...H?startPeriod=2026-01&format=jsondata

curl
curl 'https://sdmx.oecd.org/public/rest/data/OECD.SDD.STES,DSD_STES@DF_CLI,4.1/USA.M.LI...AA...H?startPeriod=2026-01&format=jsondata'
JavaScript (fetch)
const res = await fetch("https://sdmx.oecd.org/public/rest/data/OECD.SDD.STES,DSD_STES@DF_CLI,4.1/USA.M.LI...AA...H?startPeriod=2026-01&format=jsondata");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://sdmx.oecd.org/public/rest/data/OECD.SDD.STES,DSD_STES@DF_CLI,4.1/USA.M.LI...AA...H?startPeriod=2026-01&format=jsondata", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "meta": {
    "schema": "https://raw.githubusercontent.com/sdmx-twg/sdmx-json/master/data-message/tools/schemas/2.0.0/sdmx-json-data-schema.json",
    "id": "IREF008693",
    "prepared": "2026-08-21T07:45:42Z",
    "test": false,
    "contentLanguages": [
      "en",
      "en-US"
    ],
    "sender": {
      "id": "Disseminate_Final_DMZ",
      "name": "unknown",
      "names": {
        "en-US": "unknown"
      }
    }
  },
  "data": {
    "dataSets": [
      {
        "structure": 0,
        "action": "Information",
        "links": [
          {
            "urn": "urn:sdmx:org.sdmx.infomodel.datastructure.DataStructure=OECD.SDD.STES:DSD_STES(4.1)",
            "rel": "DataStructure"
          }
        ],
        "annotations": [
          0,
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "dimensionGroupAttributes": {
          "~:~:0:~:~:0:~:~:~:~": [
            7
          ],
          "~:~:~:~:~:~:~:~:~:~": [
            7
          ],
          "0:~:0:~:~:~:~:~:~:~": [
            7
          ],
          "~:~:0:~:~:~:~:~:~:~": [
            7
          ]
        },
        "series": {
          "0:0:0:0:0:0:0:0:0": {
            "attributes": [
              0,
              0,
              null
            ],
            "annotations": [],
            "observations": {
              "0": [
                100.7588,
                0
              ],
              "1": [
                100.7113,
                0
              ],
              "2": [
                100.6396,
                0
              ]

Parameters

ParameterTypeRequiredDescription
{agency},{dataflow},{version}pathRequiredDataflow address, copyable from the OECD Data Explorer. OECD.SDD.STES,DSD_STES@DF_CLI,4.1
{key}pathRequiredDot-separated dimension values. Empty positions are wildcards, and the number of dots is significant. USA.M.LI...AA...H
startPeriod / endPeriodqueryOptionalPeriod bounds in the dataflow's own format, such as `2026-01` for monthly. 2026-01
formatqueryOptional`jsondata` for SDMX-JSON, `csvfile` for a flat CSV. jsondata
dimensionAtObservationqueryOptionalControls how observations are nested. `AllDimensions` gives a flatter structure. AllDimensions

Response fields

meta.preparedstring
When the OECD generated this response.
meta.contentLanguagesarray
Languages the labels are available in.
data.dataSets[]array
The observations, addressed by positional dimension keys.
data.dataSets[].annotationsarray
Indices into a shared annotation list held in the structure block.
data.structures[]array
Dimension and attribute definitions that positional keys index into.
dimensionGroupAttributesobject
Attributes attached to groups of series, keyed by partially wildcarded dimension patterns.

What you can build with the OECD Data Explorer API

  • Track OECD composite leading indicators for a set of countries
  • Compare CPI or unemployment across OECD members on a consistent basis
  • Pull productivity or trade statistics for research
  • Export a dataflow as CSV for spreadsheet analysis

Common errors and how to fix them

404 with a dataflow message

The dataflow id or version is wrong.

Fix: Versions change and old ones are withdrawn. Copy the current address from the Data Explorer rather than hard-coding one from a blog post.

Wrong series returned

The dimension key has the wrong number of dots.

Fix: Positions are significant and empty ones are wildcards. Count them against the dataflow's dimension list.

Enormous response

Too many wildcards.

Fix: Each empty position multiplies the result set. Pin the dimensions you know and add `startPeriod`.

OECD Data Explorer API — frequently asked questions

Is the OECD data API free?

Yes. The public SDMX endpoint at sdmx.oecd.org requires no key or registration, subject to the OECD's terms of use for the data itself.

How do I build the URL for a dataset?

Find the table in the OECD Data Explorer and use its developer API link, which gives the full agency, dataflow, version and key. Deriving one by hand is error-prone because of the positional dimension key.

What do the empty positions in the key mean?

They are wildcards matching every value of that dimension. Because they are positional, adding or removing a dot changes which dimensions you are filtering without producing an error.

Can I get CSV instead of SDMX-JSON?

Yes, with `format=csvfile`. It returns a flat table with one row per observation, which is much less work than decoding positional SDMX-JSON when you do not need the metadata.

Tools that pair with this API

OECD Data Explorer is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.