Excel
Excel's own answer to exchange rates is the Currencies data type in Microsoft 365: a live blended rate you can't pin to a source or pull history from. Frankfurter's blend is inspectable, and when the source has to be exact you can pin one authority: the ECB reference rate for EU VAT, Poland's NBP, or Brazil's PTAX. A pinned provider's history stays as published. Power Query does the work on Windows and Mac. Windows also gets a one-line formula for quick conversions.
Power Query
The main path on both Windows and Mac. Go to Data, From Web, paste the CSV endpoint, and load a date,base,quote,rate table. Refresh it any time with Data, Refresh All:
https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eurAsk for several quotes at once by separating them with commas:
https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur,gbp,jpyConvert an Amount
Power Query loads the rate, not a converted total. Multiply your amount by the loaded rate cell. For a one-off conversion without a query, Microsoft 365 on Windows can call the API inline. Add a named function (Formulas, Name Manager, New) called FRANKFURTER with this definition:
=LAMBDA(amount, from, to, [date], amount * NUMBERVALUE(TEXTBEFORE(TEXTAFTER(WEBSERVICE("https://api.frankfurter.dev/v2/rate/" & from & "/" & to & IF(ISOMITTED(date), "", "?date=" & YEAR(date) & "-" & TEXT(MONTH(date), "00") & "-" & TEXT(DAY(date), "00"))), """rate"":"), "}"), "."))Then call it from any cell:
=FRANKFURTER(100, "usd", "eur")Pass a date for a historical rate:
=FRANKFURTER(100, "usd", "eur", DATE(2020, 1, 2)) WEBSERVICE is Windows-only, and since Excel has no JSON parser in formulas the function reads the rate straight out of the response text. NUMBERVALUE with an explicit decimal point keeps it working in locales that use a comma. On Mac, multiply against a Power Query rate cell instead.
Pin an Official Provider
By default you get the blend across every provider. Add providers to the query URL to pin a single authority. This matters for tax and accounting: many countries require their own central bank's published rate when converting foreign-currency amounts.
https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur&providers=ecbECB- European Central Bank reference rate, the standard for EU VAT and customs.
NBP- Narodowy Bank Polski. Polish VAT and CIT convert at the NBP rate.
CNB- Czech National Bank fixing, used for Czech accounting and tax.
BCB- Banco Central do Brasil PTAX, the reference for Brazilian contracts and tax.
BANXICO- Banco de México FIX rate for settling US dollar obligations.
Browse all providers. A pinned provider follows its own publishing schedule, so its latest rate can trail the blended latest by a day.
Historical Series
Use from for a date range and group=month to collapse it to one row per month, ready to chart. Load it through Power Query and it refreshes like any other query. Blended history can shift slightly as new data comes in, so pin a provider when figures must stay fixed.
https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd"es=gbp&providers=bbk&group=month That pulls the US dollar against the pound back to 1949 from the Deutsche Bundesbank archive. You can watch the $2.80 cable peg hold flat for years, then break in 1967. Deep history runs through the Bundesbank's Frankfurt fixings: the dollar against the mark from 1948, most other dollar crosses from 1949 to 1970. The European Central Bank takes over from 1999, so a continuous modern series uses the default blend or providers=ecb.