IMF Exchange Rate API: Representative Rates and SDR Values as JSON
The International Monetary Fund is not a central bank, but it publishes one of the most useful official exchange-rate tables there is: the rate each member's central bank reports to the Fund every business day, side by side, plus every currency's value in SDRs. AllRatesToday lists it with the central banks and serves it on the same endpoints, under the source code imf. This guide shows how to pull it as JSON — via REST or the zero-dependency imf-exchange-rate npm package.
What the IMF publishes
- Representative exchange rates for about 35 currencies — the rate each issuing central bank reports to the Fund as representative of its currency against the US dollar. On the table dated 26 October 2026: 6.6683 yuan, 157.20 yen and 95.15 rupees per dollar.
- Two quoting conventions in one table — most currencies as units per US dollar, but the euro, pound sterling, Australian and New Zealand dollars and the Botswana pula as dollars per unit (EUR/USD 1.1188 and GBP/USD 1.33475 that day), exactly as the IMF prints them.
- Each currency's value in SDRs — the Special Drawing Right is the IMF's own reserve asset. One US dollar was worth 0.738108 SDR on 26 October 2026, one euro 0.825795 SDR, one yuan 0.110689 SDR.
- Daily history from April 2003 — more than 5,800 business days, from the IMF's online monthly archive.
The coverage is the IMF's selection, not the whole world: the reserve currencies, the large emerging markets (yuan, rupee, real, peso, won, ringgit, baht) and the Gulf currencies, plus smaller members such as the Mauritian rupee, Trinidad and Tobago dollar and Uruguayan peso. For a currency the table leaves out, use that country's own central bank.
Why use the IMF table
Most official rates answer a national question — what rate does this country's customs or tax office require? The IMF table answers an international one: what did each central bank report, on the same day, against the same anchor? That makes it a natural neutral source for multi-country reporting, intercompany pricing across several jurisdictions, academic and economic research, and anything denominated in SDRs — IMF quotas, charges and loans, and the many treaties and contracts that use the SDR as their unit of account.
It is still an official rate, not a market price. A live mid-market feed answers "what is USD/CNY trading at right now?" — the right tool for checkouts and dashboards. The IMF table records what the central banks reported for the day, and it does not change after publication.
Get the latest rates (REST)
curl "https://allratestoday.com/api/v1/central-bank/imf/latest?source=USD&target=CNY" \
-H "Authorization: Bearer YOUR_API_KEY" Leave out source and target to get the full table: every dollar rate and every SDR value, with the IMF's own publication date on each row. The latest table is available on every plan, including the free tier (no credit card). The value is always quote currency per one unit of base, so USD → CNY reads yuan per dollar, EUR → USD reads dollars per euro, and CNY → XDR reads SDRs per yuan.
The npm SDK
npm install imf-exchange-rate import { getRate, getLatestRates } from 'imf-exchange-rate';
// One pair from the IMF's latest representative table
const pair = await getRate('USD', 'CNY', { apiKey: 'art_live_...' });
console.log(pair.rate, pair.rate_date);
// A currency's value in SDRs
const sdr = await getRate('EUR', 'XDR', { apiKey: 'art_live_...' });
// The full published table
const table = await getLatestRates({ apiKey: 'art_live_...' });
console.log(table.rate_date, table.rates.length); Zero dependencies, TypeScript types included, and it runs anywhere fetch exists — Node 18+, Bun, Deno, and edge runtimes.
Historical rates for a past date
import { getRatesForDate, getHistory } from 'imf-exchange-rate';
// The IMF table for a past date — weekends and IMF holidays return the most
// recent published date, flagged via published_on_requested_date.
const day = await getRatesForDate('2008-07-15', { apiKey: 'art_live_...' });
// Daily series for one pair
const series = await getHistory(
{ source: 'USD', target: 'XDR', from: '2026-01-01' },
{ apiKey: 'art_live_...' }
); Historical dates and time series need a paid plan; the latest table stays free.
Published vs derived pairs
The IMF prints each currency against the dollar and against the SDR, nothing else. Ask for a pair it does not print — say EUR to JPY, or USD per euro the other way round — and the API resolves it from the IMF's own table, through the dollar, and flags the result derived: true with the method used. Official and computed values are never silently mixed.
Twenty-three years of the table
The archive starts on 1 April 2003, when the IMF table had the yuan at 8.2773 per dollar — still on its peg — the euro at 1.0891 dollars and the yen at 118.27. It runs through the end of the yuan peg in 2005, the euro's July 2008 peak above 1.59 dollars, and the 2020 and 2022 dollar spikes, to a table that put the yuan at 6.67 in October 2026. A handful of currencies come and go over that span as the IMF changed its selection — the Venezuelan bolívar fuerte and soberano, the Iranian rial, the Kazakhstani tenge and the Nepalese rupee all appear in the older tables — and the API keeps each one under its ISO code for the dates the IMF printed it.
FAQ
Does the IMF have an exchange rate API?
The IMF publishes its representative exchange rates and SDR values as monthly web pages and TSV files, not as a JSON API. AllRatesToday collects those tables every business day and serves them as JSON under the source code imf, via REST or the imf-exchange-rate npm package. The latest table is free; historical dates need a paid plan.
What is an IMF representative exchange rate?
It is the rate a member country's central bank reports to the IMF each business day as representative of its currency against the US dollar. Most are quoted as currency units per dollar; the euro, pound, Australian and New Zealand dollars and the pula are quoted as dollars per unit.
How far back does the IMF exchange rate history go?
Daily from 1 April 2003, the start of the IMF's online monthly archive — more than 5,800 business days for both the dollar table and the SDR values.
Is the IMF table the same as a central bank's own rate?
It is what the central bank reported to the Fund, so it usually matches the bank's own reference rate for the day. If a filing rule names a specific central bank, use that bank's own table — AllRatesToday serves more than 120 of them on the same endpoints.
IMF representative rates and SDR values, as JSON
The latest table is free — no credit card.
Get your free API key