Exchange rate API on Reddit: the developer questions, answered
The free-exchange-rate-API questions that come up on Reddit, answered straight: the free tier, how fresh the rates are, rate limits, auth, commercial use, and whether the data is good enough to build on.
If you have searched Reddit for a free exchange rate API, the same questions come up in r/webdev, r/forex, and r/node. The short version: there is a genuinely free tier, the first call needs no key, and every response tells you how fresh each rate is. Here are the rest, answered straight.
source and market_session, so you always know how fresh a rate is.What exchangerate.dev is, and what it is not
It is a developer API for foreign exchange rates: 168 pairs over a clean REST endpoint at https://api.exchangerate.dev. Every response carries source, market_session, and a timestamp, so your code always knows how fresh the number is rather than trusting a blanket "real-time" label.
It is not a dealing venue or a source of record. The rates are indicative, published for display and analytics. If you need an executable quote to settle a trade, no public FX API is the right tool, this one included.
Is there really a free tier?
Yes, and it does not need a card. Every plan gets the same data and the same freshness; they differ only by call volume and rate limit.
- Free — $0, 10,000 calls a month at 12 requests a minute. All 168 pairs, full history, MCP included. No card.
- Basic — $30/mo, or $24/mo billed annually. 100,000 calls a month at 120 requests a minute.
- Pro — $50/mo, or $40/mo billed annually. 1,000,000 calls a month at 500 requests a minute, with priority email support.
How fresh are the rates?
Sixteen currencies reprice live, roughly every 60 seconds on trading days. The rest are daily reference rates from the ECB and FRED. You never have to guess which one you are looking at, because two fields on every response tell you: source is the data class, and market_session says whether the FX day is open, weekend, or between sessions.
What are the rate limits?
Twelve requests a minute on Free, 120 on Basic, 500 on Pro. For most apps a short client-side cache, matched to how often a rate actually moves, keeps you comfortably inside the free 10,000 calls. You can read your remaining quota and monthly reset any time with GET /v1/account.
How do I authenticate?
A bearer token. Keys are prefixed exr_live_ and go in the Authorization header. The first call works anonymously, capped per IP, so you can test before signing up. An X-API-Key header is also accepted for platforms that cannot set Authorization.
I already use another FX API
The request parameters are Frankfurter-compatible, so for many projects the migration is a base-URL swap with no code rewrite. The migrating-from-Frankfurter guide covers the exact mapping, including where the response adds fields rather than removing them.
Can I use it commercially?
Displaying the rates in a product you ship requires the Pro plan. The Free and Basic tiers are for internal use — dashboards, backtests, and personal or internal tools — and redistributing the raw feed is not permitted on any tier. Whatever the plan, the rates are indicative: not a dealing quote, and not a regulated source of record. Every response says so in its notice field.
Can my LLM agent use it?
Yes. An MCP server lives at https://api.exchangerate.dev/v1/mcp with five tools — list_currencies, get_rate, convert, get_range, and search_docs — available on every plan including Free. Install it with npx exchangerate-dev-mcp and the agent fetches rates directly, no hand-rolled tool code. The MCP walkthrough has the setup detail.
The shortest call
No key, no dependencies:
You get back JSON with the rates, plus source and market_session so you know exactly how fresh each one is. That single call is enough to put live, honest FX into whatever you are building. A free key raises the limit to 10,000 calls a month and takes a minute.
notice field.