Most exchange rate APIs give you one number per currency pair. AllRatesToday gives you that number plus what over a thousand banks around the world are actually quoting for the same pair.

The numbers

Source Count Endpoint
Commercial banks (buy and sell boards) 1,219 banks in 124 countries /api/v1/bank-rates/{country}/{bank}
Central banks (official rates) 123 /api/v1/central-bank/{bank}/latest
Tax and customs authorities 6 (HMRC, IRS, US Treasury, Swiss customs, SUNAT, India CBIC) same as central banks
Mid-market 160+ currencies, refreshed every 60 seconds /api/v1/rates

That makes 1,342 banks (and 1,348 rate sources with the tax authorities) behind a single key. We don't know of another exchange rate API with this much bank coverage.

A 60-second mid-market rate

For prices, converters and dashboards you want the live market midpoint. AllRatesToday refreshes it every 60 seconds for 160+ currencies, and many currencies in one request count as one call:

curl -H "Authorization: Bearer $KEY" \ "https://allratestoday.com/api/v1/rates?source=USD&target=EUR,GBP,INR,NGN,JPY" 

Every element carries its own time, so you always know how fresh the rate is.

What 1,219 commercial banks give you

The mid-market rate is not what people get at a bank. Every bank sets its own buy and sell prices, and those prices are what a transfer or a cash exchange actually converts at. AllRatesToday reads those boards every hour from banks' own websites, from Singapore to Sri Lanka to Switzerland:

# Every covered bank in India, latest board each curl -H "Authorization: Bearer $KEY" "https://allratestoday.com/api/v1/bank-rates/in" # One bank, one currency curl -H "Authorization: Bearer $KEY" "https://allratestoday.com/api/v1/bank-rates/sg/dbs?ccy=USD" 

Each row includes buy, sell, spread_pct, the central bank's official rate for the same currency, and how far the bank sits from it (vs_official_pct). Every figure is checked against the official rate before it is stored, so a parsing error can't reach your app.

What 123 central banks give you

Tax returns, customs declarations and audited accounts require official rates: one figure per day, set by a named institution, never revised. AllRatesToday serves them from 123 central banks and 6 tax authorities, with each source's own rate_date and history:

curl -H "Authorization: Bearer $KEY" \ "https://allratestoday.com/api/v1/central-bank/ecb/latest?source=USD&target=EUR" # Every central bank's official rate for one pair, side by side curl -H "Authorization: Bearer $KEY" \ "https://allratestoday.com/api/v1/central-banks/rates?source=USD&target=EUR" 

Why put all of it in one API

Because real products need more than one kind of rate:

  • A remittance app quotes the live rate, shows which bank pays the most, and records the official rate for compliance.
  • An ERP or invoicing tool shows live prices and books at the central bank rate.
  • A treasury dashboard compares what its banks charge against the market and the official rate.

With one provider, that is one key, one set of field names and one bill instead of three.

Getting started