JavaScript
Non serve un SDK. fetch è integrato in tutti i browser, in Node, Deno, Bun e nei runtime edge. CORS è aperto e non ci sono chiavi da proteggere, quindi puoi chiamare l'API direttamente dal codice client.
Avvio rapido
Ottieni un tasso e converti:
const res = await fetch("https://api.frankfurter.dev/v2/rate/usd/eur");
const data = await res.json();
const total = 100 * data.rate; La risposta è un singolo oggetto piatto: {"date": "2026-07-17", "base": "USD", "quote": "EUR", "rate": 0.8739}. fetch risolve la Promise anche in caso di errori HTTP, quindi controlla res.ok; un codice valuta non valido restituisce un 422 con un messaggio JSON.
Formattare con Intl
Non posizionare i simboli di valuta a mano. Intl.NumberFormat conosce il simbolo, la sua posizione e i decimali di ogni valuta, in ogni locale:
const res = await fetch("https://api.frankfurter.dev/v2/rate/usd/eur");
const { rate } = await res.json();
const eur = new Intl.NumberFormat("it", {
style: "currency",
currency: "EUR",
});
eur.format(100 * rate); // "87,39 €"Simboli e decimali
Non serve includere nel progetto una tabella di metadati per sottounità o simboli. Chiedi al formatter:
const yen = new Intl.NumberFormat("it", {
style: "currency",
currency: "JPY",
});
yen.resolvedOptions().maximumFractionDigits; // 0, lo yen non ha sottounità
yen.formatToParts(1).find((part) => part.type === "currency").value; // "JPY" (con "en" è "¥")Vedi tutte le valute disponibili su Frankfurter, con codici e simboli.
Più valute in una richiesta
/v2/rates restituisce un array piatto, con una riga per valuta. Trasformalo in un oggetto di lookup con Object.fromEntries. Ometti quotes per avere tutte le valute.
const api = "https://api.frankfurter.dev";
const res = await fetch(`${api}/v2/rates?base=usd"es=eur,gbp,jpy`);
const rows = await res.json();
const rates = Object.fromEntries(rows.map((row) => [row.quote, row.rate]));
// { EUR: 0.8739, GBP: 0.74388, JPY: 162.33 }Scegliere una fonte ufficiale
Di default ottieni il tasso combinato di tutte le fonti. Aggiungi providers per usare una sola istituzione, cosa importante quando una giurisdizione richiede il tasso pubblicato dalla propria banca centrale, come il tasso di riferimento BCE per l'IVA UE.
const api = "https://api.frankfurter.dev";
const res = await fetch(`${api}/v2/rate/usd/eur?providers=ecb`);Vedi tutte le fonti. Una singola fonte segue il proprio calendario di pubblicazione, quindi il suo ultimo tasso può arrivare con un giorno di ritardo rispetto a quello combinato.
Provalo subito
Nel playground puoi comporre query e vedere le risposte senza uscire dal browser.