Frankfurter API
Free currency exchange rate API with no key, built on European Central Bank data. Latest and historical rates, time series and conversion. Tested curl example.
Endpoint tested and returned HTTP 200 on 2026-08-19
What is the Frankfurter API?
Frankfurter is a free, open-source currency exchange rate API built on European Central Bank reference rates. It provides latest, historical and time-series rates for around 30 currencies with no API key or signup.
Frankfurter is the cleanest free forex API still standing. Most competitors have quietly moved their free tiers behind registration or key requirements; Frankfurter remains genuinely open, and because it is open source you can self-host it if you need guaranteed availability.
Rates come from the European Central Bank, which publishes reference rates once per working day at around 16:00 CET. That has a practical consequence: rates do not change intraday, and weekend requests return Friday's figures. For accounting and invoicing this is ideal; for live FX trading it is not.
Quick facts
- Base URL
https://api.frankfurter.dev/v1- Authentication
- No key or registration.
- Rate limit
- No published hard limit; fair use expected.
- Pricing
- Free and open source, including commercial use.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Frankfurter API
Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.
1. Latest USD rates against EUR and GBP
GET https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR,GBP
curl 'https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR,GBP'const res = await fetch("https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR,GBP");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR,GBP", timeout=20)
res.raise_for_status()
print(res.json()){
"amount": 1.0,
"base": "USD",
"date": "2026-08-18",
"rates": {
"EUR": 0.86386,
"GBP": 0.73933
}
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
base | string | Optional | Base currency, ISO 4217. Defaults to EUR. USD |
symbols | string | Optional | Comma-separated target currencies. Omit for all. EUR,GBP |
amount | float | Optional | Amount to convert, applied to every returned rate. 100 |
<date> | path | Optional | Use `/v1/2026-01-15` for a historical day, or a `start..end` range for a time series. 2026-01-15 |
Response fields
amountfloat- The amount the rates apply to — 1 unless you passed `amount`.
basestring- Base currency code for the quoted rates.
datestring- The date these rates were published. May be earlier than today on weekends and holidays.
ratesobject- Map of currency code to rate as a number.
What you can build with the Frankfurter API
- Convert prices into a visitor's local currency on an e-commerce site
- Record the exchange rate applied on an invoice using a historical date
- Chart a currency pair over time with the time-series endpoint
- Normalise multi-currency reporting to one base currency
Common errors and how to fix them
404
Unknown currency code or malformed date path.
Fix: Use ISO 4217 codes and YYYY-MM-DD dates. Only ECB-published currencies are available.
Date returned is not the date requested
The ECB does not publish on weekends or holidays; not a bug.
Fix: Read the `date` field in the response rather than assuming it matches your request.
Frankfurter API — frequently asked questions
Is there a free currency exchange rate API with no API key?
Yes. Frankfurter provides latest, historical and time-series exchange rates with no key or signup, using European Central Bank reference data, and is free for commercial use.
How often does Frankfurter update its rates?
Once per working day, following the ECB's publication at around 16:00 CET. Rates are static intraday and unchanged at weekends, so it suits accounting rather than live trading.
Why did I get Friday's date for a Sunday request?
The ECB publishes only on working days, so weekend and holiday requests return the most recent published rates. Always read the `date` field in the response.
Can I get historical exchange rates?
Yes. Request a specific day with `/v1/2026-01-15`, or a full series with a `start..end` date range, optionally restricted with the `symbols` parameter.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Percentage Calculator
Calculate what X% of a number is, what percent one number is of another, and percentage increase or decrease between two values — instantly and free.
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
Frankfurter is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.