Migration Guide — Frankfurter → fastFOREX API
Migrate from Frankfurter — when you're ready
Frankfurter is a genuinely good free API, and if daily ECB reference rates cover your needs, keep using it. Teams migrate when they need intraday market rates, more currencies, or someone to call — here's the map for when that day comes.
Draft guide — endpoint mapping to be validated against both APIs' current docs before publishing.
Four steps, most of them small.
Get a free API key
7-day trial, no credit card, full plan access from minute one. (Yes — you'll need a key now; that's what buys you an SLA.)
Swap base URL, add auth
api.frankfurter.dev/v2 → api.fastforex.io, plus an X-API-Key header where there was none.
Adjust params & casing
quotes= becomes to=, and currency codes are uppercase — Frankfurter tolerates lowercase; we keep it strict for predictability.
Rethink your caching
Frankfurter data changes once per business day; ours updates continuously. Daily caches can shrink to seconds — or disappear.
Endpoint mapping
Every endpoint, translated.
One row per call your code makes today. Parameters keep their meaning — only names and paths change.
Purpose
Frankfurter
fastFOREX API
Latest rates (specific symbols)
GET /v2/rates?base=USD"es=EUR,GBP
GET /fetch-multi?from=USD&to=EUR,GBP
Latest rates (all currencies)
GET /v2/rates?base=USD
GET /fetch-all?from=USD
Single pair
GET /v2/rate/eur/usd
GET /fetch-one?from=EUR&to=USD
Convert an amount
Multiply client-side
GET /convert?from=USD&to=EUR&amount=100 (dedicated endpoint)
Historical (single date)
GET /v2/rates?date=2020-01-01
GET /historical?date=2020-01-01
Time-series (date range)
GET /v2/rates?from=2020-01-01&to=2020-03-31
GET /time-series?start=2020-01-01&end=2020-03-31
List currencies
GET /v2/currencies
GET /currencies
Authentication
None (open API)
X-API-Key header
Response shapes
Before and after.
One rename: data.rates becomes data.results. You also gain an "updated" timestamp with sub-day precision — with daily rates it was implicit in the date.
$ curl "https://api.frankfurter.dev/v2/
rates?base=USD"es=EUR,GBP"
{
"base": "USD",
"date": "2026-09-10",
"rates": {
"EUR": 0.8592,
"GBP": 0.7304
}
}
$ curl -H "X-API-Key: YOUR_KEY" \
"https://api.fastforex.io/fetch-multi?from=USD&to=EUR,GBP"
{
"base": "USD",
"results": {
"EUR": 0.8599,
"GBP": 0.7299
},
"updated": "2026-09-10T09:39:00Z"
}
Watch for these differences.
The honest list — everything that behaves differently, including the ones that work in your favour.
The values will differ — by design
Frankfurter serves central-bank reference rates, published once per business day around 16:00 CET. We serve continuously-updated market mid-rates from 100+ institutional contributors. Both are correct; they answer different questions. If your tests pin exact values, they'll need new fixtures.
Daily-cache assumptions break (pleasantly)
Code written for Frankfurter often caches for 24 hours because the data can't change more often. Our rates move continuously — shorten or drop those caches to actually benefit from the switch.
Currency count differs
Frankfurter's default set follows the ECB list (~30 actively published currencies, with wider central-bank sources beyond). We cover 170+ world currencies plus crypto and metals — but diff /currencies against your list rather than assuming.
You're adding a dependency on us — deliberately
Frankfurter is free, open-source and keyless; switching means an account, a key and a bill. What you get for it: an SLA with published targets, support that answers 365 days a year, and intraday data. Make sure that trade is the one you need.
Prove it to yourself
Benchmark both during your trial.
Don't take our 21ms average on faith. Run both APIs from your own infrastructure with this snippet, compare the numbers, and cut over when the data says so.
$ for i in 1 2 3 4 5; do
> curl -s -o /dev/null -w "fastforex %{time_total}s\n" \
> -H "X-API-Key: KEY" "https://api.fastforex.io/fetch-all?from=USD"
> curl -s -o /dev/null -w "frankfurter %{time_total}s\n" \
> "https://api.frankfurter.dev/v2/rates?base=USD"
> done
fastforex 0.022s
frankfurter 0.038s
Switching support included.
Our team answers 365 days a year and has guided many migrations from this exact provider. Need longer than 7 days to validate? Ask about extending your trial.
Migration questions.
What teams ask when leaving Frankfurter.
Should I migrate at all?
Why don't your values match Frankfurter's?
Frankfurter has an MCP server — do you?
Can you help with the migration?
Something specific to your setup?
Send us your current integration details and we'll map it for you.
An hour of work for 60x fresher data.
Get your free API key and run fastFOREX API alongside your current provider today.