How to get a free exchange rate API key (and when you don’t need one)
You can call the exchangerate.dev API with no key at all — 12 requests a minute, straight from curl or a browser. A free key takes about a minute to create and raises that to 10,000 calls a month with your own quota. This guide shows both paths and where each one stops.
Two honest answers, shortest first. For trying the API you need no key: every data endpoint — /v1/latest, /v1/convert, /v1/range, /v1/{date} — answers anonymous requests at 12 requests a minute and 100 an hour per IP. For anything that runs on a schedule or ships to other people, sign up at exchangerate.dev/signup, confirm your email, and copy the key that starts with exr_live_ from the dashboard. Free tier: 10,000 calls a month, 12 requests a minute, one year of history, no credit card.
exr_live_....Authorization: Bearer exr_live_..., or X-API-Key when a connector cannot set the Authorization header.The no-key path: try the API first
Before creating anything, call the API and look at a real payload. This works from any terminal with no signup:
Every response carries source and market_session, so you can see whether a rate is a live consensus or the ECB daily fix before you decide anything. You can also run the same call in the browser and read the JSON there.
Get the free key
- Open exchangerate.dev/signup and register with your email. There is no credit-card step.
- Confirm the email. Your dashboard opens with an API key already provisioned.
- Copy the key — it starts with
exr_live_. This prefix is how you recognize it in configs later.
The free tier is 10,000 calls a month at 12 requests a minute, with one year of daily history and live rates where live coverage exists. That is the same data quality paid tiers read — tiers differ by volume and request rate, not by freshness.
Use the key: headers, never URLs
Pass the key in a header. Authorization: Bearer is the primary form; X-API-Key exists for connectors that cannot set an Authorization header (some BI tools and no-code platforms):
Keep the key out of query strings, out of client-side JavaScript bundles, and out of version control. In application code, read it from an environment variable; for a public front-end, route calls through a small server-side proxy so the key never reaches the browser.
Which path do you actually need?
notice field.