OECD Statistics Scraper avatar

OECD Statistics Scraper

Pricing

from $1.00 / 1,000 records

Go to Apify Store
OECD Statistics Scraper

OECD Statistics Scraper

Extract OECD data as labeled rows from any of 1,550 datasets, such as GDP, inflation, and unemployment. Search them by keyword, filter by country, frequency, and period, and export to JSON, CSV, or Excel.

Pricing

from $1.00 / 1,000 records

Rating

5.0

(1)

Developer

Public Money

Public Money

Maintained by Apify

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Categories

Share

How do you get OECD data as structured rows?

OECD Statistics Scraper reads any of the 1,550 datasets OECD publishes, covering GDP, consumer prices, unemployment, trade, health, and education. It returns one row per observation with every code labeled in words. You filter by country, frequency, and period, and OECD sends only the rows you asked for. Don't know a dataset's id? Search by keyword first.

It reads OECD's free SDMX API, the same data behind the OECD Data Explorer. You need no API key and no SDMX knowledge.

What OECD data does it return?

One row per observation. This is a real row for US consumer prices, read from the live OECD API:

{
"status": "ok",
"requested": "DF_PRICES_ALL",
"datasetId": "OECD.SDD.TPS,DSD_PRICES@DF_PRICES_ALL,1.0",
"datasetName": "Consumer price indices (CPIs, HICPs), COICOP 1999",
"country": "USA",
"countryName": "United States",
"frequency": "Monthly",
"measure": "Consumer price index",
"unit": "Percent per annum",
"period": "2026-09",
"value": 3.737685,
"observationStatus": "Normal value",
"dimensions": { "REF_AREA": "USA", "FREQ": "M", "METHODOLOGY": "N", "MEASURE": "CPI", "UNIT_MEASURE": "PA", "EXPENDITURE": "_T", "ADJUSTMENT": "N", "TRANSFORMATION": "GY" },
"dimensionLabels": { "REF_AREA": "United States", "FREQ": "Monthly", "METHODOLOGY": "National", "MEASURE": "Consumer price index", "UNIT_MEASURE": "Percent per annum", "EXPENDITURE": "Total", "ADJUSTMENT": "Neither seasonally adjusted nor calendar adjusted", "TRANSFORMATION": "Growth rate, over 1 year" },
"attributes": { "DECIMALS": "2", "OBS_STATUS": "A" },
"attributeLabels": { "DECIMALS": "Two", "OBS_STATUS": "Normal value" },
"seriesKey": "USA.M.N.CPI.PA._T.N.GY",
"validFrom": "2026-09-01T00:00:00Z"
}

Empty fields are left out of a row, so a field appears only when OECD publishes it for that series.

FieldWhat it holds
datasetId, datasetNameThe dataset's full reference and its name
countryName, frequency, periodWhere, how often, and when, in words
measure, unit, unitMultiplierWhat is measured and in what unit; unitMultiplier says, for example, Millions
value, observationStatusThe figure, and whether it is a normal, estimated, or provisional value
dimensionsEvery dimension of the series as a code, with the same dimensions in words beside it, so a national accounts row also names its sector and price base
seriesKeyThe series' SDMX key, reusable in filterKey

A keyword search returns one row per matching dataset instead, with datasetId, name, agency, and description.

How do you use it in Apify Console?

  1. Open OECD Statistics Scraper in Apify Console.
  2. Put a dataset id such as DF_PRICES_ALL in Datasets, or a keyword such as unemployment in Search datasets.
  3. Add countries, a frequency, and a start period to narrow the rows.
  4. Click Start, then read the dataset or export it as JSON, CSV, or Excel.

What input does it take?

Give a search term, one or more datasets, or both.

FieldTypeWhat it does
datasetsarrayDatasets to read: the short id (DF_PRICES_ALL), the full reference, or a data URL from the Developer API panel on the OECD Data Explorer
searchstringKeywords to find datasets by. Every word must match the dataset's id, name, or description
countriesarrayISO 3166-1 alpha-3 codes, such as USA, DEU, and JPN. Empty means every country
frequencystringA (annual), Q (quarterly), or M (monthly). Empty means every frequency
startPeriod, endPeriodstring2020, 2020-Q1, or 2020-01. Empty means the full history up to the latest
lastNObservationsintegerOnly the latest N periods of every series. 0 returns every period
filterKeystringA raw SDMX key for full control over every dimension. Overrides countries and frequency
maxItemsintegerCaps the rows returned, and so the cost. Default 100. 0 means no cap

The smallest input that works:

{
"datasets": ["DF_PRICES_ALL"],
"countries": ["USA"],
"frequency": "M",
"lastNObservations": 12
}

How are OECD datasets found and filtered?

A search reads OECD's whole list of datasets and keeps the datasets whose id, name, and description contain every word you typed. The datasetId on each result goes straight into datasets.

When you set countries or frequency, the Actor reads the dataset's structure and writes them into the OECD query, so a request for US monthly figures downloads only those rows, never the whole dataset. A short id that matches datasets from two OECD directorates returns a failed row that lists the full references to choose from. When a dataset has several versions, the newest one is read.

How do you call the OECD API through Apify, or from an AI agent?

Start a run with the Apify API and read the rows when it finishes:

curl -X POST "https://api.apify.com/v2/acts/publicmoney~oecd-statistics-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"datasets": ["DF_PRICES_ALL"], "countries": ["USA", "DEU"], "frequency": "M", "startPeriod": "2026-01"}'

The Actor also runs in Standby: send the same input to its /search route and get the rows back in one request, at most 500 per request. To let an agent use it, connect Apify's MCP server at https://mcp.apify.com in Claude, Cursor, or any MCP client and add OECD Statistics Scraper as a tool. An agent can search for a dataset id and read it in two calls.

How much does OECD data cost?

You pay per row, at the price of your Apify plan:

EventFree planDiamond planWhen
Record$0.002$0.0007Each observation or search result returned
Actor start$0.00005 per GB$0.00005 per GBOnce per run, per GB of memory (2 GB by default)

A dataset that did not resolve, a filter with no data, and a gap in a series (an observation with no value) are returned but not charged. maxItems caps a run at 100 rows by default, because one dataset can hold millions of observations.

What are the limitations?

  • Only OECD data is read. URLs must be sdmx.oecd.org/public/rest/data links; other links return a failed row.
  • countries and frequency need a country or frequency dimension. A dataset without one returns a failed row that lists its dimensions, so you can use filterKey instead.
  • A search matches words, not meanings: jobs will not find a dataset described only as employment.
  • The data is as current as OECD publishes it. Release dates differ by dataset and country.

Troubleshooting

IssueSolution
A failed row says the dataset was not foundCheck the id, or run a search and copy its datasetId
A failed row asks for the full referenceTwo OECD directorates use that short id. Paste one of the references it lists
An empty rowOECD has no observations for that filter. Widen the period or the countries
A failed row lists dimensionsThe dataset has no country or frequency dimension. Build a filterKey from the dimensions it lists
Fewer rows than expectedmaxItems defaults to 100. Raise it, or set 0 for no cap

For anything else, open an issue on the Actor's Issues tab with your input and run ID.

Frequently asked questions

Short answers before your first run.

Is the OECD data live?

Yes. Every run reads the OECD API at the time it runs, so you get the latest release.

What is the smallest input that works?

One dataset id, such as DF_PRICES_ALL, as in the example above. Add countries to keep the rows few.

What happens when nothing matches?

You get one empty row saying OECD has no observations for that filter, and it is not charged.

How many rows does a run return?

Up to maxItems, 100 by default. Set it to 0 to read everything that matches.

Can I use it as an OECD API?

Yes. Call it through the Apify API or its Standby route with a JSON input and read labeled rows back as JSON, without writing SDMX queries.

Can I use it with MCP and AI agents?

Yes. Add it to Apify's MCP server and any MCP client can search OECD datasets and read them as a tool.

How much does a run cost?

Each observation or search result is one Record, $0.002 on the Free plan. Rows that are not data are free.

OECD publishes this data openly through its public API. Check OECD's terms of use for how you may reuse and credit it.

Can I run it on a schedule?

Yes. Save the input as a task in Apify Console with lastNObservations set, and add a monthly schedule to collect each new release.