Frankfurter Currency Exchange

Finance API · Based on ECB data · Updated daily · 30+ currencies

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)")
Try USD to EUR: 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