TL;DR
Frankfurter tracks foreign exchange reference rates published daily by the European Central Bank. It covers 30+ major currencies including USD, EUR, GBP, JPY, CHF, and CNY. You can fetch the latest rates, convert between currencies, or get historical rates going back to 1999 when the euro launched. All data is updated each weekday around 16:00 CET.
Quick start: https://api.frankfurter.app/latest?from=USD&to=EUR
No API key needed — just make a request!
How to Use This API
1. Latest Rate — USD to EUR
https://api.frankfurter.app/latest?from=USD&to=EUR
Returns {"amount":1.0,"base":"USD","date":"2026-06-16","rates":{"EUR":0.93}}. The from parameter is the base currency (ISO 4217 code), to is the target. Omit to to get all rates for that base.
2. Convert a Specific Amount — GBP to JPY
https://api.frankfurter.app/latest?amount=100&from=GBP&to=JPY
Set amount to convert exactly 100 GBP to JPY. The API multiplies the rate by your amount.
3. Historical Rate — EUR to USD on Jan 1, 2010
https://api.frankfurter.app/2010-01-01?from=EUR&to=USD
Replace latest with any date in YYYY-MM-DD format to get historical ECB rates going back to 1999-01-04.
4. JavaScript — Live Currency Converter
async function convert(amount, from, to) {
const url = `https://api.frankfurter.app/latest?amount=${amount}&from=${from}&to=${to}`;
const data = await fetch(url).then(r => r.json());
return { from, to, amount, result: data.rates[to], date: data.date };
}
convert(250, 'USD', 'EUR').then(console.log);
// { from: 'USD', to: 'EUR', amount: 250, result: 232.5, date: '2026-06-16' }
5. Python — Get All Rates for a Base Currency
import requests
resp = requests.get('https://api.frankfurter.app/latest', params={'from': 'USD'})
data = resp.json()
print(f"Date: {data['date']}")
for currency, rate in data['rates'].items():
if rate >= 1.0:
print(f"1 USD = {rate:.4f} {currency} (above parity)")
https://api.frankfurter.app/latest?from=USD&to=EUR
Frequently Asked Questions
- Where does the exchange rate data come from?
- Directly from the European Central Bank's reference exchange rates. These are the same rates banks and financial institutions use, based on daily coordinated foreign exchange market data at 16:00 CET.
- How often are rates updated?
- Every working day (Monday to Friday) around 16:00 CET. Weekend rates reflect Friday's closing values. No updates on EU public holidays.
- What currencies are supported?
- About 33 currencies: EUR, USD, JPY, BGN, CZK, DKK, GBP, HUF, PLN, RON, SEK, CHF, ISK, NOK, TRY, AUD, BRL, CAD, CNY, HKD, IDR, ILS, INR, KRW, MXN, MYR, NZD, PHP, SGD, THB, ZAR, and more. Full list at
/currencies. - Does this work for cryptocurrency conversion?
- No, Frankfurter only tracks fiat currency rates from the ECB. For crypto prices, use CoinGecko or Coinlore.
- Can I get rates for dates before 1999?
- No, the ECB started publishing euro reference rates on January 4, 1999 when the euro was introduced. No data is available before that date.
- Why are some currency pairs not available?
- ECB reference rates always use EUR as the base. When you query other base currencies (e.g., USD/EUR), the API calculates cross rates through EUR internally. Minor currencies not tracked by the ECB won't be available.
API Details
- API URL
https://api.frankfurter.app- Documentation
- www.frankfurter.app
- Category
- Finance
- Authentication
- Not Required
- Geographic Coverage
- EU — ECB reference rates, covers 33 global currencies
What You Can Build
- Multi-currency shopping cart show estimated prices in the user's home currency
- Travel budgeting app that converts expenses in real time
- Historical forex charting tool — visualize rate trends over years
- Invoice generator for freelancers working with international clients
- E-commerce dashboard showing revenue converted across 30+ currencies