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.
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
- Which codes can I use?
/api/v1/symbolslists every supported currency — 160+ ISO codes with names. - Several targets in one request — comma-separate them:
target=EUR,GBP,JPY. That is still one request against your quota, so it is the cheapest way to quote a basket. - A rate as at a date — add
&time=2026-08-01to the same endpoint (historical rates, paid plans). - Official central-bank rates —
/api/v1/central-bank/ecb/latest?source=USD&target=EUR: the published reference rate from any of 90+ central banks and tax authorities, included on the free tier. - CSV, XML or Excel instead of JSON — append
&format=csv(orxml,xlsx) to any table endpoint.
What the free plan includes
- A monthly request quota — enough for prototypes, side projects, and periodic rate refreshes
- 160+ currencies — every major and most exotic pairs
- Real-time mid-market rates — Institutional interbank sourcing, updated every 60 seconds
- 1 API key, 10 requests/minute, HTTPS only
- No credit card — sign up with email, Google, or GitHub
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
- Currency converters — fetch a pair on demand, or cache rates to serve many conversions per fetch
- Price displays — show localized prices with an hourly refresh (24 requests/day ≈ 720/month cached across users)
- Dashboards and alerts — poll a handful of pairs a few times a day
- Embeddable widget — a one-line converter widget for any site
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