Skip to main content

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

Migration Guide — Open Exchange Rates → fastFOREX API

Migrate from Open Exchange Rates in under an hour

Both APIs are JSON over HTTPS with near-identical concepts. Most migrations come down to a base URL, an auth parameter, and two renamed response fields. This guide covers every endpoint, the exact response differences, and how to benchmark us side by side before you cut over.

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

    Sign up for the 7-day trial — no credit card. Full access to your plan's endpoints from minute one.

  2. Swap base URL & auth

    openexchangerates.org/api → api.fastforex.io, and ?app_id= becomes ?api_key=. That's the whole auth story.

  3. Rename two fields

    Their "rates" is our "results"; their unix "timestamp" is our ISO-8601 "updated". Parsers rarely need more.

  4. Benchmark, then cut over

    Run both APIs in parallel during the trial, compare latency and values, and switch when the numbers convince you.

Endpoint mapping

Every endpoint, translated.

One row per call your code makes today. Parameters keep their meaning — only names and paths change.

Purpose

Open Exchange Rates

fastFOREX API

Latest rates (all currencies)

GET /api/latest.json

GET /fetch-all?from=USD

Latest rates (specific symbols)

GET /api/latest.json?symbols=EUR,GBP

GET /fetch-multi?from=USD&to=EUR,GBP

Single pair

GET /api/latest.json?symbols=EUR

GET /fetch-one?from=USD&to=EUR

Historical (single date)

GET /api/historical/2020-01-01.json

GET /historical?date=2020-01-01

Time-series (date range)

GET /api/time-series.json (Enterprise+)

GET /time-series?start=…&end=… (every plan)

Convert an amount

GET /api/convert/100/USD/EUR (Unlimited only)

GET /convert?from=USD&to=EUR&amount=100 (every plan)

List currencies

GET /api/currencies.json

GET /currencies

Account usage

GET /api/usage.json

GET /usage

Authentication

?app_id=YOUR_ID

?api_key=YOUR_KEY

Response shapes

Before and after.

In your code, the change is typically one line: data.rates becomes data.results. If you consumed their unix timestamp, parse our ISO-8601 "updated" instead — no timezone guesswork.

Before · Open Exchange Rates
$ curl "https://openexchangerates.org/api/
   latest.json?app_id=YOUR_ID&symbols=EUR,GBP"

{
  "timestamp": 1752999540,
  "base": "USD",
  "rates": {
    "EUR": 0.874883,
    "GBP": 0.742914
  }
}
After · fastFOREX API
$ curl "https://api.fastforex.io/
   fetch-multi?api_key=YOUR_KEY&from=USD&to=EUR,GBP"

{
  "base": "USD",
  "results": {
    "EUR": 0.874883,
    "GBP": 0.742914
  },
  "updated": "2026-07-20T09:39:00Z"
}

Watch for these differences.

The honest list — everything that behaves differently, including the ones that work in your favour.

  1. Two field renames

    "rates" → "results" and unix "timestamp" → ISO-8601 "updated". These are the only response-shape changes for latest and historical calls.

  2. Base currency freedom

    OXR's free plan locks USD as base. Every fastFOREX API plan supports any base — if you built client-side cross-rate maths to work around that, you can delete it.

  3. Time-series metering flips in your favour

    OXR counts one request per day of data returned (a year ≈ 365 requests). fastFOREX API counts one request per call. Remove any batching or throttling built around their metering.

  4. Check currency coverage

    OXR lists ~195 codes including some alternative rates; fastFOREX API covers 170+ physical currencies plus 500+ crypto. Diff /currencies against your usage before cutover.

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" \
>     "https://api.fastforex.io/fetch-all?from=USD&api_key=KEY"
>   curl -s -o /dev/null -w "oxr        %{time_total}s\n" \
>     "https://openexchangerates.org/api/latest.json?app_id=ID"
> done

fastforex  0.021s
oxr        0.183s
fastforex  0.019s
oxr        0.177s

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 Open Exchange Rates.

Can I run both APIs in parallel?
Yes — that's the recommended path. The 7-day trial has full plan access, so you can dual-write or shadow-read against both providers and compare values and latency in production traffic before switching.
Will historical values match what OXR gave me?
Values will be close but not identical — different sources and snapshot times. If you store historical rates, keep your OXR-era records as-is and source new history from fastFOREX API from your cutover date, or backfill from our 55+ years of data for consistency.
What about my stored unix timestamps?
Our "updated" field is ISO-8601. Date.parse() / datetime.fromisoformat() handle it natively — most codebases find this simpler than unix seconds.
I use time-series heavily. What changes?
Your request count drops dramatically: one fastFOREX API call returns a full date range, where OXR charged per day returned. A year of daily EUR/USD is 1 call instead of ~365.
Can you help with the migration?
Yes — support answers 365 days a year and has walked many teams through this exact switch. If you need more than 7 days to validate, ask us 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.