Skip to content
Live exchange rates

Real-time exchange rate API

Live foreign exchange rates for 190+ fiat, crypto and precious-metal currencies, refreshed every 60 seconds on paid plans. One HTTPS call to /v1/latest, any base currency, a timestamp on every response.

UpdatesEvery 60 s
Currencies190+
BaseAny
FormatJSON
200 OK · GET /v1/latest
curl -G "https://api.fxapi.com/v1/latest" \
  -d base_currency=EUR \
  -d currencies=USD,GBP,CHF,XAU \
  -H "apikey: $FXAPI_KEY"
{
  "meta": { "last_updated_at": "2026-10-08T09:31:00Z" },
  "data": {
    "USD": { "code": "USD", "value": 1.0924 },
    "GBP": { "code": "GBP", "value": 0.8348 },
    "CHF": { "code": "CHF", "value": 0.9411 },
    "XAU": { "code": "XAU", "value": 0.00041 }
  }
}

Most products don’t need a trading terminal – they need a reliable, current exchange rate to show next to a price, use in a checkout or store with a transaction. The fxapi foreign exchange rates API gives you exactly that: market rates for 190+ currencies, refreshed every 60 seconds on paid plans and delivered as compact JSON over HTTPS. No WebSockets to keep alive, no FIX sessions, no exchange licences – one GET request returns every rate you need.

The /v1/latest endpoint

ParameterRequiredDescription
apikeyyesYour API key – send it as an HTTP header
base_currencynoCurrency all values are relative to, default USD
currenciesnoComma-separated list such as EUR,GBP,JPY – default: all 190+
typenofiat, metal or crypto

The response contains meta.last_updated_at (ISO 8601, UTC) and a data object keyed by currency code. Each value is the amount of the target currency you get for one unit of the base currency. Full reference: latest endpoint docs.

Update frequency by plan

PlanLive rate updatesRequests / monthPrice
Freedaily300$0
Basichourly15,000$9.99
Professionalevery 60 seconds600,000$34.99
Enterpriseevery 60 seconds1,700,000$74.99

Compare everything on the pricing page. If daily rates are enough, the free exchange rate API plan covers you.

What teams build with live exchange rates

Localized prices in e-commerce and SaaS

Show prices in the visitor’s currency, refresh them hourly or every minute, and lock the rate at checkout. Store last_updated_at with the order so finance can trace exactly which rate was used. See multi-currency pricing.

Payments, wallets and payouts

Display an indicative conversion before a user confirms a transfer, or check what your payment provider charges against the market rate. To get converted amounts directly, use the currency converter API.

Dashboards and treasury monitoring

Feed live rates into Grafana, Retool, Power BI or an internal dashboard, and combine them with historical exchange rates and fluctuation to show trends.

AI assistants and agents

Give Claude, Cursor or your own agent direct access to live rates through the hosted fxapi MCP server.

Integration best practices

  1. Keep your key on the server. Send it in the apikey header from your backend; never ship it in a website or mobile app bundle.
  2. Cache by update interval. Store the latest response for as long as your plan’s refresh interval and serve all users from that cache – see caching exchange rates.
  3. Ask for what you need. currencies=EUR,GBP keeps payloads small and parsing fast.
  4. Watch the quota headers. X-RateLimit-Remaining-Quota-Month shows what’s left; HTTP 429 means a limit was reached.
  5. Fail gracefully. If a request fails, fall back to your last cached rate so checkout keeps working.

Node.js: refresh rates every minute with an in-memory cache

let cache = { rates: null, fetchedAt: 0 };

export async function getRates() {
  if (cache.rates && Date.now() - cache.fetchedAt < 60_000) return cache.rates;

  const res = await fetch("https://api.fxapi.com/v1/latest?base_currency=USD", {
    headers: { apikey: process.env.FXAPI_KEY },
  });
  if (!res.ok) {
    if (cache.rates) return cache.rates; // serve the last known rates instead of failing
    throw new Error(`fxapi error ${res.status}`);
  }
  const { data } = await res.json();
  cache = { rates: data, fetchedAt: Date.now() };
  return data;
}

More languages: Python, JavaScript, PHP, Go (Golang) and all guides.

Frequently asked questions

How real-time are fxapi's exchange rates?
On the Professional and Enterprise plans the dataset refreshes every 60 seconds. Basic refreshes hourly and Free daily. Every response carries meta.last_updated_at, the exact UTC timestamp of the data.
Is this a forex trading feed?
No. fxapi delivers mid-market reference rates for pricing, conversion, reporting and analytics. It does not stream tick-by-tick bid/ask quotes and does not execute trades.
Can I get live rates relative to EUR, GBP or another currency?
Yes. Set base_currency to any supported code – EUR, GBP, CHF, JPY, even BTC or XAU – and every value is returned relative to that currency, on every plan.
How often should my application call the latest endpoint?
Match your polling interval to your plan’s update frequency. Polling a 60-second dataset every second wastes quota; cache the response on your server and serve users from the cache.
Are crypto and gold prices included?
Yes. /v1/latest includes precious metals (XAU, XAG, XPT, XPD) and 16 major cryptocurrencies such as BTC, ETH and SOL. Filter with type=crypto or type=metal.
Free plan · no credit card

Get your free exchange rate API key

300 requests a month, latest and historical rates, fluctuation and averages – free forever. Upgrade when you need faster updates or more requests.