AllRatesToday vs Frankfurter: When Free ECB Rates Stop Being Enough
Let's start with something most API comparisons won't say: Frankfurter is genuinely good. It's free, open-source, keyless, unlimited, and it does exactly what it promises — serve the European Central Bank's reference rates over a clean JSON API. If you're building a prototype, a homework project, or a EUR-centric tool that needs ~30 major currencies once a day, use Frankfurter and don't look back.
This comparison is for the moment that stops being true. In our experience, developers don't leave Frankfurter because something better is advertised — they leave because they hit a wall it structurally cannot cross. There are five of them, and which one you hit first depends on what you're building.
At a glance
| Frankfurter | AllRatesToday | |
|---|---|---|
| Price | Free (open source) | Free tier; paid from €4.99/mo |
| Currencies | ~30 (ECB reference list) | 160+ |
| Update cadence | Once per business day, ~16:00 CET | Real-time, fetched per request |
| Weekends & holidays | No publication | Always serves current rates |
| Rate type | ECB EUR-referenced mid only | Mid-market + official buy/sell where published |
| Official central-bank rates | ECB only | 83 central banks + 3 tax authorities |
| History | ECB from 1999 | ECB 1999, SNB 1914, HKMA 1981, RBI 2003… |
| Formats | JSON | JSON, CSV, XML, XLSX + no-code downloads |
| AI/agent tooling | — | MCP servers, SDKs (JS/Python/PHP/Rust) |
| Support | Community, best-effort | Support with a company behind it |
Frankfurter details are based on its public documentation at frankfurter.dev and may change. Check the project's site for the latest.
Wall 1: The currency list
Frankfurter serves the currencies the ECB publishes reference rates for — roughly 30 majors. The moment your app needs a Pakistani rupee, Sri Lankan rupee, Bangladeshi taka, Nigerian naira, Vietnamese dong, or Egyptian pound, Frankfurter has no answer at any price. There is no workaround: the data simply isn't in the dataset.
This is usually the first wall remittance apps, marketplaces with emerging-market sellers, and travel tools hit. AllRatesToday covers 160+ currencies including precisely those corridors — and its official-rates catalog leans deliberately toward South and Southeast Asian central banks that other providers skip.
Wall 2: One fixing per day
The ECB publishes its reference rate once per business day, around 16:00 CET — and states plainly that it's intended for reference, not transactions. If your checkout reprices in near real time, if you're monitoring a moving market, or if a user asks "what's the rate right now?" at 9am, yesterday afternoon's fixing is the wrong answer.
AllRatesToday serves real-time mid-market rates fetched live on each request. The difference isn't academic: on a volatile day a currency pair can move well over a percent between two ECB fixings.
Wall 3: Weekends don't exist
No ECB publication means no Frankfurter data on Saturdays, Sundays, or ECB holidays. Your app doesn't get weekends off — an e-commerce site sells all weekend, and "rate as of Friday afternoon" silently drifts from the market until Monday. AllRatesToday serves current rates every day of the year, and its official-rates endpoints handle non-publication days properly: they return the most recent published table with the bank's own rate_date and an explicit flag, which is exactly what compliance rules expect.
Wall 4: The ECB is only one of the world's central banks
This is the wall that surprises people. Frankfurter gives you official rates — but only the ECB's. Official-rate requirements are jurisdictional: a UK customs declaration cites HMRC's monthly rate, a US government filing cites the US Treasury's quarterly rate, an Indian invoice references the RBI, a Brazilian one PTAX. The ECB rate is simply the wrong number for all of those.
AllRatesToday serves the published tables of 83 central banks and 3 tax authorities through one API — the Fed, Bank of England, People's Bank of China, RBI, HMRC, US Treasury and dozens more, with history reaching back decades (and every computed cross-rate explicitly flagged as derived, because for compliance work the published/derived distinction matters). Over a recent year, the widest gap between the live GBP/USD market rate and HMRC's official rate-in-force was 3.7% — real money on a real invoice. More on that in our tax authority rates guide.
Wall 5: Nobody is on the hook
Frankfurter is a volunteer-run open-source project. That's admirable — and fine for a side project. But when a business books revenue, closes months, or settles invoices off a rate feed, someone needs to be answerable when the feed misbehaves. "Self-host it if you need an SLA" converts a €4.99/month problem into an ops responsibility with pager duty. Paid infrastructure exists precisely because accountability is a feature.
What switching looks like
The APIs are close enough that migration is usually under an hour. A Frankfurter call:
GET https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR,GBP becomes:
GET https://allratestoday.com/api/v1/rates?source=USD&target=EUR,GBP
Authorization: Bearer art_live_your_key Response shapes differ slightly (Frankfurter returns a rates map; AllRatesToday returns an array of rate objects with timestamps), but the concepts — base, targets, historical dates — map one to one. Official SDKs for JavaScript, Python, PHP and Rust remove even that step, and the full mapping lives on our Frankfurter alternative page.
The honest verdict
Use Frankfurter if you need ~30 major currencies, once a day, EUR-referenced, for a project where a stale or missing rate costs you nothing.
Use AllRatesToday when you hit any of the five walls: currencies beyond the ECB list, real-time freshness, weekend coverage, official rates from a specific central bank or tax authority, or a business that needs someone accountable behind the feed. The free tier means testing that claim costs nothing.
Frequently Asked Questions
Is Frankfurter a good exchange rate API?
Yes — for what it covers. Frankfurter is a free, open-source API serving European Central Bank reference rates with no API key and no request limits. For prototypes, hobby projects, and EUR-centric apps that need ~30 major currencies once a day, it is an excellent choice.
What are Frankfurter's limitations?
Frankfurter covers only the ~30 currencies on the ECB reference list, updates once per business day around 16:00 CET, publishes nothing on weekends or ECB holidays, offers only the ECB's EUR-referenced mid rates (no buy/sell, no other central banks), and is a volunteer-run project with no support or SLA.
When should I switch from Frankfurter to a paid API?
When you hit one of five walls: you need a currency outside the ECB list (PKR, LKR, BDT, NGN, VND and most emerging-market currencies are not covered); you need rates fresher than one daily fixing; you need weekend availability; you need official rates from a central bank other than the ECB (Fed, Bank of England, RBI, HMRC) for tax or customs work; or your business needs support and accountability behind the feed.
Does Frankfurter cover central bank rates other than the ECB?
No. Frankfurter serves European Central Bank reference rates only. AllRatesToday serves official published rates from 83 central banks and 3 tax authorities — including the US Federal Reserve, Bank of England, Reserve Bank of India, People's Bank of China, HMRC and the US Treasury — alongside real-time market rates.
Is AllRatesToday free like Frankfurter?
AllRatesToday has a free tier (no credit card) with real-time rates, conversion, and historical data, plus a keyless public endpoint for single-pair lookups. Paid plans start at €4.99/month. Frankfurter is entirely free but limited to the ECB dataset.
Outgrown the ECB List?
160+ currencies in real time, plus official rates from 83 central banks and 3 tax authorities — with a free tier and no credit card to start.
Get Your Free API Key