JavaScript
Du brauchst kein SDK. fetch ist in jedem Browser, in Node, Deno, Bun und Edge-Runtimes integriert. CORS ist offen und es gibt keinen Schlüssel, der versehentlich geleakt werden könnte. Du kannst die API direkt aus dem Client-Code aufrufen.
Schnellstart
Kurs abrufen und umrechnen:
const res = await fetch("https://api.frankfurter.dev/v2/rate/usd/eur");
const data = await res.json();
const total = 100 * data.rate; Die Antwort ist ein flaches Objekt: {"date": "2026-07-17", "base": "USD", "quote": "EUR", "rate": 0.8739}. fetch wird auch bei HTTP-Fehlern aufgelöst; prüfe daher res.ok. Ein ungültiger Währungscode liefert den Status 422 mit einer JSON-Fehlermeldung.
Mit Intl formatieren
Platziere Währungssymbole nicht von Hand. Intl.NumberFormat kennt das Währungssymbol, dessen Position und die Nachkommastellen jeder Währung in jedem Gebietsschema:
const res = await fetch("https://api.frankfurter.dev/v2/rate/usd/eur");
const { rate } = await res.json();
const eur = new Intl.NumberFormat("en", {
style: "currency",
currency: "EUR",
});
eur.format(100 * rate); // "€87.39"Symbole und Nachkommastellen
Keine Notwendigkeit, eine eigene Metadatentabelle für Untereinheiten oder Symbole mitzuliefern. Frage einfach den Formatter:
const yen = new Intl.NumberFormat("en", {
style: "currency",
currency: "JPY",
});
yen.resolvedOptions().maximumFractionDigits; // 0, the yen has no subunits
yen.formatToParts(1).find((part) => part.type === "currency").value; // "¥"Alle Währungen ansehen, die Frankfurter bereitstellt, samt Währungscodes und Symbolen.
Mehrere Kurse auf einmal
/v2/rates liefert ein flaches Array mit einer Zeile pro Zielwährung. Wandle es mit Object.fromEntries in ein Lookup-Objekt um. Wenn du quotes weglässt, erhältst du alle Währungen.
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 }Offizielle Quelle festlegen
Standardmäßig erhältst du den Mischkurs aller Quellen. Ergänze providers, um eine bestimmte Institution festzulegen. Das ist wichtig, wenn eine Rechtsordnung den veröffentlichten Kurs ihrer Zentralbank verlangt, wie den EZB-Referenzkurs für die EU-Umsatzsteuer.
const api = "https://api.frankfurter.dev";
const res = await fetch(`${api}/v2/rate/usd/eur?providers=ecb`);Alle Quellen ansehen. Eine festgelegte Quelle folgt ihrem eigenen Veröffentlichungsrhythmus, sodass ihr neuester Kurs dem kombinierten Kurs um einen Tag hinterherhinken kann.
Live ausprobieren
Im Playground kannst du Abfragen zusammenstellen und die Antworten direkt im Browser sehen.