Frankfurter
Frankfurter registra i tassi di cambio giornalieri da 98 banche centrali e fonti ufficiali per 206 valute. I dati risalgono al 1948.
L'API pubblica è disponibile su api.frankfurter.dev e non richiede alcuna chiave API. Il progetto è open source. Per il pieno controllo puoi anche ospitarlo autonomamente.
Lavori con un agente IA? Indirizzalo verso llms.txt oppure collega il server MCP.
Tassi di cambio
Ottieni i tassi di cambio più recenti.
curl https://api.frankfurter.dev/v2/ratesCambia la valuta di base con base.
curl https://api.frankfurter.dev/v2/rates?base=usdFiltra le valute di destinazione con quotes.
curl https://api.frankfurter.dev/v2/rates?quotes=usd,gbpTassi storici
Consulta i tassi per una data specifica.
curl https://api.frankfurter.dev/v2/rates?date=1999-01-04Serie temporali
Ottieni i tassi di cambio per un periodo con from e to.
curl https://api.frankfurter.dev/v2/rates?from=2026-01-01"es=usdSuggerimento: Filtrare le valute mantiene le risposte contenute. Per intervalli di date estesi, richiedi NDJSON per ricevere i risultati in streaming riga per riga.
Raggruppamento
Riduci la risoluzione di una serie temporale con group. Valori supportati: week e month.
curl https://api.frankfurter.dev/v2/rates?from=2026-01-01&group=monthFiltra per fonte
Limita l'ambito a fonti specifiche con providers.
curl https://api.frankfurter.dev/v2/rates?providers=ecb Per impostazione predefinita, i tassi sono combinati tra tutte le fonti. Usa providers per ottenere i tassi da una fonte specifica, oppure consulta direttamente i relativi endpoint della fonte.
Attribuzione della fonte
Aggiungi expand=providers per visualizzare quali fonti hanno contribuito a ciascun tasso combinato.
curl https://api.frankfurter.dev/v2/rates?expand=providers Ogni riga include un array providers con le chiavi delle fonti partecipanti. Nelle righe con valute a cambio fisso il campo viene omesso, poiché tali tassi derivano dall'aggancio monetario e non dai dati delle fonti.
Output CSV
I tassi sono disponibili anche in CSV. Aggiungi .csv al percorso o imposta l'header Accept su text/csv.
curl https://api.frankfurter.dev/v2/rates.csvOutput NDJSON
Per risposte voluminose, richiedi NDJSON (JSON delimitato da newline) impostando l'header Accept su application/x-ndjson. Ogni riga è un oggetto JSON indipendente, ideale per lo streaming di lunghe serie temporali senza memorizzare nel buffer l'intera risposta.
curl https://api.frankfurter.dev/v2/rates?from=2026-01-01Tasso singolo
Ottieni il tasso di cambio per una singola coppia di valute.
curl https://api.frankfurter.dev/v2/rate/eur/usdValute
Ottieni le valute disponibili e la copertura delle fonti.
curl https://api.frankfurter.dev/v2/currenciesIncludi le valute storiche con scope.
curl https://api.frankfurter.dev/v2/currencies?scope=allSingola valuta
Ottieni dettagli e copertura delle fonti per una specifica valuta.
curl https://api.frankfurter.dev/v2/currency/eurFonti
Elenca le fonti di dati dell'API.
curl https://api.frankfurter.dev/v2/providersOttieni dettagli per una specifica fonte.
curl https://api.frankfurter.dev/v2/providers/ecbTassi per fonte
Consulta i tassi direttamente da una determinata fonte. Supporta gli stessi parametri di /v2/rates e /v2/rate.
curl https://api.frankfurter.dev/v2/providers/ecb/ratesOttieni una singola coppia di valute da quella fonte.
curl https://api.frankfurter.dev/v2/providers/ecb/rate/eur/usd Ottieni i tassi di una coppia di valute per un periodo. Si può combinare con date, intervalli di date (from e to) o raggruppamento. Anche formati come .csv e ndjson funzionano qui.
curl https://api.frankfurter.dev/v2/providers/ecb/rates?date=2024-05-15Conversione
Non esiste un endpoint di conversione dedicato. Ottieni il tasso e converti con poche righe di codice.
function convert(base, quote, amount) {
const api = "https://api.frankfurter.dev";
return fetch(`${api}/v2/rate/${base}/${quote}`)
.then((r) => r.json())
.then((d) => (amount * d.rate).toFixed(2));
}
convert("eur", "usd", 10).then((result) =>
alert(`10 EUR = ${result} USD`)
);Errori
L'API risponde con codici di stato HTTP standard e un corpo JSON.
{
"message": "Could not find currency ABC"
}400- Parametro non valido o richiesta non corretta.
404- Valuta, tasso o risorsa non trovata.
422- Richiesta compresa, ma impossibile da elaborare.
Self-Hosting
Puoi ospitare Frankfurter con Docker. La guida al deploy spiega la configurazione in produzione e la gestione delle chiavi API.
FAQ
- A chi è rivolto Frankfurter (e a chi no)?
- È ideale per fatturazione SaaS, e-commerce, rendicontazione fiscale, sistemi ERP e contabili, e ricerca accademica con serie storiche dal 1948. Non è pensato per il trading in tempo reale, né per attività con valute esotiche soggette a forti oscillazioni infragiornaliere.
- L'API è gratuita per uso commerciale?
- Sì, certamente. Per i dati sottostanti si applicano i termini di ciascuna fonte.
- Ci sono quote di utilizzo o limiti di chiamate?
- Non ci sono quote. Si applica un rate limiting per prevenire abusi, ma non esistono tetti giornalieri né mensili. Per volumi elevati, conviene memorizzare le risposte in cache, ospitare il servizio in proprio o interrogare direttamente i dataset.
- L'API supporta GraphQL?
- No. L'API REST è così semplice che GraphQL aggiungerebbe solo complessità senza grandi vantaggi. Inoltre disabiliterebbe il caching edge che la rende veloce. Con parametri di query come
base,quotesefrom/toottieni esattamente ciò di cui hai bisogno. - L'API v1 verrà dismessa?
- No. L'API v1 è contrassegnata come deprecated a favore di v2, ma rimarrà disponibile a tempo indeterminato. Maggiori dettagli nella documentazione v1. Per i dati della BCE, consulta /v2/providers/ecb/rates.
- Qual è la privacy policy dell'API?
- L'API non raccoglie né memorizza dati personali, indirizzi IP o URL richiesti. L'istanza pubblica funziona dietro Cloudflare per la memorizzazione nella cache e la difesa da attacchi DDoS, fornendo solo statistiche aggregate sul traffico.
- Devo indicare l'API nelle schede sulla privacy di App Store o Google Play?
- No. Poiché le richieste sono anonime e non viene conservato alcun log, sono considerate dati non raccolti secondo le linee guida di Apple e Google Play.
- Dove posso segnalare bug o fare domande?
- Apri una issue per segnalare bug, proporre funzionalità o suggerire nuove fonti. Domande, librerie e strumenti sviluppati con Frankfurter possono essere condivisi nelle Discussions.
- Quanto sono precisi i tassi di cambio?
- Per conformità normativa, filtra per una specifica fonte così da ottenere i suoi tassi ufficiali di riferimento. Per qualsiasi altro uso, i tassi combinati predefiniti sono appropriati, sebbene le ultime cifre decimali possano variare all'arrivo di nuovi dati.
- I tassi sono medi, di acquisto o di vendita?
- L'API restituisce tassi medi di mercato (mid-market). Se una fonte pubblica quotazioni di acquisto (bid) e vendita (ask) invece di un tasso di riferimento, Frankfurter memorizza entrambe e calcola la media.
- Tutti i tassi di cambio sono giornalieri?
- Quasi tutti. Solo 2 fonti pubblicano con frequenza non giornaliera: l'autorità fiscale britannica HMRC (mensile) e il Dipartimento del Tesoro statunitense UST (trimestrale). Poiché i loro tassi rimangono validi per settimane o mesi, non entrano nel feed combinato e compaiono solo interrogando direttamente quelle fonti.
- Perché i periodi di alcune valute vecchie e nuove si sovrappongono?
- Alcune fonti applicano retroattivamente le valute successive al periodo della valuta sostituita (ad esempio,
TRLtermina nel 2010 mentreTRYinizia nel 1996). Manteniamo i dati originali così come sono e filtriamo le sovrapposizioni solo nella combinazione. - Perché Frankfurter?
- Perché la Banca centrale europea, con i cui dati è iniziato tutto, ha sede a Francoforte.