IMF Data
App · Accounting & Finance · 10 actions
Read the IMF's official economic statistics from a workflow. Get growth, inflation, unemployment, GDP, government debt and deficit, the current account, population or the exchange rate for any of roughly 200 economies, follow one through time, compare countries side by side, or pull a whole country profile in one step. World commodity prices - crude oil, gold, copper, wheat, coffee - come from the IMF's own price system. Everything else the IMF publishes, from trade by partner country to financial soundness indicators, is reachable by searching the catalogue and filtering a dataset by name. The World Economic Outlook publishes forecasts beside measurements, so every figure says which it is. Every action reads: nothing here changes anything. No account or API key required.
Actions
| Action | What it does |
|---|---|
| Compare countries | Put several economies side by side on one statistic and rank them, in a single step rather than one per country. |
| Find a dataset | Search the IMF catalogue by words in a dataset's name or its summary, and get back the code every other action takes. |
| Get a commodity price | Get the world price of a commodity from the IMF's Primary Commodity Price System - crude oil, gold, copper, wheat, coffee, natural gas and a hundred more, monthly since 1980. |
| Get a country's economic profile | Get several headline statistics for one country at once - growth, inflation, unemployment, income per person, government debt and the current account unless you choose otherwise. |
| Get a dataset's details | Everything you need to query one dataset: what it holds, the filters it is keyed by in the order the key wants them, how many values each of those accepts and a few examples of each, how often it reports, how many economies it covers, when it was last updated and how the IMF asks to be cited. |
| Get a time series | Follow one series from any IMF dataset through time. |
| Get an economic statistic | Get one of twenty-six headline IMF statistics for a country and follow it through time - GDP and its growth, inflation, unemployment, government debt and deficit, the current account, population, the exchange rate. |
| Get data from a dataset | Get figures from any IMF dataset. |
| Get the latest figure | Get the most recent value of one IMF statistic for one country, returned flat so a later step can read the number, the period and the change on the period before without indexing into a list. |
| List a filter's values | List the codes one filter of one dataset accepts, each with the words behind it, so a filter box can be filled in rather than guessed at. |
Compare countries
Put several economies side by side on one statistic and rank them, in a single step rather than one per country. Pick the countries by name from the list, up to forty at a time. Leaving the year empty gives each economy its own most recent figure, which can be a different year for each - the result says when that happens and every row carries its own period.
Inputs
- Statistic
statistictext - Which figure to read. These are the twenty-six headline statistics the IMF is asked for most, and the dataset and codes behind each one are already filled in. GDP growth by default. For anything else the IMF publishes - trade by partner country, financial soundness, reserves - use 'Get data from a dataset'.One of:
gdp_growth(GDP growth (percent a year)),gdp(GDP (US dollars)),gdp_per_person(GDP per person (US dollars a person)),gdp_ppp(GDP at purchasing-power parity (international dollars)),gdp_per_person_ppp(GDP per person at purchasing-power parity (international dollars a person)),share_of_world_gdp(Share of world GDP (percent of world GDP)),output_gap(Output gap (percent of potential GDP)),inflation(Inflation (percent a year)),inflation_end_of_year(Inflation at the end of the year (percent a year)),inflation_monthly(Inflation, monthly (percent a year)), and 16 more. Default:gdp_growth. - Countries
countrieslistRequired - Which economies to compare, two or more. The list holds every country the IMF reports on and the groups it aggregates. A value from an earlier step can be a list of names or codes, or one comma-separated line.
- As of
as_ofdate - Which year to read. Read as the year that contains the date, so any day in 2024 means 2024. Leave it empty for each economy's most recent figure, which may be a different year for each of them - the result says so, and every row carries its own period. An economy the IMF has not reported on for many years is then listed as missing rather than compared on a figure from a decade ago.
- Order
ordertext - Highest first by default, which is what a league table wants. Lowest first for a statistic where small is good, such as unemployment or government debt.One of:
highest_first(Highest first),lowest_first(Lowest first),by_name(By country name). Default:highest_first. - What counts as the latest
basistext - The World Economic Outlook publishes forecasts five years ahead in the same column as the measurements, so 'the latest figure' is ambiguous and this settles it. By default the latest actual is returned, because a number presented as a measurement should be one. Switch to include forecasts when the question really is what the IMF expects. Either way each figure says which it is.One of:
actual(Only figures the IMF reports as actual),any(The latest figure, forecast or actual). Default:actual.
Outputs
averagenumber- The mean of these figures, unweighted
countnumber- How many economies had a figure
countrieslist- One row per economy, in the order asked for
datasettext- The dataset they came from
dataset_urltext- Where to read the same dataset on the IMF's site
highestobject- The economy with the largest figure
lowestobject- The economy with the smallest figure
missinglist- The economies the IMF has no figure for
periodslist- The periods these figures come from
requested_countnumber- How many economies were asked about
same_periodtrue/false- False when economies reported up to different periods, so the rows are each economy's own latest rather than one year
scalenumber- The exponent the IMF prints these figures in
sourcetext- Who compiled the figures
statistictext- The statistic that was read
statistic_labeltext- Its name
unittext- What the figures are in
Example output
{
"average": 0.5838995,
"count": 2,
"countries": [
{
"basis": "actual",
"country": "FRA",
"country_label": "France",
"formatted": "0.9",
"is_projection": false,
"period": "2025",
"period_end": "2025-12-31",
"period_label": "2025",
"period_start": "2025-01-01",
"rank": 1,
"value": 0.928126,
"year": 2025
},
{
"basis": "actual",
"country": "DEU",
"country_label": "Germany",
"formatted": "0.2",
"is_projection": false,
"period": "2025",
"period_end": "2025-12-31",
"period_label": "2025",
"period_start": "2025-01-01",
"rank": 2,
"value": 0.239673,
"year": 2025
}
],
"dataset": "WEO",
"dataset_url": "https://data.imf.org/en/datasets/IMF.RES:WEO",
"highest": {
"basis": "actual",
"country": "FRA",
"country_label": "France",
"formatted": "0.9",
"is_projection": false,
"period": "2025",
"period_end": "2025-12-31",
"period_label": "2025",
"period_start": "2025-01-01",
"rank": 1,
"value": 0.928126,
"year": 2025
},
"lowest": {
"basis": "actual",
"country": "DEU",
"country_label": "Germany",
"formatted": "0.2",
"is_projection": false,
"period": "2025",
"period_end": "2025-12-31",
"period_label": "2025",
"period_start": "2025-01-01",
"rank": 2,
"value": 0.239673,
"year": 2025
},
"missing": [],
"periods": [
"2025"
],
"requested_count": 2,
"same_period": true,
"scale": 0,
"source": "IMF staff calculations.",
"statistic": "gdp_growth",
"statistic_label": "GDP growth",
"unit": "percent a year"
}Find a dataset
Search the IMF catalogue by words in a dataset's name or its summary, and get back the code every other action takes. This is the way in to everything the headline statistics do not cover: trade by partner country, financial soundness indicators, reserves, government finance, the Financial Access Survey. Half the catalogue is dated archive copies frozen as a published report left them; those are left out unless you ask for them, and the result says how many.
Inputs
- Search
searchtext - Only datasets whose name, code or summary contains this text. Capitals, accents and punctuation are ignored. Leave it empty to list the catalogue.
- Which datasets
scopetext - The datasets the IMF maintains, by default. Include the archive copies when you need to reproduce a figure exactly as some report published it - each one is that dataset frozen at a named month.One of:
current(Only the datasets the IMF maintains),all(Also the dated archive copies). Default:current. - Number of records
limitnumber - Optional. How many records to return. Between 1 and 500; 25 by default.From 1 to 500. Default:
25. - Skip
offsetnumber - Optional. How many matching records to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default:
0.
Outputs
archived_countnumber- How many dated archive copies the catalogue holds
catalogue_countnumber- How many datasets were searched
countnumber- How many are on this page
datasetslist- The datasets that matched, current ones first
has_moretrue/false- True when more matched than this page holds
next_offsetnumber- The offset that returns the next page
scopetext- Whether archive copies were searched: current or all
searchtext- The text that was searched for
total_countnumber- How many matched in all
Example output
{
"archived_count": 119,
"catalogue_count": 103,
"count": 3,
"datasets": [
{
"agency": "IMF.STA",
"dataset": "CRBRATE",
"description": "This dataset provides information on the Effective Carbon Rate (ECR), which represents the combined value of fuel excise taxes, carbon taxes, and tradeable permits that place a price on carbon emissio...",
"is_archived": false,
"name": "Carbon Rates",
"reference": "IMF.STA:CRBRATE",
"url": "https://data.imf.org/en/datasets/IMF.STA:CRBRATE"
},
{
"agency": "IMF.RES",
"dataset": "CTOT",
"description": "CTOT is a comprehensive database of country-specific commodity price indices for 182 economies covering the period from 1962 onwards. For each country, the change in the international price of up to 4...",
"is_archived": false,
"name": "Commodity Terms of Trade (CTOT)",
"reference": "IMF.RES:CTOT",
"url": "https://data.imf.org/en/datasets/IMF.RES:CTOT"
}
],
"has_more": true,
"next_offset": 3,
"scope": "current",
"search": "price",
"total_count": 12
}Get a commodity price
Get the world price of a commodity from the IMF's Primary Commodity Price System - crude oil, gold, copper, wheat, coffee, natural gas and a hundred more, monthly since 1980. Ask for the price itself, the index, or the change on the month or the year. The result carries the high, the low and the average across the period as well as the latest, so a price alert needs no arithmetic of its own.
Inputs
- Commodity
commoditytextRequired - Which commodity to price. The list holds everything the IMF prices, each with the unit it is quoted in, and includes the IMF's own composite indexes such as All Commodities and Energy. A value from an earlier step can be the IMF's code or the commodity's name.
- Measure
measuretext - The price in US dollars by default. The index is the IMF's own, set to 100 in its base year, and is the only measure available for a composite such as All Commodities. The two change measures come back as percentages already worked out.One of:
price(Price in US dollars),index(Price index),change_on_month(Change on the period before, percent),change_on_year(Change on a year earlier, percent). Default:price. - How often
frequencytext - Monthly by default, which is how the IMF collects these prices. Quarterly and annual are the IMF's own averages of the same series.One of:
M(Monthly),Q(Quarterly),A(Annual). Default:M. - From
from_datedate - The earliest date to cover. The IMF reports in whole periods - a year, a quarter, a month - so this is read as the period that contains the date rather than as the day itself. Left empty, a step returns the recent part of the series rather than all of it, because a monthly one runs back to the 1950s and eight hundred figures is rarely what was wanted; set a date here to reach the whole history.
- To
to_datedate - The latest date to cover, read as the period that contains it. Leave it empty to run to the end of the series, which for a World Economic Outlook figure is several years of IMF projections.
Outputs
averagenumber- The mean across the range
citationtext- How the IMF asks to be cited
commoditytext- The IMF's code for the commodity, such as PCOPP
commodity_labeltext- What it is called
commodity_unittext- What it is priced in, such as US dollars per barrel
countnumber- How many periods came back
datasettext- The dataset it came from
dataset_urltext- Where to read the same dataset on the IMF's site
first_periodtext- The earliest period
frequencytext- M, Q or A
frequency_labeltext- That frequency in words
full_nametext- The IMF's own full name for the series
highestobject- The highest point in the range
last_periodtext- The latest period
latestobject- The most recent point
lowestobject- The lowest point in the range
measuretext- Which measure was read: price, index or a change
measure_labeltext- That measure in words
observationslist- The series, oldest first
sourcetext- Who compiled the figures
Example output
{
"average": 11927.38930665663,
"citation": "International Monetary Fund. Primary Commodity Price System\u00a0(PCPS),\u00a0 https://data.imf.org/en/datasets//IMF.RES:PCPS. Accessed on [current date].",
"commodity": "PCOPP",
"commodity_label": "Copper",
"commodity_unit": "US dollars per metric tonne",
"count": 15,
"dataset": "PCPS",
"dataset_url": "https://data.imf.org/en/datasets/IMF.RES:PCPS",
"first_period": "2025-M06",
"frequency": "M",
"frequency_label": "Monthly",
"full_name": "Copper, US dollars per metric tonne, Unit prices",
"highest": {
"formatted": "14,331.26",
"period": "2026-M08",
"period_end": "2026-08-31",
"period_label": "August 2026",
"period_start": "2026-08-01",
"value": 14331.26476190476
},
"last_period": "2026-M08",
"latest": {
"formatted": "14,331.26",
"period": "2026-M08",
"period_end": "2026-08-31",
"period_label": "August 2026",
"period_start": "2026-08-01",
"value": 14331.26476190476
},
"lowest": {
"formatted": "9,671.88",
"period": "2025-M08",
"period_end": "2025-08-31",
"period_label": "August 2025",
"period_start": "2025-08-01",
"value": 9671.875714285714
},
"measure": "price",
"measure_label": "Price in US dollars",
"observations": [
{
"formatted": "9,835.07",
"period": "2025-M06",
"period_end": "2025-06-30",
"period_label": "June 2025",
"period_start": "2025-06-01",
"value": 9835.068095238095
},
{
"formatted": "9,770.58",
"period": "2025-M07",
"period_end": "2025-07-31",
"period_label": "July 2025",
"period_start": "2025-07-01",
"value": 9770.580434782609
}
],
"source": "\"PCPS Technical Documentation: IMF Primary Commodity Price Index\", Jan 25, 2019, IMF Methodology Notes"
}Get a country's economic profile
Get several headline statistics for one country at once - growth, inflation, unemployment, income per person, government debt and the current account unless you choose otherwise. This is the briefing-note step: one call instead of six, with each figure in the unit it belongs in and each marked as measured or forecast. A statistic the IMF does not report for that country is listed as not reported rather than left out.
Inputs
- Country
countrytext - Which economy to read. The list holds every country the IMF reports on, followed by the groups it aggregates - the world, the euro area, the G7. A value from an earlier step can be the country's name ('Japan'), either of its ISO codes ('JP' or 'JPN'), or the name a person would say rather than the IMF's formal one ('South Korea' finds 'Korea, Republic of'). The United States by default.Default:
USA. - Statistics
statisticslist - Which figures to include, up to twelve. Six headline ones by default: GDP growth, inflation, unemployment, GDP per person, government debt and the current account.One or more of:
gdp_growth(GDP growth (percent a year)),gdp(GDP (US dollars)),gdp_per_person(GDP per person (US dollars a person)),gdp_ppp(GDP at purchasing-power parity (international dollars)),gdp_per_person_ppp(GDP per person at purchasing-power parity (international dollars a person)),share_of_world_gdp(Share of world GDP (percent of world GDP)),output_gap(Output gap (percent of potential GDP)),inflation(Inflation (percent a year)),inflation_end_of_year(Inflation at the end of the year (percent a year)),inflation_monthly(Inflation, monthly (percent a year)), and 16 more. Default:["gdp_growth", "inflation", "unemployment", "gdp_per_person", "government_debt", "current_account"]. - As of
as_ofdate - Which year to read. Read as the year that contains the date, so any day in 2024 means 2024. Leave it empty for each economy's most recent figure, which may be a different year for each of them - the result says so, and every row carries its own period. An economy the IMF has not reported on for many years is then listed as missing rather than compared on a figure from a decade ago.
- What counts as the latest
basistext - The World Economic Outlook publishes forecasts five years ahead in the same column as the measurements, so 'the latest figure' is ambiguous and this settles it. By default the latest actual is returned, because a number presented as a measurement should be one. Switch to include forecasts when the question really is what the IMF expects. Either way each figure says which it is.One of:
actual(Only figures the IMF reports as actual),any(The latest figure, forecast or actual). Default:actual.
Outputs
citationtext- How the IMF asks to be cited
countnumber- How many statistics were asked for
countrytext- The IMF's code for the economy
country_labeltext- That economy's name
dataset_urltext- Where to read the World Economic Outlook on the IMF's site
found_countnumber- How many of them the IMF reports for this economy
missinglist- The statistics it does not report
periodslist- The periods these figures come from. More than one is normal: the IMF reports some figures later than others
sourcetext- Who compiled the figures
statisticslist- One row per statistic asked for, in that order
updated_attext- When the IMF last published the dataset
Example output
{
"citation": "International Monetary Fund. World Economic Outlook (WEO), https://data.imf.org/en/datasets/IMF.RES:WEO. Accessed on [current date].",
"count": 6,
"country": "FRA",
"country_label": "France",
"dataset_url": "https://data.imf.org/en/datasets/IMF.RES:WEO",
"found_count": 6,
"missing": [],
"periods": [
"2024",
"2025"
],
"source": "IMF staff calculations.",
"statistics": [
{
"basis": "actual",
"dataset": "WEO",
"formatted": "0.9",
"found": true,
"is_projection": false,
"period": "2025",
"period_label": "2025",
"statistic": "gdp_growth",
"statistic_label": "GDP growth",
"summary": "How much the economy grew, after inflation is taken out.",
"unit": "percent a year",
"value": 0.928126
},
{
"basis": "actual",
"dataset": "WEO",
"formatted": "0.9",
"found": true,
"is_projection": false,
"period": "2025",
"period_label": "2025",
"statistic": "inflation",
"statistic_label": "Inflation",
"summary": "How much consumer prices rose, averaged over the year.",
"unit": "percent a year",
"value": 0.926027
}
],
"updated_at": "2026-04-15T13:00:00Z"
}Get a dataset's details
Everything you need to query one dataset: what it holds, the filters it is keyed by in the order the key wants them, how many values each of those accepts and a few examples of each, how often it reports, how many economies it covers, when it was last updated and how the IMF asks to be cited. Run this before 'Get data from a dataset' and the filter boxes stop being guesswork.
Inputs
- Dataset
datasettextRequired - Which of the IMF's datasets to read. The list holds the hundred or so the IMF maintains; the dated archive copies are not in it but can be typed in by code. A value from an earlier step can be the code ('WEO'), the full reference ('IMF.RES:WEO') or the dataset's name. Use 'Find a dataset' to search the catalogue by words.
Outputs
agencytext- The IMF department that publishes it
citationtext- How the IMF asks to be cited
contacttext- Where the IMF takes questions about it
country_countnumber- How many economies it covers, 0 when it is not by country
datasettext- The dataset's code
descriptiontext- What it holds
doitext- Its DOI, when it has one
filter_countnumber- How many filters that is
filterslist- Every filter it is keyed by, in key order
frequencieslist- How often the dataset reports
is_archivedtrue/false- True for a dated copy rather than the maintained dataset
licensetext- The terms it is published under
nametext- Its name
published_attext- When it was first published
referencetext- Its full IMF reference
sourcetext- Who compiled the figures
updated_attext- When it was last updated
urltext- Where to read it on the IMF's site
versiontext- The version the IMF is serving
Example output
{
"agency": "IMF.STA",
"citation": "",
"contact": "help@data.imf.org",
"country_count": 227,
"dataset": "ER",
"description": "This dataset contains historical exchange rate data between the US Dollar, Special Drawing Rights (SDR), Euro, and various national currencies. It includes both period average and end-of-period exchange rates.",
"doi": "",
"filter_count": 4,
"filters": [
{
"description": "The country or region for which the data or statistics in a resource are collected or reported.",
"examples": [
{
"label": "Aruba, Kingdom of the Netherlands",
"value": "ABW"
},
{
"label": "Afghanistan, Islamic Republic of",
"value": "AFG"
}
],
"filter": "COUNTRY",
"label": "Country",
"position": 1,
"value_count": 227
},
{
"description": "A variable that sheds light on some phenomenon or situation.",
"examples": [
{
"label": "ECU per domestic currency",
"value": "ECU_XDC"
},
{
"label": "Euros per domestic currency",
"value": "EUR_XDC"
}
],
"filter": "INDICATOR",
"label": "Indicator",
"position": 2,
"value_count": 10
}
],
"frequencies": [
{
"label": "Annual",
"value": "A"
},
{
"label": "Monthly",
"value": "M"
}
],
"is_archived": false,
"license": "",
"name": "Exchange Rates (ER)",
"published_at": "2026-09-13T05:27:54.901815100Z",
"reference": "IMF.STA:ER",
"source": "",
"updated_at": "2026-09-13T05:27:54.936239700Z",
"url": "https://data.imf.org/en/datasets/IMF.STA:ER",
"version": "4.0.1"
}Get a time series
Follow one series from any IMF dataset through time. Every point carries the change and the percentage change on the one before, and the result carries the highest, the lowest, the average and the change across the whole period - so a chart or a trend alert needs no arithmetic of its own. Where the figures are already percentages the change is given in points instead, because the percentage change between two percentages is not a number anybody wants. The filters have to pin the dataset down to a single series; if they do not, the step says which box is still open. Covers the last 24 periods unless you set dates.
Inputs
- Dataset
datasettextRequired - Which of the IMF's datasets to read. The list holds the hundred or so the IMF maintains; the dated archive copies are not in it but can be typed in by code. A value from an earlier step can be the code ('WEO'), the full reference ('IMF.RES:WEO') or the dataset's name. Use 'Find a dataset' to search the catalogue by words.
- Filters
filtersobject - One box per filter of the chosen dataset, filled in with the IMF's own codes - COUNTRY=USA, INDICATOR=NGDP_RPCH, FREQUENCY=A. Use 'List a filter's values' to see what a box accepts, and separate several codes with commas. A box left blank returns every value that filter has, which can be hundreds, so filling in the ones you care about is what keeps a step quick.
- From
from_datedate - The earliest date to cover. The IMF reports in whole periods - a year, a quarter, a month - so this is read as the period that contains the date rather than as the day itself. Left empty, a step returns the recent part of the series rather than all of it, because a monthly one runs back to the 1950s and eight hundred figures is rarely what was wanted; set a date here to reach the whole history.
- To
to_datedate - The latest date to cover, read as the period that contains it. Leave it empty to run to the end of the series, which for a World Economic Outlook figure is several years of IMF projections.
Outputs
averagenumber- The mean across the range
changenumber- The last figure less the first
citationtext- How the IMF asks to be cited
countnumber- How many periods came back
datasettext- The dataset that was read
dataset_nametext- That dataset's name
dataset_urltext- Where to read it on the IMF's site
filters_appliedobject- The filters that pinned the series down
first_periodtext- The earliest period
first_valuenumber- The figure at the start
highestobject- The highest point in the range
is_percenttrue/false- True when the figures are themselves percentages
keytext- The key that was asked for, in the IMF's own notation
last_periodtext- The latest period
latestobject- The most recent point
lowestobject- The lowest point in the range
percent_changenumber- That difference as a percentage. Empty when the series is already a percentage
pointslist- The series, oldest first
projection_countnumber- How many of these points are IMF forecasts
scalenumber- The exponent the IMF prints these figures in
series_nametext- What the series is, named by the IMF or by its filters
sourcetext- Who compiled the figures
unittext- The IMF's unit code for it
Example output
{
"average": 7.583333400000001,
"change": -0.641667,
"citation": "International Monetary Fund. World Economic Outlook (WEO), https://data.imf.org/en/datasets/IMF.RES:WEO. Accessed on [current date].",
"count": 5,
"dataset": "WEO",
"dataset_name": "World Economic Outlook (WEO)",
"dataset_url": "https://data.imf.org/en/datasets/IMF.RES:WEO",
"filters_applied": {
"COUNTRY": "FRA",
"FREQUENCY": "A",
"INDICATOR": "LUR"
},
"first_period": "2020",
"first_value": 8.025,
"highest": {
"change": null,
"formatted": "8.03",
"is_projection": false,
"percent_change": null,
"period": "2020",
"period_end": "2020-12-31",
"period_label": "2020",
"period_start": "2020-01-01",
"value": 8.025
},
"is_percent": false,
"key": "FRA.LUR.A",
"last_period": "2024",
"latest": {
"change": 0.0416660000000002,
"formatted": "7.38",
"is_projection": false,
"percent_change": 0.5675,
"period": "2024",
"period_end": "2024-12-31",
"period_label": "2024",
"period_start": "2024-01-01",
"value": 7.383333
},
"lowest": {
"change": -0.5666669999999998,
"formatted": "7.30",
"is_projection": false,
"percent_change": -7.2034,
"period": "2022",
"period_end": "2022-12-31",
"period_label": "2022",
"period_start": "2022-01-01",
"value": 7.3
},
"percent_change": -7.9959,
"points": [
{
"change": null,
"formatted": "8.03",
"is_projection": false,
"percent_change": null,
"period": "2020",
"period_end": "2020-12-31",
"period_label": "2020",
"period_start": "2020-01-01",
"value": 8.025
},
{
"change": -0.15833300000000072,
"formatted": "7.87",
"is_projection": false,
"percent_change": -1.973,
"period": "2021",
"period_end": "2021-12-31",
"period_label": "2021",
"period_start": "2021-01-01",
"value": 7.866667
}
],
"projection_count": 0,
"scale": 0,
"series_name": "Unemployment rate",
"source": "IMF staff calculations.",
"unit": ""
}Get an economic statistic
Get one of twenty-six headline IMF statistics for a country and follow it through time - GDP and its growth, inflation, unemployment, government debt and deficit, the current account, population, the exchange rate. Pick the statistic and the country by name; the IMF dataset and its codes are already filled in. The World Economic Outlook forecasts five years ahead in the same column as its measurements, so every figure says which it is and the result carries the latest actual separately. No account or API key required.
Inputs
- Statistic
statistictext - Which figure to read. These are the twenty-six headline statistics the IMF is asked for most, and the dataset and codes behind each one are already filled in. GDP growth by default. For anything else the IMF publishes - trade by partner country, financial soundness, reserves - use 'Get data from a dataset'.One of:
gdp_growth(GDP growth (percent a year)),gdp(GDP (US dollars)),gdp_per_person(GDP per person (US dollars a person)),gdp_ppp(GDP at purchasing-power parity (international dollars)),gdp_per_person_ppp(GDP per person at purchasing-power parity (international dollars a person)),share_of_world_gdp(Share of world GDP (percent of world GDP)),output_gap(Output gap (percent of potential GDP)),inflation(Inflation (percent a year)),inflation_end_of_year(Inflation at the end of the year (percent a year)),inflation_monthly(Inflation, monthly (percent a year)), and 16 more. Default:gdp_growth. - Country
countrytext - Which economy to read. The list holds every country the IMF reports on, followed by the groups it aggregates - the world, the euro area, the G7. A value from an earlier step can be the country's name ('Japan'), either of its ISO codes ('JP' or 'JPN'), or the name a person would say rather than the IMF's formal one ('South Korea' finds 'Korea, Republic of'). The United States by default.Default:
USA. - From
from_datedate - The earliest date to cover. The IMF reports in whole periods - a year, a quarter, a month - so this is read as the period that contains the date rather than as the day itself. Left empty, a step returns the recent part of the series rather than all of it, because a monthly one runs back to the 1950s and eight hundred figures is rarely what was wanted; set a date here to reach the whole history.
- To
to_datedate - The latest date to cover, read as the period that contains it. Leave it empty to run to the end of the series, which for a World Economic Outlook figure is several years of IMF projections.
- Include IMF forecasts
include_projectionstrue/false - On by default, because the IMF's forecasts are much of why people read the World Economic Outlook and each one is marked as a forecast. Turn it off to keep only what has actually been measured, which is what a chart of history wants.Default:
true.
Outputs
actual_countnumber- How many of these are measurements
citationtext- How the IMF asks to be cited
countnumber- How many periods came back
countrytext- The IMF's code for the economy, such as JPN
country_labeltext- That economy's name
covers_recent_onlytrue/false- True when no dates were given, so this is the recent part of the series rather than all of it. Set a From date for more
datasettext- The IMF dataset the figures came from
dataset_urltext- Where to read the same dataset on the IMF's site
first_periodtext- The earliest period
frequencytext- How often it is reported: Annual, Quarterly or Monthly
has_projectionstrue/false- True when the series runs past the last actual
last_periodtext- The latest period
latestobject- The last point, forecast or actual
latest_actualobject- The last point the IMF reports as measured, empty when every figure in the range is a forecast
observationslist- The series, oldest first
projection_countnumber- How many of these are IMF forecasts
sourcetext- Who compiled the figures
statistictext- The statistic that was read
statistic_labeltext- Its name
unittext- What the figures are in, such as percent of GDP
updated_attext- When the IMF last published this dataset
Example output
{
"actual_count": 3,
"citation": "International Monetary Fund. World Economic Outlook (WEO), https://data.imf.org/en/datasets/IMF.RES:WEO. Accessed on [current date].",
"count": 4,
"country": "FRA",
"country_label": "France",
"covers_recent_only": false,
"dataset": "WEO",
"dataset_url": "https://data.imf.org/en/datasets/IMF.RES:WEO",
"first_period": "2023",
"frequency": "Annual",
"has_projections": true,
"last_period": "2026",
"latest": {
"basis": "projection",
"formatted": "0.9",
"is_projection": true,
"period": "2026",
"period_end": "2026-12-31",
"period_label": "2026",
"period_start": "2026-01-01",
"value": 0.858141,
"year": 2026
},
"latest_actual": {
"basis": "actual",
"formatted": "0.9",
"is_projection": false,
"period": "2025",
"period_end": "2025-12-31",
"period_label": "2025",
"period_start": "2025-01-01",
"value": 0.928126,
"year": 2025
},
"observations": [
{
"basis": "actual",
"formatted": "1.6",
"is_projection": false,
"period": "2023",
"period_end": "2023-12-31",
"period_label": "2023",
"period_start": "2023-01-01",
"value": 1.62017,
"year": 2023
},
{
"basis": "actual",
"formatted": "1.1",
"is_projection": false,
"period": "2024",
"period_end": "2024-12-31",
"period_label": "2024",
"period_start": "2024-01-01",
"value": 1.106862,
"year": 2024
}
],
"projection_count": 1,
"source": "IMF staff calculations.",
"statistic": "gdp_growth",
"statistic_label": "GDP growth",
"unit": "percent a year",
"updated_at": "2026-04-15T13:00:00Z"
}Get data from a dataset
Get figures from any IMF dataset. Name the dataset and its filters appear as boxes, labelled the way the IMF labels them. Comes back as figures to loop over - each carrying every filter in both code and words - and as a table ready to append to a spreadsheet, and it says which boxes you left open. A request that would select thousands of series is refused before it is sent, naming the box to fill in.
Inputs
- Dataset
datasettextRequired - Which of the IMF's datasets to read. The list holds the hundred or so the IMF maintains; the dated archive copies are not in it but can be typed in by code. A value from an earlier step can be the code ('WEO'), the full reference ('IMF.RES:WEO') or the dataset's name. Use 'Find a dataset' to search the catalogue by words.
- Filters
filtersobject - One box per filter of the chosen dataset, filled in with the IMF's own codes - COUNTRY=USA, INDICATOR=NGDP_RPCH, FREQUENCY=A. Use 'List a filter's values' to see what a box accepts, and separate several codes with commas. A box left blank returns every value that filter has, which can be hundreds, so filling in the ones you care about is what keeps a step quick.
- From
from_datedate - The earliest date to cover. The IMF reports in whole periods - a year, a quarter, a month - so this is read as the period that contains the date rather than as the day itself. Left empty, a step returns the recent part of the series rather than all of it, because a monthly one runs back to the 1950s and eight hundred figures is rarely what was wanted; set a date here to reach the whole history.
- To
to_datedate - The latest date to cover, read as the period that contains it. Leave it empty to run to the end of the series, which for a World Economic Outlook figure is several years of IMF projections.
- Number of records
limitnumber - Optional. How many records to return. Between 1 and 500; 25 by default.From 1 to 500. Default:
25. - Skip
offsetnumber - Optional. How many matching records to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default:
0.
Outputs
citationtext- How the IMF asks to be cited
countnumber- How many are on this page
covers_recent_onlytrue/false- True when no dates were given, so these are the recent periods rather than the dataset's whole history. Set a From date for more
datasettext- The dataset that was read
dataset_nametext- That dataset's name
dataset_urltext- Where to read it on the IMF's site
figureslist- The figures, oldest first. Each one also carries one field per filter of the dataset, in lower case, plus the same name with '_label' for the words behind the code
filters_appliedobject- The filters that were sent to the IMF
first_periodtext- The earliest period matched
has_moretrue/false- True when more matched than this page holds
keytext- The key that was asked for, in the IMF's own notation
last_periodtext- The latest period matched
next_offsetnumber- The offset that returns the next page
open_filterslist- The filters left blank, which is why a result is larger than expected. Fill these in to narrow it
sourcetext- Who compiled the figures
tableobject- The same figures ready to append to a spreadsheet
total_countnumber- How many matched in all
updated_attext- When the IMF last published this dataset
Example output
{
"citation": "International Monetary Fund. World Economic Outlook (WEO), https://data.imf.org/en/datasets/IMF.RES:WEO. Accessed on [current date].",
"count": 5,
"covers_recent_only": false,
"dataset": "WEO",
"dataset_name": "World Economic Outlook (WEO)",
"dataset_url": "https://data.imf.org/en/datasets/IMF.RES:WEO",
"figures": [
{
"country": "FRA",
"country_label": "France",
"formatted": "8.03",
"frequency": "A",
"frequency_label": "Annual",
"indicator": "LUR",
"indicator_label": "Unemployment rate",
"is_projection": false,
"period": "2020",
"period_end": "2020-12-31",
"period_label": "2020",
"period_start": "2020-01-01",
"series_name": "Unemployment rate",
"status": "",
"unit": "",
"value": 8.025
},
{
"country": "FRA",
"country_label": "France",
"formatted": "7.87",
"frequency": "A",
"frequency_label": "Annual",
"indicator": "LUR",
"indicator_label": "Unemployment rate",
"is_projection": false,
"period": "2021",
"period_end": "2021-12-31",
"period_label": "2021",
"period_start": "2021-01-01",
"series_name": "Unemployment rate",
"status": "",
"unit": "",
"value": 7.866667
}
],
"filters_applied": {
"COUNTRY": "FRA",
"FREQUENCY": "A",
"INDICATOR": "LUR"
},
"first_period": "2020",
"has_more": false,
"key": "FRA.LUR.A",
"last_period": "2024",
"next_offset": null,
"open_filters": [],
"source": "IMF staff calculations.",
"table": {
"headers": [
"Period",
"Country",
"Indicator",
"Frequency",
"Value"
],
"rows": [
[
"2020",
"France",
"Unemployment rate",
"Annual",
8.025
],
[
"2021",
"France",
"Unemployment rate",
"Annual",
7.866667
]
]
},
"total_count": 5,
"updated_at": "2026-04-15T13:00:00Z"
}Get the latest figure
Get the most recent value of one IMF statistic for one country, returned flat so a later step can read the number, the period and the change on the period before without indexing into a list. Answers 'what is inflation in Brazil' in one step. Because the IMF publishes forecasts beside measurements, this returns the latest measurement by default and will only hand back a forecast if you ask it to.
Inputs
- Statistic
statistictext - Which figure to read. These are the twenty-six headline statistics the IMF is asked for most, and the dataset and codes behind each one are already filled in. GDP growth by default. For anything else the IMF publishes - trade by partner country, financial soundness, reserves - use 'Get data from a dataset'.One of:
gdp_growth(GDP growth (percent a year)),gdp(GDP (US dollars)),gdp_per_person(GDP per person (US dollars a person)),gdp_ppp(GDP at purchasing-power parity (international dollars)),gdp_per_person_ppp(GDP per person at purchasing-power parity (international dollars a person)),share_of_world_gdp(Share of world GDP (percent of world GDP)),output_gap(Output gap (percent of potential GDP)),inflation(Inflation (percent a year)),inflation_end_of_year(Inflation at the end of the year (percent a year)),inflation_monthly(Inflation, monthly (percent a year)), and 16 more. Default:gdp_growth. - Country
countrytext - Which economy to read. The list holds every country the IMF reports on, followed by the groups it aggregates - the world, the euro area, the G7. A value from an earlier step can be the country's name ('Japan'), either of its ISO codes ('JP' or 'JPN'), or the name a person would say rather than the IMF's formal one ('South Korea' finds 'Korea, Republic of'). The United States by default.Default:
USA. - What counts as the latest
basistext - The World Economic Outlook publishes forecasts five years ahead in the same column as the measurements, so 'the latest figure' is ambiguous and this settles it. By default the latest actual is returned, because a number presented as a measurement should be one. Switch to include forecasts when the question really is what the IMF expects. Either way each figure says which it is.One of:
actual(Only figures the IMF reports as actual),any(The latest figure, forecast or actual). Default:actual.
Outputs
basistext- 'actual' or 'projection'
changenumber- This figure less the one before it
citationtext- How the IMF asks to be cited
countrytext- The IMF's code for the economy
country_labeltext- That economy's name
datasettext- The dataset it came from
dataset_urltext- Where to read the same dataset on the IMF's site
formattedtext- The figure written out, scaled the way the IMF prints it
is_projectiontrue/false- True when this is an IMF forecast rather than a measurement
periodtext- The period it belongs to
period_labeltext- That period for people
previous_periodtext- The period that figure belongs to
previous_valuenumber- The figure for the period before, empty when there is none
sourcetext- Who compiled the figures
statistictext- The statistic that was read
statistic_labeltext- Its name
unittext- What the figure is in
updated_attext- When the IMF last published this dataset
valuenumber- The figure itself
yearnumber- The calendar year it falls in
Example output
{
"basis": "actual",
"change": -1.390609,
"citation": "International Monetary Fund. World Economic Outlook (WEO), https://data.imf.org/en/datasets/IMF.RES:WEO. Accessed on [current date].",
"country": "FRA",
"country_label": "France",
"dataset": "WEO",
"dataset_url": "https://data.imf.org/en/datasets/IMF.RES:WEO",
"formatted": "0.9",
"is_projection": false,
"period": "2025",
"period_label": "2025",
"previous_period": "2024",
"previous_value": 2.316636,
"source": "IMF staff calculations.",
"statistic": "inflation",
"statistic_label": "Inflation",
"unit": "percent a year",
"updated_at": "2026-04-15T13:00:00Z",
"value": 0.926027,
"year": 2025
}List a filter's values
List the codes one filter of one dataset accepts, each with the words behind it, so a filter box can be filled in rather than guessed at. The IMF shares its code lists across datasets - the country list has 343 entries and no single dataset covers them all - so the values this dataset actually holds figures for come first and every row says which it is. Search by words to find one in a list of hundreds.
Inputs
- Dataset
datasettextRequired - Which of the IMF's datasets to read. The list holds the hundred or so the IMF maintains; the dated archive copies are not in it but can be typed in by code. A value from an earlier step can be the code ('WEO'), the full reference ('IMF.RES:WEO') or the dataset's name. Use 'Find a dataset' to search the catalogue by words.
- Filter
filter_nametextRequired - Which of the dataset's filters to list. The list fills in once a dataset is chosen. 'Get a dataset's details' shows them all at once with their sizes.
- Search
searchtext - Only the entries containing this text. Capitals, accents and punctuation are ignored. Leave it empty for everything.
- Number of records
limitnumber - Optional. How many records to return. Between 1 and 500; 25 by default.From 1 to 500. Default:
25. - Skip
offsetnumber - Optional. How many matching records to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default:
0.
Outputs
countnumber- How many are on this page
datasettext- The dataset it belongs to
dataset_nametext- That dataset's name
filtertext- The filter that was listed
filter_labeltext- What the IMF calls it
has_moretrue/false- True when more matched than this page holds
next_offsetnumber- The offset that returns the next page
searchtext- The text that was searched for
total_countnumber- How many matched in all
urltext- Where to read the dataset on the IMF's site
valueslist- The values, the ones with figures first
with_data_countnumber- How many of them this dataset has figures for
Example output
{
"count": 3,
"dataset": "ER",
"dataset_name": "Exchange Rates (ER)",
"filter": "INDICATOR",
"filter_label": "Indicator",
"has_more": true,
"next_offset": 3,
"search": "",
"total_count": 10,
"url": "https://data.imf.org/en/datasets/IMF.STA:ER",
"values": [
{
"description": "Domestic currency per ECU",
"has_data": true,
"label": "Domestic currency per ECU",
"value": "XDC_ECU"
},
{
"description": "Domestic currency per Euro",
"has_data": true,
"label": "Domestic currency per Euro",
"value": "XDC_EUR"
}
],
"with_data_count": 10
}