Skip to main content

✨ fastFOREX API MCP is now Generally Available - let your agents manage your fastFOREX API ✨

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.

  1. 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.)

  2. Swap base URL, add auth

    api.frankfurter.dev/v2 → api.fastforex.io, plus an X-API-Key header where there was none.

  3. Adjust params & casing

    quotes= becomes to=, and currency codes are uppercase — Frankfurter tolerates lowercase; we keep it strict for predictability.

  4. 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&quotes=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.

Before · Frankfurter
$ curl "https://api.frankfurter.dev/v2/
   rates?base=USD&quotes=EUR,GBP"

{
  "base": "USD",
  "date": "2026-09-10",
  "rates": {
    "EUR": 0.8592,
    "GBP": 0.7304
  }
}
After · fastFOREX API
$ 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

benchmark.sh · run from your servers
$ 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?
Not necessarily. If daily reference rates cover your use case, Frankfurter is excellent and free. Migrate when you need intraday market rates, broader currency coverage, crypto or metals, or contractual reliability — an SLA and support.
Why don't your values match Frankfurter's?
Different data by design: central-bank daily reference rates versus continuously-updated market mid-rates. Expect small intraday differences that converge around the ECB's 16:00 CET fixing.
Frankfurter has an MCP server — do you?
Yes — the fastFOREX MCP Server ships 25 tools across FX, crypto, metals and utilities, wired to live data. If you connected Frankfurter to an AI assistant, the same pattern works here with more coverage.
Can you help with the migration?
Yes — support answers 365 days a year. If you need more than 7 days to validate, ask about extending your trial.

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.