This page is for developers using ExchangeRate-API (exchangerate-api.com) who need more than its current plan offers, or who are choosing between it and fxapi as an ExchangeRate-API alternative. ExchangeRate-API, operated by AYR Tech (Pty) Ltd since 2010, offers a 1.5K-request free plan with any base currency, a keyless open-access endpoint, low-cost paid plans and a long-term support commitment – an excellent fit for simple “latest rate” needs. fxapi is the better fit when you need historical data on a free plan, time series, fluctuation and period averages, crypto and precious metals, or updates every 60 seconds.
fxapi vs ExchangeRate-API at a glance
| Criterion | fxapi | ExchangeRate-API |
|---|---|---|
| Free plan | 300 requests/month (10/minute), daily updates | 1.5K requests/month, daily updates; plus a keyless open-access endpoint (daily, attribution required) |
| Entry paid plan | Basic: $9.99/month, 15,000 requests | Pro: $10/month ($100/year), 30,000 requests |
| Update frequency | Daily (Free), hourly (Basic), 60 seconds (Professional, Enterprise) | Daily (Free), 60 minutes (Pro), 5 minutes (Business) |
| Currencies | 190+ (fiat, legacy, 4 metals, 16 crypto) | 161–165 per their site (both figures are stated) |
| Historical data | Daily, back to 1999-01-01, all plans | Pro and up; full currency list from 2021-01-01, a smaller set back to 1990 |
| Time series | /v1/range, Professional ($34.99) and up | Not stated |
| Conversion | /v1/convert, Basic and up | Pair conversion with amount, available on Free |
| 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 code in the URL path) |
| 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 exchangerate-api.com (pricing and FAQ), docs overview, historical data docs, open access docs and supported currencies. Plans change – verify on their site.
Where ExchangeRate-API is strong
- Larger free quota with any base. 1.5K requests a month, with the base currency set directly in the URL, covers a lot of small apps.
- Keyless open access.
open.er-api.com/v6/latest/USDneeds no key at all – handy for prototypes – as long as you add the required attribution link and stay within its rate limit. - Conversion on the free plan. The pair endpoint returns
conversion_rate, andconversion_resultwhen you pass an amount. - Low-cost paid plans. Pro is $10/month for 30,000 requests; Business is $30/month for 125,000 requests with 5-minute updates.
- Soft quota cap. The site states notifications at 75% and 100% of quota and a soft cap at 100%, so a small overrun doesn’t break production immediately.
- Transparent sourcing statement. ExchangeRate-API says it blends multiple central banks and commercial sources and only supports a currency when it has at least three sources.
- Enriched data. Pro and higher plans can add localization data to rates.
Where fxapi is different
Historical data on every plan
fxapi’s historical exchange rates API covers all 190+ codes with daily data back to 1999-01-01, on the Free plan too. ExchangeRate-API’s historical endpoint starts at Pro, with the full currency list from 2021.
Time series in one call
/v1/range returns a series between two timestamps: daily for up to 366 days, weekly for up to 1,830 days, month-end back to 1999 – or hour, quarter_hour and minute accuracy for recent periods. Add format=csv for spreadsheets. With a single-date historical endpoint, a year of daily data means one request per day; with /v1/range it’s one request. Available from Professional.
Fluctuation and averages
/v1/fluctuation returns start_rate, end_rate, change and change_pct per currency. /v1/average returns monthly, quarterly, yearly or total averages with min and max – the numbers IAS 21 and ASC 830 translation needs. Both work on Free.
60-second updates and more currencies
Professional and Enterprise refresh every 60 seconds. Coverage includes 16 cryptocurrencies and four precious metals in addition to fiat – see the crypto and gold and silver pages.
MCP and SDKs
The fxapi MCP server gives AI agents tool access to every endpoint, and official SDKs exist for seven languages.
Migrating from ExchangeRate-API to fxapi
Endpoint mapping
| ExchangeRate-API | fxapi | Notes |
|---|---|---|
/v6/{KEY}/latest/{BASE} | /v1/latest | Base moves to base_currency; filter with currencies |
/v6/{KEY}/pair/{FROM}/{TO}/{AMOUNT} | /v1/convert | value=AMOUNT&base_currency=FROM¤cies=TO (Basic and up) |
/v6/{KEY}/pair/{FROM}/{TO} | /v1/latest | base_currency=FROM¤cies=TO |
/v6/{KEY}/history/{BASE}/{Y}/{M}/{D} | /v1/historical | date=YYYY-MM-DD (with leading zeros) |
| Supported codes request | /v1/currencies | Adds symbols, decimal digits, countries |
| – | /v1/range, /v1/fluctuation, /v1/average | No ExchangeRate-API equivalent stated |
| – | /v1/status | Quota usage; does not count against quota |
Response shape
ExchangeRate-API returns result: "success", base_code, update timestamps (time_last_update_utc, time_next_update_utc) and a flat conversion_rates object. fxapi returns meta.last_updated_at and a data object keyed by code, where each entry has code and value. ExchangeRate-API’s result: "error" with an error-type roughly corresponds to fxapi HTTP status codes: invalid-key → 401, unsupported-code / malformed-request → 422, quota-reached → 429.
Before and after
ExchangeRate-API:
curl "https://v6.exchangerate-api.com/v6/YOUR-API-KEY/latest/USD"
fxapi:
curl -G "https://api.fxapi.com/v1/latest" \
-d base_currency=USD \
-H "apikey: $FXAPI_KEY"
import os
import requests
resp = requests.get(
"https://api.fxapi.com/v1/latest",
params={"base_currency": "USD"},
headers={"apikey": os.environ["FXAPI_KEY"]},
timeout=10,
)
resp.raise_for_status()
body = resp.json()
# Same shape as ExchangeRate-API's conversion_rates
conversion_rates = {code: item["value"] for code, item in body["data"].items()}
ExchangeRate-API includes time_next_update_utc; fxapi gives last_updated_at, so cache for your plan’s refresh interval (daily, hourly or 60 seconds). See caching exchange rates and the Python guide.
Verdict
Choose ExchangeRate-API if you need current rates with any base, a 1.5K-request free plan or keyless access for prototypes, and low-cost paid plans – and historical depth isn’t central. Choose fxapi if you need historical rates without paying, time series in one call, fluctuation and IAS 21 averages, crypto and metals, or 60-second updates. Many teams decide by what they’ll need in a year, not today; if reporting or analytics is on the roadmap, try fxapi with a free key and compare.
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
Does ExchangeRate-API include historical data on the free plan?
Which has the bigger free plan, fxapi or ExchangeRate-API?
Is there a time-series endpoint in ExchangeRate-API?
/v1/range returns up to 366 days of daily rates in one call on the Professional plan.How do I send my API key to fxapi?
apikey HTTP header. It replaces the key in ExchangeRate-API’s URL path or its Authorization: Bearer header.