This comparison is for teams running on Open Exchange Rates (OXR) who want to check an Open Exchange Rates alternative, and for anyone choosing between the two for a new project. Open Exchange Rates has a generous 1,000-request free plan, 200+ currencies including alternative and digital currency rates, an Unlimited plan without request caps and a VIP tier with bid-ask, OHLC and 1-second updates. fxapi fits better if you need a non-USD base currency without paying, time series and conversion at a lower plan level, period averages for accounting, or 60-second updates under $35 a month.
fxapi vs Open Exchange Rates at a glance
| Criterion | fxapi | Open Exchange Rates |
|---|---|---|
| Free plan | 300 requests/month (10/minute), daily updates | 1,000 requests/month, hourly updates, USD base |
| Entry paid plan | Basic: $9.99/month, 15,000 requests | Developer: $12/month, 10,000 requests |
| Update frequency | Daily (Free), hourly (Basic), 60 seconds (Professional, Enterprise) | Hourly (Free, Developer), 30 minutes (Enterprise), 5 minutes (Unlimited), every second (VIP, price on request) |
| Currencies | 190+ (fiat, legacy, 4 metals, 16 crypto) | 200+, plus alternative, black market and digital rates via show_alternative |
| Historical data | Daily, back to 1999-01-01 | Daily, back to January 1, 1999, all accounts |
| Time series | /v1/range, Professional ($34.99) and up; up to 366 days per call | time-series.json, Enterprise ($47) and Unlimited; one month per query, each day counts as one request |
| Conversion | /v1/convert, Basic and up | convert/, Unlimited plan ($97) |
| Fluctuation | /v1/fluctuation, all plans incl. Free | Not stated |
| Averages endpoint (IAS 21) | /v1/average, all plans incl. Free | Not in endpoint list |
| Crypto & metals | 16 crypto, XAU/XAG/XPT/XPD | Digital currencies via show_alternative; metals not stated |
| Base currency switching on free plan | Yes, any code | No (paid plans only) |
| 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 openexchangerates.org/signup, the free plan page and the OXR docs for latest.json, historical, time-series.json and convert. Plans change – verify on their site.
Where Open Exchange Rates is strong
- Bigger free quota. 1,000 requests per month on the free plan is more than fxapi’s 300. If you only need USD-based rates and hourly freshness, OXR’s free plan goes further.
- Unlimited requests. The Unlimited plan ($97/month) lists no request cap, which simplifies capacity planning for high-traffic apps.
- Alternative rates. The
show_alternativeflag adds alternative, black market and digital currency rates – useful for markets where official and street rates diverge. - VIP data. For teams that need more than mid-market rates, OXR’s VIP tier lists 1-second updates, bid-ask and midpoint prices, OHLC and intraday history. fxapi does not offer bid/ask or OHLC.
- Annual discount. All OXR plans come with two months free on annual billing – the same structure fxapi uses.
- Simple, stable URLs.
latest.json,historical/YYYY-MM-DD.jsonandcurrencies.jsonare easy to cache and to call from any language.
Where fxapi is different
Any base currency on every plan
OXR’s free plan is USD-only. On fxapi, base_currency=EUR (or GBP, CHF, BTC, XAU) works on Free, so European or Asian teams don’t have to compute cross rates client-side. More on base currencies and cross rates.
Time series and conversion at lower plan levels
| Capability | fxapi | Open Exchange Rates |
|---|---|---|
| Conversion endpoint | Basic, $9.99 | Unlimited, $97 |
| Time series | Professional, $34.99 | Enterprise, $47 |
| Days per time-series call | Up to 366 (daily accuracy), 1 request | Up to one month, 1 request per day |
On fxapi a full year of daily rates for 20 currencies is one request. /v1/range also supports week and month accuracy for long spans and hour, quarter_hour and minute accuracy for recent intraday data, with format=csv output.
Fluctuation and averages included
/v1/fluctuation returns start_rate, end_rate, change and change_pct for any period. /v1/average returns monthly, quarterly, yearly or total averages with min and max – ready for IAS 21 and ASC 830 income-statement translation. Both are on every plan, including Free.
60-second updates for $34.99
fxapi’s Professional plan refreshes every 60 seconds and includes 600,000 requests a month. Compare plans on the pricing page.
MCP for AI agents
The fxapi MCP server lets Claude, Cursor and other MCP clients call the rate endpoints as tools – see AI agents and LLMs.
Migrating from Open Exchange Rates to fxapi
Endpoint mapping
| Open Exchange Rates | fxapi | Notes |
|---|---|---|
latest.json | /v1/latest | base → base_currency, symbols → currencies |
historical/YYYY-MM-DD.json | /v1/historical | date=YYYY-MM-DD as a query parameter |
time-series.json | /v1/range | start/end → datetime_start/datetime_end, accuracy=day |
convert/{value}/{from}/{to} | /v1/convert | value, base_currency, currencies as query parameters |
currencies.json | /v1/currencies | Adds symbols, decimal digits and countries |
usage.json | /v1/status | Free; does not count against quota |
ohlc.json | – | Not offered by fxapi |
| – | /v1/fluctuation, /v1/average | No OXR equivalent listed |
Response shape
OXR returns base, a UNIX timestamp and a flat rates object (rates.EUR). fxapi returns an ISO 8601 meta.last_updated_at and a data object keyed by currency code, where each entry has code and value (data.EUR.value). If you stored OXR’s timestamp alongside transactions, store last_updated_at instead – it’s already a UTC string.
Before and after
Open Exchange Rates, as documented:
curl "https://openexchangerates.org/api/latest.json?app_id=YOUR_APP_ID&symbols=EUR,GBP"
fxapi:
curl -G "https://api.fxapi.com/v1/latest" \
-d base_currency=USD \
-d currencies=EUR,GBP \
-H "apikey: $FXAPI_KEY"
import os
import requests
resp = requests.get(
"https://api.fxapi.com/v1/latest",
params={"base_currency": "USD", "currencies": "EUR,GBP"},
headers={"apikey": os.environ["FXAPI_KEY"]},
timeout=10,
)
resp.raise_for_status()
body = resp.json()
# OXR-style {"EUR": ..., "GBP": ...} for existing code
rates = {code: item["value"] for code, item in body["data"].items()}
updated_at = body["meta"]["last_updated_at"]
fxapi signals errors with HTTP status codes – 401 (invalid key), 403 (endpoint not in plan), 422 (validation, with an errors object per parameter) and 429 (limit reached). More in the Python guide.
Verdict
Stay with Open Exchange Rates if a USD base and hourly updates are enough and you value the 1,000-request free plan, if you need unlimited requests on a flat fee, or if you need bid-ask and OHLC data from the VIP tier. Choose fxapi if you need a non-USD base without paying, conversion and time series at lower plan levels, fluctuation and IAS 21 averages included, or 60-second updates at $34.99 a month. The endpoint map above keeps a switch to a small, contained change – try it 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
Can I use a non-USD base currency for free?
base_currency accepts any supported code on the Free plan. Open Exchange Rates’ docs state that changing base is available to paid plans only, so free accounts get USD.Which API has the larger free plan?
Does fxapi have an equivalent to OXR's time-series.json?
/v1/range returns rates between two dates, with up to 366 days per call at daily accuracy and one request per call. It is available from the Professional plan.Does fxapi offer OHLC or bid/ask prices?
How do I authenticate after switching?
app_id query parameter with an apikey HTTP header. fxapi also accepts apikey as a query parameter, but the header keeps keys out of logs.