Frankfurter is a popular free, open-source exchange rate API that began with European Central Bank reference rates. This page is for developers deciding whether Frankfurter covers their needs or whether they need a Frankfurter API alternative with intraday updates, analytics endpoints or a commercial plan. To be direct: if you need daily central-bank reference rates with no key and no quota, Frankfurter is hard to beat – it now covers 223 currencies from 104 central banks and official sources, back to 1948. fxapi fits when you need rates more often than once a day, a conversion endpoint, fluctuation and period averages, crypto and precious metals, or a paid plan with a defined quota and an SLA.
fxapi vs Frankfurter at a glance
| Criterion | fxapi | Frankfurter |
|---|---|---|
| Free plan | 300 requests/month (10/minute), daily updates, API key | Free, no API key, no monthly or daily quotas; rate-limited to prevent abuse |
| Entry paid plan | Basic: $9.99/month, 15,000 requests | No paid plans; self-hosting via Docker |
| Update frequency | Daily (Free), hourly (Basic), 60 seconds (Professional, Enterprise) | Daily |
| Currencies | 190+ (fiat, legacy, 4 metals, 16 crypto) | 223 |
| Historical data | Daily, back to 1999-01-01 | Back to 1948 |
| Time series | /v1/range, Professional ($34.99) and up; day to minute accuracy | /v2/rates with from/to; group=week or month to downsample |
| Conversion | /v1/convert, Basic and up | No endpoint; multiply a pair rate in your code |
| Fluctuation | /v1/fluctuation, all plans incl. Free | Not stated |
| Averages endpoint (IAS 21) | /v1/average, all plans incl. Free | Not stated |
| Crypto & metals | 16 crypto, XAU/XAG/XPT/XPD | Not stated |
| Base currency switching on free plan | Yes, any code | Yes (base) |
| MCP server for AI agents | Hosted at https://api.fxapi.com/mcp | Not stated |
| SDKs | Official: JavaScript, Python, PHP, Go, Ruby, C#, Rust | Not stated |
Competitor information checked on October 8, 2026 from frankfurter.dev, frankfurter.dev/docs, frankfurter.dev/v1 and the GitHub repository. Plans change – verify on their site.
Where Frankfurter is strong
- Free, keyless, no quotas. Nothing to sign up for, no key to protect – ideal for prototypes, side projects, static sites and teaching.
- Open source and self-hostable. The code is MIT-licensed, and
docker run -d --init -p 8080:8080 lineofflight/frankfurterstarts your own instance. Self-hosting removes any dependency on the public endpoint’s rate limits. - Official-source data with attribution. Frankfurter blends rates from 104 central banks and official sources.
providers=ecbscopes results to one provider andexpand=providersshows which providers contributed to each row – useful when auditors ask where a number came from. - Deep history. Data goes back to 1948, far earlier than most commercial APIs, including fxapi (1999).
- Wide coverage. 223 currencies, with legacy currencies available via
scope=allon/v2/currencies. - Flexible output. Append
.csvor sendAccept: text/csvfor CSV;Accept: application/x-ndjsonstreams large series line by line. - Stable v1. v1 is deprecated in favor of v2 but, per the docs, remains available indefinitely.
Where fxapi is different
Intraday updates
Frankfurter publishes daily rates. fxapi refreshes hourly on Basic and every 60 seconds on Professional and Enterprise, and every response carries meta.last_updated_at. If you price in multiple currencies during market hours or show live conversions, see real-time exchange rates and end-of-day vs real-time rates.
Endpoints that do the math
/v1/convertreturns converted amounts, optionally at a historicaldate(Basic and up)./v1/fluctuationreturnsstart_rate,end_rate,changeandchange_pct(all plans)./v1/averagereturns monthly, quarterly, yearly or total averages withminandmaxper period – built for IAS 21 and ASC 830 (all plans)./v1/rangeaddshour,quarter_hourandminuteaccuracy for recent data (Professional and up).
Crypto and precious metals
fxapi covers 16 cryptocurrencies and gold, silver, platinum and palladium alongside fiat, and any of them can be the base_currency. See crypto exchange rates and gold and silver prices.
A plan you can build commitments on
Paid fxapi plans come with a defined monthly quota, no per-minute limit, multiple API keys, team management (Professional and up), sandbox keys, and IP/URL whitelisting plus an SLA on Enterprise. Quota usage is visible at /v1/status and in response headers.
MCP and SDKs
The hosted MCP server gives AI agents tool access to rates; official SDKs cover JavaScript, Python, PHP, Go, Ruby, C# and Rust.
Migrating from Frankfurter to fxapi
Endpoint mapping
| Frankfurter | fxapi | Notes |
|---|---|---|
/v1/latest, /v2/rates | /v1/latest | base → base_currency; symbols / quotes → currencies |
/v1/YYYY-MM-DD, /v2/rates?date= | /v1/historical | date=YYYY-MM-DD |
/v1/START..END, /v2/rates?from=&to= | /v1/range | datetime_start, datetime_end, accuracy=day (or week/month instead of group) |
/v2/rate/{base}/{quote} | /v1/latest | base_currency=EUR¤cies=USD |
| Rate × amount in your code | /v1/convert | value, base_currency, currencies |
/v1/currencies, /v2/currencies | /v1/currencies | Adds symbols, decimal digits, countries |
/v2/providers | – | fxapi does not expose sources |
.csv suffix / Accept: text/csv | format=csv | On /v1/range, /v1/fluctuation, /v1/average |
Response shape
Frankfurter v1 returns amount, base, date and a flat rates object (example response; values change daily):
{"amount":1.0,"base":"EUR","date":"2026-10-06","rates":{"GBP":0.8488,"USD":1.1269}}
Frankfurter v2 returns an array of rows, each with date, base, quote and rate. fxapi returns meta.last_updated_at and a data object keyed by currency code – read data.USD.value.
Before and after
Frankfurter v1:
curl "https://api.frankfurter.dev/v1/latest?base=EUR&symbols=USD,GBP"
fxapi:
curl -G "https://api.fxapi.com/v1/latest" \
-d base_currency=EUR \
-d currencies=USD,GBP \
-H "apikey: $FXAPI_KEY"
// Frankfurter v1: json.rates.USD
// fxapi: json.data.USD.value
const res = await fetch(
"https://api.fxapi.com/v1/latest?base_currency=EUR¤cies=USD,GBP",
{ headers: { apikey: process.env.FXAPI_KEY } }
);
const { data } = await res.json();
const rates = Object.fromEntries(Object.entries(data).map(([c, r]) => [c, r.value]));
The main new step is the API key: keep it on your server, send it in the apikey header and cache responses for your plan’s update interval – see caching exchange rates.
Verdict
Use Frankfurter if daily central-bank reference rates are what you need, you value no key and no quota, you want provider attribution, history before 1999, or the option to self-host. Choose fxapi if you need hourly or 60-second updates, conversion, fluctuation and IAS 21 averages as endpoints, crypto and precious metals, or a paid plan with a defined quota, multiple keys and an SLA. Both can run side by side – start with a free fxapi key.
fxapi is a foreign exchange rates API by Everapi GmbH (Austria): live and historical rates for 190+ currencies, time series, conversion, fluctuation and period averages.
Frequently asked questions
Is Frankfurter still free?
Does Frankfurter only use ECB data?
providers=ecb restricts results to the ECB.How often does Frankfurter update?
Does Frankfurter have a conversion endpoint?
/v1/convert from the Basic plan.