Exchange Rate API

Exchange rate API with real-time mid-market rates for 160+ currencies and the official published tables of 100+ central banks and tax authorities. Keyless endpoint for official rates, free key for live rates, JSON, CSV, XML and XLSX.

One exchange rate API, two kinds of rate. Real-time mid-market rates for 160+ currencies, and the official tables published by 100+ central banks and tax authorities. The official-rate endpoint needs no key at all. Run the first request below.

Quick start, no key

Every institution's latest published table is open. This asks the European Central Bank's reference table for EUR to USD:

curl "https://allratestoday.com/api/open/central-bank/ecb?source=EUR&target=USD"
{
  "bank": "ecb",
  "rate_date": "2026-09-02",
  "source": "EUR",
  "target": "USD",
  "rate": 1.1578,
  "rate_type": "reference",
  "derived": false,
  "method": "published"
}

Swap ecb for fed, boe, rbi, pboc, hmrc or any of the 100+ sources. The response says whether the pair was published directly or derived, and on which date, which is what an invoice or a tax return needs to cite.

Real-time rates, free key

Market rates need a free API key (email, Google or GitHub, no card). One call can quote several targets:

curl "https://allratestoday.com/api/v1/rates?source=USD&target=EUR,GBP,JPY" \
  -H "Authorization: Bearer art_live_your_key"
[
  { "source": "USD", "target": "EUR", "rate": 0.863707, "time": "2026-09-02T14:00:00Z" },
  { "source": "USD", "target": "GBP", "rate": 0.737735, "time": "2026-09-02T14:00:00Z" },
  { "source": "USD", "target": "JPY", "rate": 146.912,  "time": "2026-09-02T14:00:00Z" }
]

From JavaScript:

// Official rate, no key
const ecb = await fetch("https://allratestoday.com/api/open/central-bank/ecb?source=EUR&target=USD")
  .then(r => r.json());

// Live rate, free key
const live = await fetch("https://allratestoday.com/api/v1/rates?source=USD&target=EUR", {
  headers: { Authorization: "Bearer art_live_your_key" }
}).then(r => r.json());

From Python:

import requests

official = requests.get(
    "https://allratestoday.com/api/open/central-bank/hmrc",
    params={"source": "GBP", "target": "USD"},
).json()                                   # HMRC monthly rate, no key

live = requests.get(
    "https://allratestoday.com/api/v1/rates",
    params={"source": "USD", "target": "EUR"},
    headers={"Authorization": "Bearer art_live_your_key"},
).json()[0]

Official SDKs exist for JavaScript, Python, PHP, Go and Rust, plus an MCP server for AI agents.

Endpoints

EndpointReturnsKey
/api/open/central-bank/{bank}An institution's latest published table, or one pair from itNone
/api/open/central-banksEvery source with its latest publication date and freshnessNone
/api/v1/ratesReal-time mid-market rate for one or many pairs; add time= for a past dateFree
/api/v1/symbolsThe 160+ supported currencies with namesFree
/api/v1/central-bank/{bank}/{date}The official table in force on a date, with weekend and holiday fallbackPaid
/api/v1/central-bank/{bank}/historyA daily series for one pair over a date rangePaid

Any table endpoint returns CSV, XML or Excel with &format=csv|xml|xlsx. The full reference is in the documentation and the OpenAPI spec.

What makes an exchange rate API trustworthy

Rates are easy to serve and hard to stand behind. Three things separate a number you can use from a number you can cite:

How it compares

Provider Real-time rates Official central bank tables Tax authorities Keyless access CSV / XML / XLSX
AllRatesToday 60-second 100+ institutions HMRC, US Treasury, Swiss customs Official rates Yes
ExchangeRate-APIDaily on free, hourly on paidBlended, not per institutionNoYes, dailyNo
Open Exchange RatesHourly on freeNoNoNoNo
Fixer.ioDaily on free, EUR base onlyNoNoNoNo
FrankfurterNo, daily fixings only84 institutionsNoYesNo

Details and caveats for each are in the alternatives guides and the state of exchange rate APIs in 2026.

What it is used for

Frequently asked questions

What is an exchange rate API?

A web service that returns currency exchange rates as data, usually JSON, so software can convert amounts, display prices, or record rates without a person looking them up. This one serves both real-time market rates and the official rates institutions publish.

Is it free?

The official central bank endpoint is free with no key. Real-time rates need a free key with a request quota. Historical data, higher volumes and commercial use are in the paid plans.

How often are rates updated?

Market rates every 60 seconds. Official tables as each institution publishes, usually once per business day, and the response always carries the publication date.

Market rate or official rate?

Pricing and conversion use the market rate. Invoices, tax returns, customs declarations and audits usually require the official rate a named institution published for the date. The API serves both, and never labels one as the other.

Historical rates?

Yes: time= on the rates endpoint for market history, and the date and history endpoints for official tables, reaching back decades for many institutions.

Start with the exchange rate API

Official rates need no key. Live rates need a free one, no card.

Get Free API Key Read the Docs