Currency conversion and exchange rates, in one call.
Convert an amount between currencies, pull a full rate table for any base, or list the supported catalog with names and symbols. Both fiat and crypto codes are supported, every rate carries the timestamp it was sourced at, and responses are instant: a request never waits on an upstream provider.
Try a real request
// Fires a real request against the demo API key.
// Click the button below to run it. The response opens in the Explorer panel.
const response = await fetch(
'https://api.restcountries.com/currencies/v1/convert?from=USD&to=EUR&amount=100',
{ headers: { 'Authorization': 'Bearer rc_live_demo' } }
);
const result = await response.json();
Inside one record
One object per conversion target
Records sit under data.objects. from and to are full currency objects, and as_of tells you exactly when the rate was sourced.
{
"from": { "code": "USD", "name": "United States dollar", "symbol": "$" },
"to": { "code": "EUR", "name": "Euro", "symbol": "€" },
"amount": 100,
"rate": 0.8772645,
"result": 87.72645,
"as_of": "2026-06-29T00:00:00Z"
}
// omit ?amount= and the unit rate comes back as "result"
Common questions
Before you wire it in
Can I convert to several currencies at once?
Yes. Pass a comma-separated list of up to five targets to ?to= and you get one object back per target. If any target is unknown the whole request fails, so it's all-or-nothing.
Does it handle crypto?
Yes. Crypto codes like BTC and ETH work anywhere a fiat code does: as a conversion source, a target, or a rate-table base. Codes are accepted case-insensitively and echoed uppercase.
How do I know how current a rate is?
Every object carries an as_of ISO-8601 timestamp for when the rate was sourced, so you can surface or cache on it. See the full reference →
Start converting currencies today.
Free tier covers most prototypes. Point at /currencies/v1/convert and go.