Free Open Exchange Rate API: Keyless, No Signup, Any Base Currency
Keyless exchange rate API. One URL returns every ECB reference rate re-based to any currency: no API key, no account, CORS on, free for commercial use. The only condition is a visible link to AllRatesToday.
https://allratestoday.com/api/open/latest/USD. Swap USD for any of the
30 currencies in the European Central Bank table. Updated once a day after the 16:00 CET fixing.
Free for personal and commercial use. The one condition: show a visible link to AllRatesToday
where the rates appear (attribution).
The endpoint
GET https://allratestoday.com/api/open/latest/USD Response:
{
"result": "success",
"base_code": "USD",
"date": "2026-10-21",
"time_last_update_utc": "Wed, 21 Oct 2026 15:00:00 GMT",
"time_next_update_utc": "Thu, 22 Oct 2026 15:00:00 GMT",
"attribution": "Exchange rates by AllRatesToday — https://allratestoday.com",
"terms_of_use": "https://allratestoday.com/terms/#attribution",
"rates": { "USD": 1, "EUR": 0.89015, "GBP": 0.74617, "JPY": 157.87, "CHF": 0.82393, ... }
} - No API key, no account. Nothing to register, nothing to rotate.
- Any base currency in the ECB table:
/api/open/latest/EUR,/GBP,/JPY,/CHF,/AUD,/INR,/CNY… 30 codes, cross-rated inside the table exactly as the ECB publishes it. - Daily reference rates, not a live feed: every call between fixings returns the same table, and
datesays which one. Right for invoices, tax, reports and converters; for live mid-market rates use the keyed API below. - CORS enabled (
Access-Control-Allow-Origin: *), so a static site can call it directly. - Rate limited per IP. Cache for an hour or more; the table changes once a day. The response carries
time_next_update_utc. - Unknown base returns
404with the list of supported codes.
Attribution (the only condition)
Put this where the rates are shown: a footer, an about page, a README. Discreet is fine; it must be visible and a normal followable link.
<a href="https://allratestoday.com">Exchange rates by AllRatesToday</a> - Markdown:
Exchange rates by [AllRatesToday](https://allratestoday.com) - Plain text (apps, slides):
Exchange rates by AllRatesToday — allratestoday.com
Every keyless response carries the same text in its attribution and attribution_html fields, so an
integration can render it automatically. The same condition applies to the drop-in compat endpoints,
the widgets, the public central-bank tables and the
open dataset. With an API key, attribution is
appreciated but not required. Full wording: terms, section 3.4.
Quick examples
JavaScript
// No key. Works in the browser: the endpoint sends CORS headers.
const res = await fetch('https://allratestoday.com/api/open/latest/USD');
const { rates, date } = await res.json();
console.log(`1 USD = ${rates.EUR} EUR (ECB table of ${date})`); Python
import requests
data = requests.get("https://allratestoday.com/api/open/latest/USD").json()
print(f"1 USD = {data['rates']['EUR']} EUR (ECB table of {data['date']})") Want a ready-made UI instead? The embeddable converter widget runs on this table keyless and renders the attribution link for you.
Official central-bank tables, keyless
The same open access covers the latest published table of every central bank and tax authority we track, 126 institutions from the ECB, Fed and RBI to HMRC and the Swiss customs office. Each table is the publisher's own figures with its own publication date, served from our cache, so a request costs nothing upstream and the answer is identical for everyone all day.
GET https://allratestoday.com/api/open/central-bank/rbi
GET https://allratestoday.com/api/open/central-bank/rbi?source=USD&target=INR
GET https://allratestoday.com/api/open/central-bank/rbi?format=csv
GET https://allratestoday.com/api/open/central-banks {
"bank": "rbi",
"rate_date": "2026-10-21",
"age_days": 0,
"stale": false,
"cadence": "daily",
"rates": [
{ "base": "USD", "quote": "INR", "type": "reference", "value": 94.7145 },
{ "base": "EUR", "quote": "INR", "type": "reference", "value": 106.2839 },
...
],
"attribution": { "source": "Official rates published by RBI, served by AllRatesToday", "url": "...", "terms": "..." }
} /api/open/central-bank/{code}: the institution's latest table. Codes are the slugs on the central bank rates pages, e.g.ecb,fed,boe,rbi,pboc,hmrc,bazg.?source=USD&target=INR: one pair from that table.derived: falsemeans the bank printed it;derived: truemeans it was computed inside the same table andmethodsays how (inverse or cross).?format=csv|xml|xlsx: the table as a file, same contract as the keyed endpoints.?type=picks a rate type where a bank publishes several (buy, sell, reference)./api/open/central-banks: every institution withcode,name,latestpublication date,staleflag andcadence. Use it to discover codes and to check freshness before you cite a table./api/open/central-bank/{code}/table.svg: the table as an image, for READMEs and dashboards that cannot run code.rate_dateis the publication date. Cite that, not today.age_daysandstaletell you when the institution is behind its usual schedule; the last table is still served.- Latest only. A table for a past date, a date range, cross-bank comparison and publication calendars are keyed; the Official Rates plan covers commercial use of official data.
Keyless central-bank tables are for development, evaluation, personal projects and internal tooling, with the attribution link; commercial products built on them need a paid plan. Market-data pages that only need an ECB rate should use the one-URL endpoint above, which is free for commercial use.
When you need more: the keyed API
A free API key (no card) adds live mid-market rates for 160+ currencies,
history, and the official tables of 122 central banks and 4 tax authorities.
Pass it as Authorization: Bearer or ?key=:
curl "https://allratestoday.com/api/rate?source=USD&target=EUR&key=art_live_your_key"
# → { "rate": 0.864566, "source": "mid-market" } Comparing providers? See the ranked best free currency APIs in 2026.
Drop-in shapes for exchangeratesapi.io, Fixer and exchangerate.host
If your code was written against one of the free ECB-based APIs that now require paid keys, the same
data is served in their exact JSON shapes under /api/compat/<provider>/, keyless for
latest rates: /api/compat/exchangeratesapi/latest?base=USD&symbols=GBP,
/api/compat/fixer/latest?base=EUR&symbols=USD,
/api/compat/exchangerate-host/latest?base=USD and
/api/compat/frankfurter/latest?from=USD&to=GBP. Dated tables and ranges take a free
key. The migration guides show the one-line change for each.
Fair use
The open endpoint above, the compat drop-ins and the widgets are free for any use, commercial included, as long as the attribution link stays visible. They serve the public ECB table, which changes once a day, so cache it: one request an hour per server is plenty, and the per-IP rate limit is there for callers that do not.
The keyless central-bank tables and the free API key are for development, evaluation, personal projects and internal tooling. Commercial products, paid services and public displays built on those need a paid plan. Paid plans reset monthly.