DEV Community

viraj geeth
viraj geeth

Posted on

Free currency API in 2026: what the free tiers actually give you

Most "free currency API" searches end the same way. You pick the first provider with a free plan, ship the integration, and a month later the app breaks because you hit a 100-request cap, or the rates turn out to be yesterday's ECB fixing, or the "free" plan needed a card and it just charged you.

I maintain one of these APIs (AllRatesToday), so treat the ranking with that in mind. But the comparison table below is the thing I wish I had found first, and the numbers in it are the ones on each provider's pricing page at the time of writing.

The four questions that matter

Before the table, the questions a free tier has to answer:

  1. How many requests, and per what? Per month, per day, or lifetime. Lifetime caps are fine for a prototype and a trap for anything scheduled.
  2. How fresh is the data? Many free tiers serve one daily fixing, usually the ECB's 16:00 CET table of about 30 currencies. That is fine for an invoice and useless for a price display.
  3. Is there a credit-card wall? Some providers put a card on the free plan so the upgrade is one click. Read the fine print about what happens at the cap.
  4. Where do the rates come from? Mid-market rates, a central bank's reference table, or a retail rate with a spread baked in. These differ by up to a few percent and you need to know which one you are showing.

Comparison table

API Free tier Currencies Update frequency on free Card required
AllRatesToday Free key, no card. Keyless open endpoint for official central-bank tables 160+ Real-time (60 s) with key No
CurrencyFreaks 1,000 req/month 1,000+ incl. crypto Daily No
ExchangeRate-API 1,500 req/month 161 Daily For upgrades
Open Exchange Rates 1,000 req/month 200+ Hourly Yes
CurrencyLayer 100 req/month 168 Daily Yes
Fixer 100 req/month 170+ Daily Yes
CurrencyAPI 300 req/month 170+ Daily Yes
XE Trial only 170+ Up to 60 s Yes
Alpha Vantage 25 req/day Multi-asset Daily No
ExchangeRate.host Free plan 168+ Daily No
Frankfurter Unlimited, keyless ~30 (ECB) Daily (ECB) No
fawazahmed0/currency-api Unlimited, static JSON on a CDN 340 Daily No

Two of those rows are not companies at all. Frankfurter is an open-source wrapper around the ECB table, and fawazahmed0's currency-api is a GitHub repo that republishes daily JSON files through jsDelivr. If daily ECB-style data is enough for you, start with one of those and skip the signup entirely. I benchmarked both every hour for a week alongside the commercial open endpoints; the static CDN file was the fastest thing in the test.

When a daily fixing is enough, and when it is not

Daily is enough for accounting, invoicing, customs and tax work. In fact for those you usually want a specific daily table, the one your tax authority or central bank publishes, not a market rate. That is a different product category, and it is why I keep the official tables on a separate keyless endpoint:

# ECB reference rate, no key, attribution required
curl "https://allratestoday.com/api/open/central-bank/ecb?source=EUR&target=USD"
Enter fullscreen mode Exit fullscreen mode
{
  "bank": "ecb",
  "rate_date": "2026-09-25",
  "source": "EUR",
  "target": "USD",
  "rate": 1.1403,
  "rate_type": "reference",
  "cadence": "daily",
  "attribution": {
    "source": "Official rates published by ECB, served by AllRatesToday",
    "terms": "Free to use with visible attribution linking to allratestoday.com"
  }
}
Enter fullscreen mode Exit fullscreen mode

The same endpoint pattern works for the other central banks in the set: swap ecb for cbuae, boe, rbi, sbv and so on. GET /api/open/central-banks lists them.

Daily is not enough for a checkout, a pricing page in the visitor's currency, a trading dashboard or anything where the user compares your number with Google's. For that you want mid-market rates refreshed at least every minute, and every provider in the table charges for that except the ones that grant it on the free key.

Real-time on the free tier

With AllRatesToday the free key gets the same 60-second mid-market feed as the paid plans. Be aware that the free allowance is a fixed block of requests, not a monthly reset: it is there to build and test against real data, and a production price display that polls on a schedule belongs on a paid plan. Either way, one fetch per minute per base currency, cached server-side, is all a price display needs.

curl "https://allratestoday.com/api/v1/rates?source=USD&target=EUR" \
  -H "Authorization: Bearer YOUR_API_KEY"
Enter fullscreen mode Exit fullscreen mode
// Node 18+ / browser
const r = await fetch(
  'https://allratestoday.com/api/v1/rates?source=USD&target=EUR',
  { headers: { Authorization: `Bearer ${process.env.ALLRATES_KEY}` } }
).then(res => res.json());
console.log(r.rate); // 0.8778
Enter fullscreen mode Exit fullscreen mode

Historical dates, time series and CSV/XLSX output are on the same endpoints with date= and format= parameters. There are official SDKs for JavaScript, Python, PHP, Go and Rust if you prefer typed clients.

How to pick

  • Prototype or side project: a keyless source. Frankfurter, the currency-api CDN files, or the open central-bank endpoint above. No account, nothing to expire.
  • Price display, checkout, SaaS billing: a real-time mid-market feed with a free key and no card. Cache for 60 seconds.
  • Accounting, tax, customs: the official table from the institution your rule names, not a market rate. Use the central-bank endpoints.
  • Crypto plus fiat: CurrencyFreaks or CurrencyAPI cover the most symbols.
  • Stocks and forex together: Alpha Vantage, with a very low free cap.

One thing every free tier has in common

None of them are meant to be called on every page view. Whatever you pick, put the rate behind a cache with a short TTL and fall back to the last good value when a fetch fails. That single habit turns a 100-request free plan into something you can actually ship on, and it is the difference between a demo and a product.

The full ranking with per-provider notes and an FAQ lives here: The best free currency exchange API in 2026.

Top comments (0)