Introduction
exchangerate.dev is a REST API for indicative foreign exchange rates — live 24/7 including weekends, with source, market_session, and honest freshness on every response. Start with a free key, no credit card required.
market_session and source fields tell you exactly what you are looking at on every call.Quickstart
Sign up for a free key, then make your first call. Every endpoint accepts your key as a header.
Authentication
Pass your key in the Authorization: Bearer header on every request. Keys are tied to a tier; quota is metered per calendar month and resets at 00:00 UTC on the 1st.
Rate limits
Limits are per key, per calendar month. On 429 the response includes Retry-After.
The source field
Every response carries a source that tells you the quality of the rate. This is not a vendor name — it is a freshness class.
live— intraday spot consensus, updates on short intervals including weekendsecb_daily— ECB reference fix, published each business day ~16:00 CETfred_daily— FRED reference rate (NZD and others not on ECB)
The market_session field
The market_session field tells you whether the market is open and trading or in a reduced-liquidity period.
open— major FX session active (Sydney / Tokyo / London / New York)weekend— Saturday/Sunday; live rates continue from spot consensusinterbank_closed— post-Friday close before Sydney open
Indicative rates
All rates are indicative — from aggregated market data + public reference rates, ±5–15 bps. They are not bank-grade, not for settlement, and carry no SLA at v1. The notice field on ECB/FRED responses makes this explicit.
Derived crosses
Pairs not directly quoted (e.g. EUR/GBP derived from EUR/USD and GBP/USD) are triangulated. Derived rates are flagged in derived_symbols and carry a derivation_bps_max field. Filter them out with ?source=native.
GET /v1/latest
Latest rates for all supported pairs, or a filtered subset via ?symbols=.
GET /v1/{YYYY-MM-DD}
Historical snapshot — returns the reference rate as published on that date. Dates back to 1999-01-04 (ECB series start).
GET /v1/convert
Single or batch currency conversion. The POST form accepts multiple pairs in one call.
GET /v1/range
Daily time-series for a date window. Capped at 366 rows/page; keyset pagination for longer windows.
GET /v1/currencies
Full list of supported pairs with name, type, decimal precision, and derived flag.
GET /v1/account
Your current quota, tier, and monthly reset timestamp.
Python SDK
Node SDK
MCP server
Use exchangerate.dev as a tool in any MCP-compatible AI agent.