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 foreign exchange 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",
"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 122 central banks and 4 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
- Free tier — enough to prototype and test an integration
- 160+ currencies — every major and most exotic pairs
- Real-time mid-market rates — Institutional FX market data, 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 | 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 display prototypes — test localized prices before launch; a live hourly refresh (about 720 requests/month) needs a paid plan
- 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. AllRatesToday has a free tier with real-time mid-market rates for 160+ currencies, and no credit card required to sign up.
Do I need a credit card?
No. Sign up with email, Google, or GitHub and generate a free API key immediately, without entering any payment details.
How fresh are the rates on the free plan?
The free plan uses the same real-time data as paid plans: mid-market rates aggregated from institutional foreign exchange 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, non-commercial projects and testing. Commercial use comes with the paid plans, which start at €4.99/month.
What happens when I use up my free requests?
Requests beyond your quota are rejected with a clear error rather than billed. The free tier does not reset, so caching stretches them a long way, and paid plans give 5,000 to 100,000 requests per 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