The v1 API is deprecated in favor of v2, but will continue to work.

API Endpoints

Get the latest rates, historical rates, or a time series.

Latest Rates
Fetch the latest working day's rates, updated daily around 16:00 CET.
curl https://api.frankfurter.dev/v1/latest
Change the base currency using the base parameter. The default is EUR.
curl https://api.frankfurter.dev/v1/latest?base=USD
Limit the response to specific target currencies.
curl https://api.frankfurter.dev/v1/latest?symbols=CHF,GBP
Historical Rates
Retrieve rates for a specific date.
curl https://api.frankfurter.dev/v1/1999-01-04
Change the base currency and filter target currencies.
curl https://api.frankfurter.dev/v1/1999-01-04?base=USD&symbols=EUR
Note: Frankfurter stores dates in UTC, so in another time zone you may query a different calendar date than you expect. Today's rates can still change if new ones are published.
Time Series Data
Fetch rates over a period.
curl https://api.frankfurter.dev/v1/2000-01-01..2000-12-31
Fetch rates up to the present.
curl https://api.frankfurter.dev/v1/2024-01-01..
Tip: Filter currencies to reduce response size and improve performance.
curl https://api.frankfurter.dev/v1/2024-01-01..?symbols=USD
Available currencies
Get supported currency symbols and their full names.
curl https://api.frankfurter.dev/v1/currencies
Currency Conversion
Fetch the rate and do the conversion in your code.
function convert(from, to, amount) {
  fetch(`https://api.frankfurter.dev/v1/latest?base=${from}&symbols=${to}`)
    .then((resp) => resp.json())
    .then((data) => {
      const convertedAmount = (amount * data.rates[to]).toFixed(2);
      alert(`${amount} ${from} = ${convertedAmount} ${to}`);
    });
  }

convert("EUR", "USD", 10);