Exchangerate.dev

Exchangerate.dev — Live & historical FX, 168 pairs back to 1999, Frankfurt…

📈 FinanceUNMONITORED
AUTH NONECORS AGENT ?HTTPS COMMERCIAL ?

Exchangerate.dev exposes live & historical FX, 168 pairs back to 1999, Frankfurter-compatible, free 10k/mo We verified a keyless GET endpoint returning JSON (Currency Exchange). Check the provider docs for rate limits and terms before production use.

HOW IT'S SCORED ⓘ
Status badge · for your READMEshipapis health badge: — · unmonitored
ON PROBE SCHEDULE

We probe a documented GET and expect 2xx JSON — full uptime and health score. Open provider docs ↗

Uptime historystarts after first probe

On our probe schedule. Uptime charts appear after the first check lands.

Example responsefrom provider docs — not verified by us
GET https://api.exchangerate.dev/v1/latest/USD

{
  "result": "success",
  "base": "USD",
  "source": "fred_daily",
  "sources": {
    "AUD": "live",
    "BGN": "ecb_daily",
    "BRL": "ecb_daily",
    "CAD": "live",
    "CHF": "live",
    "CNY": "ecb_daily",
    "CZK": "ecb_daily",
    "DKK": "ecb_daily"
  },
  "market_session": "weekend",
  "timestamp": "2026-07-05T14:52:56Z",
  "data_updated_at": "2026-06-26T00:00:00Z",
  "rates": {
    "AUD": 1.4415,
    "BGN": 1.70842,
    "BRL": 5.19619,
    "CAD": 1.42104,
    "CHF": 0.80358,
    "CNY": 6.78145,
    "CZK": 21.1338,
    "DKK": 6.52918
  }
}
Call itcurl · fetch · python
curl "https://api.exchangerate.dev/v1/latest/USD"
const res = await fetch("https://api.exchangerate.dev/v1/latest/USD");
const data = await res.json();
console.log(data);
import requests

res = requests.get("https://api.exchangerate.dev/v1/latest/USD")
print(res.json())

BROWSER CALLS BLOCKED (NO CORS/HTTPS) — USE THE CURL SNIPPET

Endpoints · 6On scheduleFULL DOCS ↗
On schedule — GET /v1/latest/USD awaits first probe
GET/v1/latest/USDPROBED

Exchangerate.dev — Live & historical FX, 168 pairs back to 1999, Frankfurt…

GET/v1

V1 — documented GET route.

GET/v1/1

V1 details by ID (example: 1).

GET/v1?limit=10

V1 — documented GET route.

GET/v1/search?q=test

Search by query parameters.

GET/v1/

V1 — documented GET route.

Machine-readable spec

We probe a documented GET and expect 2xx JSON — full uptime and health score. Export includes every documented route below.

Response-shape history

Not tracked yet. Shape-change history starts once this API joins our probe schedule.

Exchangerate.dev: common questions

Is Exchangerate.dev free to use?

Yes — Exchangerate.dev is a free finance API. Free tier: Free — limits not published. Whether the free tier allows commercial use is unclear — check the provider docs.

Does Exchangerate.dev need an API key?

No — Exchangerate.dev needs no API key or signup. You can call it straight away; rate limits still apply (Unpublished).

Can I call Exchangerate.dev from the browser?

Not directly — Exchangerate.dev doesn't send browser-friendly CORS headers, so call it from a server or proxy instead. Copy the curl or Python snippet on this page to get started.

Is Exchangerate.dev up right now?

Exchangerate.dev is catalogued but not yet on our probe schedule, so we don't publish a live status for it. Check the provider's own status page or docs for its current state.