Foreign exchange rates made simple and transparent
Real-time and historical exchange rates for 190+ currencies, crypto and precious metals in one JSON API, with conversion, time series, fluctuation and averages. Rates refresh every 60 seconds on paid plans.
curl -G "https://api.fxapi.com/v1/latest" \
-d base_currency=USD \
-d currencies=EUR,GBP,JPY \
-H "apikey: $FXAPI_KEY"const url = new URL("https://api.fxapi.com/v1/latest")
url.search = "base_currency=USD¤cies=EUR,GBP,JPY"
const res = await fetch(url, {
headers: { apikey: process.env.FXAPI_KEY }
})
const { data } = await res.json()import os, requests
res = requests.get(
"https://api.fxapi.com/v1/latest",
params={"base_currency": "USD", "currencies": "EUR,GBP,JPY"},
headers={"apikey": os.environ["FXAPI_KEY"]},
)
data = res.json()["data"]$query = http_build_query([
"base_currency" => "USD",
"currencies" => "EUR,GBP,JPY",
]);
$ch = curl_init("https://api.fxapi.com/v1/latest?$query");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["apikey: " . getenv("FXAPI_KEY")],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true)["data"];{
"meta": {
"last_updated_at": "2026-10-01T23:59:59Z"
},
"data": {
"EUR": { "code": "EUR", "value": 0.8890791312 },
"GBP": { "code": "GBP", "value": 0.757731092 },
"JPY": { "code": "JPY", "value": 157.9280223263 }
}
}Updates every 60 seconds
On paid plans, every rate refreshes every 60 seconds. The free plan updates daily.
190+ currencies
Every major fiat currency, plus Bitcoin, Ethereum and other cryptocurrencies, and gold, silver, platinum and palladium.
Secure by default
HTTPS everywhere, IP and URL allowlists and team access controls keep your keys and data safe.
Eight endpoints for exchange rate data
Latest and historical rates, time series, conversions, fluctuations and averages, as JSON, with any currency as the base.
The latest rates; USD is the default base.
/v1/historicalRates for one date, generally back to 1999.
/v1/convertConvert an amount for today or any date.
/v1/rangeA series of rates between two dates.
/v1/fluctuationEach currency's change between two dates.
/v1/averageMonthly, quarterly or yearly averages, lows and highs.
/v1/currenciesEvery supported currency.
/v1/statusYour remaining quota.
Try the latest endpoint
Pick two currencies and see the rate the API returns. 99.99% uptime, stable JSON.
{
"meta": {
"last_updated_at": "2022-07-21T23:59:59Z"
},
"data": {
"EUR": {
"code": "EUR",
"value": 0.978416
}
}
}
Plans
Start free with 300 requests a month. Paid plans add faster updates, more endpoints and team features.
| Plan | Per month | Requests / month | Updates | Includes |
|---|---|---|---|---|
| Free | $0 | 300 | Daily | Latest, historical, fluctuation and averages |
| Basic | $9.99 | 15,000 | Hourly | Free features plus the conversion endpoint |
| Professional Most popular | $34.99 | 600,000 | Every minute | Basic features plus the range endpoint, team management, 2 API keys |
| Enterprise | $74.99 | 1,700,000 | Every minute | Professional features plus IP and URL whitelisting, 5 API keys, SLA |
Yearly billing saves 20%. Prices exclude VAT.
A hosted MCP server for exchange rates
Connect Claude, Cursor, VS Code or any other MCP client. The API's endpoints become tools your agent can call, with your API key in the apikey header.
// mcp.json { "mcpServers": { "fxapi": { "url": "https://api.fxapi.com/mcp", "headers": { "apikey": "YOUR_API_KEY" } } } }
“fxapi.com is straight-forward and reliable since day one. The API is customizable to our company’s needs, easy-to-use, and has helped our international business reach the next level.”
Wernhard Berger, CEO, Breatheilo.comGet a custom plan!
Some businesses need a tailored plan. Tell us what you need and we'll put one together.