+Exchange Rates API
Latest and historical exchange rates, currency conversion and time series from ECB reference rates, as clean JSON.
The API.SH Exchange Rates API returns rates for any base currency, latest or on a past date back to 1999. It combines about 30 European Central Bank reference currencies, published each working day around 16:00 CET, with about 115 more African, Asian and Latin American currencies from the National Bank of Poland's weekly table, crossed through the euro. Convert an amount at today's or a past day's rate, pull daily, monthly or annual time series, and list every supported currency with the countries that use it. Each rate comes with its date and source.
- 4 endpoints
- from $1 / 1,000 calls
- 1,000 free credits / month
- failed calls free
GET https://api.api.sh/fx/v1/ convert
{ "success": true } What you can build with the Exchange Rates API
Invoicing and accounting
Convert an invoice amount at the rate for its date, with the rate date and source recorded, so bookkeeping uses a published reference rate.
Multi-currency prices in a store
Fetch the latest rates for your base currency once a day and show prices in your customers' currencies.
Historical charts and reports
Pull daily rates for up to 10 years per call, or monthly and annual averages over up to 30 years, to chart a currency pair or report average rates for a period.
Spreadsheets and no-code tools
Fill a Google Sheet or a Zapier, Make or n8n workflow with rates or converted amounts without writing code.
Currency pickers
List every currency with a current rate, its name, the countries that use it and whether history is available, to build a currency selector.
Exchange Rates data you get
Field names from real responses. Numbers come parsed, URLs absolute, dates in ISO 8601.
Exchange Rates API endpoints and prices
Every Exchange Rates endpoint costs 1 credit per call: credits are $1 per 1,000 on a monthly plan, $2 pay-as-you-go. Pricing
| Exchange rate history /fx/ | $1 · $2 PAYG 1 credit |
| Currency conversion /fx/ | $1 · $2 PAYG 1 credit |
| Supported currencies /fx/ | $1 · $2 PAYG 1 credit |
| Exchange rates /fx/ | $1 · $2 PAYG 1 credit |
Call the Exchange Rates API
Currency conversion: GET https://api.api.sh/fx/
curl "https://api.api.sh/fx/v1/convert?from=USD&to=EUR" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/fx/v1/convert",
params={"from": "USD", "to": "EUR"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/fx/v1/convert");
url.searchParams.set("from", "USD");
url.searchParams.set("to", "EUR");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); # Google Sheets (API.SH add-on)
=APISH("/fx/v1/convert", "from", "USD", "to", "EUR")
# Zapier, Make, n8n (verified node): pick the API.SH app,
# choose "Exchange Rates" and "Currency conversion".
# AI agents (Claude, ChatGPT, Cursor): add the
# API.SH MCP server https://api.sh/mcp - Create a free accountConfirm your email and get 1,000 free credits every month. No card needed.
- Create an API keyOne key works for all 483 platforms.
- Send the requestJSON back in one call. Add
output=csvoroutput=ndjsonfor files.
Why API.SH for Exchange Rates data
- Public data only: no Exchange Rates login, cookies or account needed
- One key and one response shape for Exchange Rates and 482 other platforms
- Built and maintained by API.SH, not third-party publishers
- Pay per call; errors on our side cost nothing
- Live status for every endpoint
API.SH vs the official Exchange Rates API
The European Central Bank publishes its reference rates for free, and free APIs built on them exist, such as Frankfurter, which needs no key. API.SH adds the National Bank of Poland's weekly table for currencies the ECB does not cover, shows the source and date of every rate, and puts it behind the same key and JSON shape as every other API.SH endpoint.
Providers such as ExchangeRate-API, exchangeratesapi.io, Open Exchange Rates, Fixer and currencyapi sell monthly plans, often with intraday updates and crypto. API.SH is pay-per-call with official reference rates; choose it for daily and historical rates, not for live trading quotes.
Exchange Rates API questions
What exchange rate data can I get?+
Latest or historical rates for any base currency (/fx/v1/rates), conversion of an amount at the latest or a past day's rate (/fx/v1/convert), daily, monthly or annual time series since 1999 (/fx/v1/history) and the list of supported currencies with their sources and countries (/fx/v1/currencies).
How much does the Exchange Rates API cost?+
Every Exchange Rates endpoint costs 1 credit per call. On a monthly plan 1,000 credits cost $1 (Starter is $50/month for 50,000 credits). Pay-as-you-go is $2 per 1,000 credits, with top-ups from $15 that never expire.
Is there a free exchange rates API?+
Yes. Every account gets 1,000 free credits every month. That is 1,000 calls to /fx/v1/convert at 1 credit each. Free ECB-based APIs such as Frankfurter also exist; API.SH adds the extra currencies from the National Bank of Poland's table and the same key you use for other data.
Where does the data come from?+
From the European Central Bank's reference rates (about 30 currencies, each working day) and the National Bank of Poland's weekly table for about 115 more currencies, crossed through the euro. Each rate in the response names its source.
Do I need keys for the underlying sources?+
No. One API.SH key covers every exchange rate route. The sources themselves need no registration either.
Are the rates real-time?+
No. They are official reference rates: ECB rates update each working day around 16:00 CET and the National Bank of Poland table weekly. Use them for pricing, accounting and reports, not for trading.
Can I get historical exchange rates by date?+
Yes. Pass date to /fx/v1/rates or /fx/v1/convert for any day since 1999; you get the last publication on or before that date. For ranges, /fx/v1/history returns daily, monthly or annual series for ECB reference currencies.
How do I get started?+
1. Sign up at api.sh. 2. Copy your API key. 3. Call /fx/v1/convert with from=USD, to=EUR and amount=100. Request examples and every parameter are in the docs at https://api.sh/docs. You can also use the JS or Python SDK, Google Sheets, Zapier, Make, n8n or the MCP server at https://api.sh/mcp.