Free Currency API

Get a free currency API key in 30 seconds — no credit card. Real-time mid-market exchange rates for 160+ currencies from institutional interbank market data, updated every 60 seconds.

The short version: free API key in 30 seconds, no credit card. 160+ currencies, real-time mid-market rates from institutional interbank market data, updated every 60 seconds. Get your free key.

Quick start

One endpoint, one key. Send the key as an Authorization: Bearer header (or, for a quick browser test, as ?api_key=). Replace art_live_your_key with the key from your dashboard:

curl "https://allratestoday.com/api/v1/rates?source=USD&target=EUR" \
  -H "Authorization: Bearer art_live_your_key"

Response — an array, one entry per pair, so the same call can quote several targets at once (target=EUR,GBP,JPY):

[
  {
    "rate": 0.864566,
    "source": "USD",
    "target": "EUR",
    "time": "2026-08-28T14:00:00Z"
  }
]

From JavaScript:

const res = await fetch(
  "https://allratestoday.com/api/v1/rates?source=USD&target=EUR",
  { headers: { Authorization: "Bearer art_live_your_key" } }
);
const [quote] = await res.json();
console.log(`1 USD = ${quote.rate} EUR`);

From Python:

import requests

res = requests.get(
    "https://allratestoday.com/api/v1/rates",
    params={"source": "USD", "target": "EUR"},
    headers={"Authorization": "Bearer art_live_your_key"},
)
quote = res.json()[0]
print(f"1 USD = {quote['rate']} EUR")

Prefer a client library? There are official SDKs for JavaScript, Python, PHP, and Rust, and you can try every endpoint in the API playground without writing code.

The two responses to handle

Success is always 200 with the array above. Only two other responses matter in practice — check for them and you have covered the free tier:

401 — missing or invalid key. The header was not sent, or the key is wrong.

{
  "error": "Authentication required. Provide an API key via Authorization header or log in."
}

429 — quota used up. The request is refused, never billed. The body tells you where you stand, and the same figures are sent as X-Monthly-Limit, X-Monthly-Used and X-Monthly-Resets headers on every response, so you can watch the quota without waiting to hit it:

{
  "error": "Request limit exceeded",
  "used": 300,
  "limit": 300,
  "plan": "free",
  "resets_at": "never",
  "upgrade_url": "https://allratestoday.com/pricing"
}

Bursts are capped at 10 requests per minute. The whole error reference, including the 400 for a malformed pair, is in the docs.

Beyond the first call

What the free plan includes

Historical rates, time-series endpoints, commercial use, and higher volumes are part of the paid plans (from a few euros per month, with 5,000–100,000 requests).

Free tiers compared

Most "free currency API" tiers trade away freshness: you get a few hundred or thousand requests against rates cached hourly or daily. AllRatesToday's free tier is smaller on volume but serves the same 60-second real-time feed as its paid plans:

Provider Free requests Update frequency (free) Credit card?
AllRatesToday Free tier Real-time (60s) No
ExchangeRate-API 1,500/month Daily Yes (for upgrades)
Open Exchange Rates 1,000/month Hourly Yes
CurrencyLayer 100/month Daily Yes
Fixer.io 100/month Daily Yes
Frankfurter Unlimited Daily (ECB, 30+ currencies) No

Want the full 10-provider breakdown? See the best free currency exchange APIs in 2026 comparison.

What you can build on the free tier

Frequently asked questions

Is there a truly free currency API?

Yes — the AllRatesToday free tier gives you real-time rates for 160+ currencies, no credit card required.

Do I need a credit card?

No. Sign up with email, Google, or GitHub and generate a key immediately.

How fresh are the rates on the free plan?

Identical to paid plans: mid-market rates from institutional interbank market data, updated every 60 seconds. Most competing free tiers serve daily or hourly caches.

Can I use it commercially?

The free plan is for personal projects and testing. Commercial use comes with the paid plans.

What if I exceed my monthly quota?

Over-quota requests return a clear error — you're never silently billed. Caching stretches the quota a long way, and upgrades start at 5,000 requests/month.

Get your free currency API key

30 seconds to sign up. No credit card. Real-time rates from the first request.

Get Free API Key Try the Playground