Exchange Rate API documentation
Current rates and historical data over plain JSON. One key, a handful of endpoints, examples you can paste.
Reference
- Base URL
- https://api.exchangerate.dev/v1
- First request
- No API key required
- Free account
- 5,000 calls/month
- Use
- Indicative rates for apps and analysis
curl "https://api.exchangerate.dev/v1/latest/USD?symbols=EUR,GBP"const res = await fetch('https://api.exchangerate.dev/v1/latest/USD?symbols=EUR,GBP')console.log(await res.json())import requestsres = requests.get('https://api.exchangerate.dev/v1/latest/USD?symbols=EUR,GBP')print(res.json())package mainimport ( "fmt" "io" "net/http")func main() { req, _ := http.NewRequest("GET", "https://api.exchangerate.dev/v1/latest/USD?symbols=EUR,GBP", nil) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(string(body))}Response 200
{
"result": "success",
"base": "USD",
"source": "live",
"sources": {
"EUR": "live",
"GBP": "live"
},
"market_session": "open",
"timestamp": "2026-06-15T12:00:00Z",
"data_updated_at": "2026-06-15T12:00:00Z",
"effective_at": {
"EUR": "2026-06-15T12:00:00Z",
"GBP": "2026-06-15T12:00:00Z"
},
"rates": {
"EUR": 0.86207,
"GBP": 0.74627
},
"stale": {
"EUR": false,
"GBP": false
},
"derived_symbols": [],
"notice": "Indicative rates, not for settlement."
}Choose how to connect
An endpoint for each job
Rate data for the apps you build
Practical guides
Frequently asked questions
Is there a free live FX rates API?
Yes. Free live rates arrive 15 minutes late; paid plans are live. A free account includes 5,000 requests per month at 10 requests per minute, with no credit card. Display needs visible linked credit near rates.
What currencies does exchangerate.dev cover?
The API covers 10,296 unique pairs across 144 currencies. Direct and calculated cross rates share the same response format.
How often do rates update?
Paid plans receive live updates as market observations arrive; Free prices are 15 minutes late. Daily reference fixes update once per business day. Read source, effective_at, and market_session for each response.
What does indicative mean?
These rates are for reference, not for settlement, regulated trading, or use as a source of record.
Can I use the API commercially?
Commercial display on your own website or app: Free requires visible linked credit near rates. Paid plans need no credit. No redistribution.
How much historical data is available?
Free includes 30 days of daily history, Basic 1 year, and Plus and Pro daily history back to 1999-01-04. Daily reference series and intraday observations have different coverage.