Zurück zum Blog

Frankfurter-API-Alternativen 2026: ein ehrlicher Vergleich für Entwickler

V
Vlado Grigirov
August 28, 2026
Currency API Exchange Rates Frankfurter API Comparison Free API Developer Guide

Wer nach Frankfurter-API-Alternativen sucht, hat mit ihr meist schon etwas ausgeliefert. Frankfurter ist für eine ganze Generation von Nebenprojekten die Standard-API für kostenlose Wechselkurse: kein API-Schlüssel, keine Anmeldung, kein Kontingent, eine saubere REST-Oberfläche und Open-Source-Code, den man an einem Nachmittag liest. Dann ändert sich etwas — eine Compliance-Frage, ein Wochenend-Bug, ein Kunde, der Intraday-Kurse braucht — und man fragt sich, was es sonst noch gibt.

Dieser Leitfaden schaut ehrlich auf diese Entscheidung. Er beschreibt, was Frankfurter 2026 tatsächlich leistet (die meisten Vergleichsartikel arbeiten mit veralteten Angaben), die fünf konkreten Grenzen, die Teams zum Wechsel bewegen, und die drei realistischen Wege: selbst hosten, zu einer kommerziellen API mit Schlüssel wechseln oder ein Hybrid bauen. Am Ende steht ein Migrationsbeispiel.

Was Frankfurter 2026 wirklich ist

Fast jede Liste der „besten kostenlosen Währungs-APIs" beschreibt Frankfurter noch als „EZB-Kurse, rund 30 Währungen, keine Wochenenddaten". Das stimmte jahrelang. Es stimmt nicht mehr.

Die v2-API auf frankfurter.dev verfolgt Tageskurse von 84 Zentralbanken, deckt 201 Währungen ab und reicht historisch bis 1948 zurück. Sie ist tatsächlich kostenlos für kommerzielle Nutzung, verlangt keine Authentifizierung, veröffentlicht kein Monats- oder Tageskontingent und liefert neben JSON auch CSV und NDJSON. Es gibt eine OpenAPI-Spezifikation, eine llms.txt und einen MCP-Server für Agenten-Workflows. Selbst hosten lässt sie sich per Docker.

Das ist ein stärkeres Produkt, als die Vergleichslisten zugeben, und man sollte es deutlich sagen: Für sehr viele Projekte ist Frankfurter die richtige Antwort, und Sie sollten nicht migrieren. Wenn Sie einen Haushaltsbuch-Tracker, eine Währungsreferenzseite, ein Rechnungstool, das Kurse einmal täglich fixiert, oder ein Data-Science-Notebook mit zehn Jahren Monatsdurchschnitten bauen, macht Frankfurter das gut — und kostenlos.

Der Rest dieses Artikels handelt von den Fällen, in denen sie es nicht tut.

Fünf Grenzen, die Teams nach Frankfurter-API-Alternativen suchen lassen

1. Tägliche Referenzkurse sind keine Live-Kurse

Das ist die strukturelle Grenze, und sie ist kein Fehler — sie ist schlicht die Natur der Datenquelle. Zentralbank-Referenzkurse werden einmal pro Geschäftstag veröffentlicht. Die EZB etwa veröffentlicht ihre Euro-Referenzkurse an jedem Arbeitstag gegen 16:00 Uhr MEZ. Frankfurter gibt diese Zahlen getreu wieder.

Das heißt: Ein Kurs, den Sie um 09:00 Uhr abrufen, und einer um 15:00 Uhr sind dieselbe Zahl — auch wenn sich der Markt dazwischen um 1,2 % bewegt hat. Bei einem reinen Anzeige-Konverter merkt das niemand. Bei einer Checkout-Seite, einer Auszahlungsberechnung oder überall dort, wo Kunden Ihre Zahl mit Google vergleichen, wird aus dieser Verzögerung ein Support-Ticket.

Wenn Ihr Produkt Kurse braucht, die sich im Tagesverlauf bewegen, brauchen Sie eine Marktdatenquelle statt einer Referenzkursquelle. Die Finexly-API aktualisiert während der Marktzeiten jede Minute über 170+ Währungen — ein anderes Datenmodell, nicht eine bessere Version desselben. Unser Beitrag dazu, woher Wechselkurs-APIs ihre Daten beziehen, vertieft den Unterschied.

2. Es gibt keine Zeilen für Wochenenden und Feiertage

Zentralbanken veröffentlichen samstags, sonntags und an nationalen Feiertagen nichts. Eine Abfrage für den 2026-08-23 liefert also nichts Brauchbares, und eine Zeitreihe über einen Monat hat rund 21 Zeilen, nicht 31.

Jedes Team stolpert gleich darüber: Ein Nachtjob läuft am Sonntag, bekommt ein leeres oder verschobenes Ergebnis und stürzt entweder ab oder schreibt — viel schlimmer — still ein null ins Hauptbuch. Wenn Sie auf Tageskursen einer Zentralbankquelle aufbauen, brauchen Sie eine ausdrückliche Fortschreibungsregel, und Sie müssen sie dokumentieren, denn „letzten veröffentlichten Kurs verwenden" und „Zeile überspringen" ergeben unterschiedliche Abschlüsse.

3. Gemischte Kurse können sich nach der Veröffentlichung ändern

Standardmäßig mischt Frankfurter die Kurse aller beitragenden Anbieter. Die eigene FAQ ist erfrischend direkt über die Folge: Die letzten Nachkommastellen können sich verschieben, wenn neue Daten eintreffen, und für Compliance sollten Sie auf einen bestimmten Anbieter filtern.

Für den allgemeinen Gebrauch ist das ein völlig vernünftiges Design. Zum Problem wird es, wenn Sie einen Kurs speichern, ihn einem Nutzer zeigen und später gegen einen erneuten Abruf abstimmen — Sie finden kleine Abweichungen, die einem Prüfer sehr schwer zu erklären sind. Die Lösung auf Frankfurter-Seite: providers=ECB (oder die für Sie zuständige Behörde) übergeben, statt die Mischung zu akzeptieren. Die Lösung im eigenen System: den tatsächlich verwendeten Kurs zum Transaktionszeitpunkt persistieren und nie neu ableiten. Diese Regel gilt für jeden Anbieter; wir behandeln sie im Leitfaden zu Wechselkursen und Steuermeldung.

4. Kein API-Schlüssel heißt kein Kontingent — und keine Sichtbarkeit

„Kein API-Schlüssel nötig" ist Frankfurters beste Eigenschaft und ihr am meisten unterschätztes Risiko. Weil es keinen Schlüssel gibt:

  • Sie haben kein Kontingent pro Anwendung. Sie teilen sich einen öffentlichen Rate-Limiter mit dem gesamten Internet, einschließlich desjenigen, der ihn gerade aus einer schlecht geschriebenen Schleife hämmert.
  • Sie haben keine Nutzungstelemetrie. Kein Dashboard sagt Ihnen, dass sich Ihr Aufrufvolumen letzten Dienstag verdreifacht hat.
  • Sie haben keine Support-Beziehung. Es gibt eine Statusseite und einen GitHub-Issue-Tracker — mehr als viele Gratisdienste bieten —, aber kein SLA und niemanden zum Alarmieren.

Die Empfehlung des Projekts selbst ist eindeutig: Bei hohem Volumen Antworten cachen, selbst hosten oder die Datensätze direkt abfragen. Das ist ehrlicher Rat — und genau der Moment, in dem viele Teams Frankfurter-API-Alternativen zu prüfen beginnen. Nicht weil die Daten falsch wären, sondern weil sie eine Produktionsabhängigkeit ohne Vertrag dahinter eingegangen sind.

5. Es gibt keinen Konvertierungs-Endpunkt

Frankfurter dokumentiert das bewusst: Kurs holen und multiplizieren. Drei Zeilen Code.

Es sind allerdings auch drei Zeilen Code, die an sechs Stellen Ihrer Codebasis leicht unterschiedlich geschrieben werden — und an einer davon wird dividiert, wo multipliziert gehört. Ein eigener convert-Endpunkt ist keine technische Notwendigkeit; er sorgt dafür, dass es genau eine Implementierung der Rundungs- und Richtungsregeln gibt. Wer je einen Bug ausgeliefert hat, bei dem EUR→USD und USD→EUR um 0,3 % auseinanderlagen, weiß, warum das zählt. Unser Leitfaden zu Währungsrundung und Nachkommastellen deckt den Rest dieses Minenfelds ab.

Frankfurter-API-Alternativen im Vergleich

Die Angaben zu den Gratis-Tarifen entsprechen dem, was die Anbieter zum Redaktionszeitpunkt veröffentlicht haben. Prüfen Sie sie, bevor Sie sich festlegen — Gratis-Tarife ändern sich häufiger als Dokumentation.

APIGratis-TarifAktualisierungAuthentifizierungBasiswährungAm besten für
FrankfurterUnbegrenzt (Anti-Missbrauch-Limit, kein SLA)Täglich, GeschäftstageKeineBeliebigHobbyprojekte, Buchhaltung, historische Recherche
Frankfurter selbst gehostetGratis + eigene InfrastrukturkostenTäglich, GeschäftstageIhre eigeneBeliebigTeams, die Kontrolle brauchen und Docker schon nutzen
Finexly1.000 Anfragen/MonatJede Minute während der MarktzeitenBearer-SchlüsselBeliebig (eigene Basis in höheren Tarifen)Produkte mit Intraday-Bedarf und Support-Weg
ExchangeRate-API~1.500 Anfragen/MonatTäglichSchlüsselBeliebigDashboards mit einmal täglicher Aktualisierung
Open Exchange Rates1.000 Anfragen/MonatStündlichSchlüsselNur USD im Gratis-TarifServerseitige Apps, die mit USD-Basis leben können
Fixer.io100 Anfragen/MonatStündlichSchlüsselNur EUR im Gratis-TarifAltintegrationen
Zwei Dinge fallen auf. Erstens: Beim Kontingent schlägt niemand Frankfurter, weil Frankfurter keines hat. Wenn Ihre Beschränkung das reine Aufrufvolumen auf Tageskurse ist, lautet die Antwort: Frankfurter selbst hosten, nicht anderswo ein kleineres Kontingent kaufen. Zweitens: Die kostenpflichtigen Optionen verkaufen nicht dieselben Daten in hübscherer Verpackung — sie verkaufen eine andere Aktualisierungsfrequenz und eine Support-Beziehung. Ist keines von beiden Ihr Problem, ist ein Wechsel ein Rückschritt.

Mehrere davon vergleichen wir Seite an Seite im Währungs-API-Vergleich und in unserem Vergleich von Echtzeit-Wechselkurs-APIs.

Option 1: Frankfurter selbst hosten

Die am meisten unterschätzte Antwort. Frankfurter veröffentlicht ein Docker-Image, und der Eigenbetrieb beseitigt die zwei Dinge, die Produktionsteams wirklich Sorgen machen: den geteilten Rate-Limiter und die fehlende Kontrolle.

docker run -d -p 8080:8080 --name frankfurter \
  lineofflight/frankfurter

Was Sie bekommen: unbegrenzte interne Aufrufe, Ihre eigene Verfügbarkeit und die Möglichkeit, einen Anbieter festzupinnen. Was Sie übernehmen: einen Container, eine Datenbank, Monitoring und jemanden, der es merkt, wenn der Upstream-Abruf an einem Bankfeiertag bricht. Das sind echte Kosten — im Kern das Argument aus unserer Make-or-Buy-Analyse, angewandt auf Code, den jemand anderes bereits geschrieben hat.

Selbst hosten ist richtig, wenn Ihr Volumen hoch ist, Ihre Latenzanforderungen streng sind und tägliche Referenzkurse wirklich ausreichen. Es hilft überhaupt nicht, wenn das Problem Intraday-Kurse sind — dann betreiben Sie nur Ihre eigene Kopie derselben Tagesdaten.

Option 2: Wechsel zu einer API mit Schlüssel und Intraday-Kursen

Wenn der Grund Kursaktualität, die Abdeckung exotischer Paare oder der Bedarf ist, dass jemand auf eine E-Mail antwortet, ist eine kommerzielle API mit Schlüssel die ehrliche Antwort.

Dieselbe Aufgabe auf beiden Seiten. Zuerst Frankfurter:

curl "https://api.frankfurter.dev/v2/rate/USD/EUR"

Und das Finexly-Äquivalent:

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.finexly.com/v1/rate?from=USD&to=EUR"
{ "pair": "USD_EUR", "rate": 0.9215 }

Endpunkt-Zuordnung

AufgabeFrankfurter v2Finexly v1
Währungen auflistenGET /v2/currenciesGET /v1/currencies
Einzelnes PaarGET /v2/rate/EUR/USDGET /v1/rate?from=EUR&to=USD
Mehrere PaareGET /v2/rates?base=USD&quotes=EUR,GBPGET /v1/convert?q=USD_EUR,USD_GBP
Betrag umrechnen(nicht vorhanden — selbst multiplizieren)GET /v1/convert-amount?from=USD&to=EUR&amount=100
HistorieGET /v2/rates?date=1999-01-04Bezahltarife — siehe Leitfaden zu historischen Kursen
Der wichtigste Formunterschied liegt beim Mehr-Paar-Aufruf. Frankfurter nutzt eine Basis plus eine Liste von Kurswährungen; Finexly nimmt eine Liste expliziter BASE_QUOTE-Paare, sodass Sie USD_EUR und GBP_JPY in derselben Anfrage holen können, ohne kreuzweise zu dividieren.

Ein Migrations-Wrapper

Verteilen Sie keinen neuen Client über die gesamte Codebasis. Legen Sie beide hinter eine Schnittstelle, damit ein Zurückwechseln nur eine Konfigurationsänderung ist:

import os
import requests

FINEXLY_KEY = os.environ["FINEXLY_API_KEY"]

def get_rate(base: str, quote: str, provider: str = "finexly") -> float:
    """Return the mid-market rate for base->quote."""
    if provider == "frankfurter":
        r = requests.get(
            f"https://api.frankfurter.dev/v2/rate/{base}/{quote}",
            timeout=5,
        )
        r.raise_for_status()
        return float(r.json()["rate"])

    r = requests.get(
        "https://api.finexly.com/v1/rate",
        params={"from": base, "to": quote},
        headers={"Authorization": f"Bearer {FINEXLY_KEY}"},
        timeout=5,
    )
    r.raise_for_status()
    return float(r.json()["rate"])

print(get_rate("USD", "EUR"))

Zwei Details lohnen sich zu übernehmen. Der API-Schlüssel kommt aus der Umgebung, nie aus dem Quelltext — die Finexly-Dokumentation weist darauf hin, dass als Query-Parameter übergebene Schlüssel über Server-Zugriffsprotokolle und HTTP-Referrer-Header austreten können; der Authorization-Header ist deshalb der Produktionsweg. Und jeder Aufruf hat ein Timeout, weil der Standardwert der meisten HTTP-Clients „ewig warten" lautet.

Beobachten Sie die Antwort-Header X-RateLimit-Limit, X-RateLimit-Used und X-RateLimit-Units, um den Kontingentverbrauch in Echtzeit zu sehen. Genau diese Telemetrie bekommen Sie von einer unauthentifizierten API nicht — und sie ist oft der eigentliche Grund für einen Wechsel.

Option 3: das Hybrid — eines cachen, auf das andere zurückfallen

Das Muster, zu dem die meisten Produktionssysteme konvergieren. Nutzen Sie Ihren Hauptanbieter, cachen Sie aggressiv und behalten Sie die kostenlose, unauthentifizierte API als letzten Ausweg:

const CACHE = new Map();
const TTL_MS = 60_000;

async function getRate(base, quote) {
  const key = `${base}_${quote}`;
  const hit = CACHE.get(key);
  if (hit && Date.now() - hit.at < TTL_MS) return hit.rate;

  let rate;
  try {
    const res = await fetch(
      `https://api.finexly.com/v1/rate?from=${base}&to=${quote}`,
      { headers: { Authorization: `Bearer ${process.env.FINEXLY_API_KEY}` } }
    );
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    rate = (await res.json()).rate;
  } catch (err) {
    // Degrade to daily reference rates rather than failing the request
    const res = await fetch(`https://api.frankfurter.dev/v2/rate/${base}/${quote}`);
    rate = (await res.json()).rate;
  }

  CACHE.set(key, { rate, at: Date.now() });
  return rate;
}

Ein 60-Sekunden-Cache auf einem Gratis-Tarif mit 1.000 Anfragen deckt eine kleine App bequem ab, weil Ihr Aufrufvolumen zur Funktion der Zeit wird, nicht des Traffics. Markieren Sie Fallback-Antworten in Ihren Logs, damit eine stille Herabstufung auf den Kurs von gestern nicht eine Woche lang unbemerkt bleibt. Mehr zur TTL-Wahl und zum Retry-Verhalten steht in unserem Leitfaden zu Caching und Fehlerbehandlung.

Eine Entscheidungs-Checkliste

Gehen Sie die Liste durch und halten Sie beim ersten „Ja" an:

  1. Müssen sich Kurse während des Handelstags ändern? → Sie brauchen eine Marktdaten-API, keine Referenzkurs-API.
  2. Ist es ein regulierter oder geprüfter Prozess? → Einen benannten Anbieter festpinnen, den verwendeten Kurs speichern, nie neu ableiten.
  3. Hohes Aufrufvolumen, aber Tageskurse reichen? → Frankfurter selbst hosten.
  4. Brauchen Sie jemanden, der antwortet, wenn es bricht? → Sie brauchen einen Tarif mit Schlüssel und Support-Stufe.
  5. Nichts davon? → Bleiben Sie bei Frankfurter. Cachen, die Wochenendlücke behandeln und die Zeit anderswo investieren.

Die meisten Teams, die nach Frankfurter-API-Alternativen suchen, stellen bei Schritt 5 fest, dass ihr eigentliches Problem ein fehlender Cache und ein unbehandelter Sonntag war.

Häufig gestellte Fragen

Ist die Frankfurter-API wirklich kostenlos für kommerzielle Nutzung? Ja. Das Projekt gibt an, dass sie kommerziell kostenlos nutzbar ist, ohne Monats- oder Tageskontingent — Anfragen werden nur zur Missbrauchsvermeidung begrenzt. Der Preis dafür: kein SLA und kein Supportvertrag, das Risiko liegt bei Ihnen.

Liefert Frankfurter nur EZB-Kurse? Nicht mehr. Die v2-API mischt Daten von 84 Zentralbanken über 201 Währungen, und mit dem Parameter providers können Sie auf eine einzelne Quelle eingrenzen. Die verbreitete Beschreibung „nur EZB, 30 Währungen" bezieht sich auf ältere Versionen.

Warum liefert Frankfurter am Wochenende keine Daten? Weil Zentralbanken an Nicht-Geschäftstagen keine Referenzkurse veröffentlichen. Jede API auf Zentralbankdaten hat dieselbe Lücke. Entweder schreiben Sie den letzten veröffentlichten Kurs fort oder Sie nutzen eine Marktdatenquelle mit fortlaufender Notierung.

Was ist die beste kostenlose Alternative zu Frankfurter? Das hängt davon ab, was „kostenlos" Ihnen bringen soll. Für unbegrenzte Tageskurse schlägt nichts Frankfurter — hosten Sie sie selbst. Für einen Gratis-Tarif mit Intraday-Aktualisierung und echtem API-Schlüssel bietet der Finexly-Gratistarif 1.000 Anfragen pro Monat über 170+ Währungen. Den weiteren Überblick gibt unser Leitfaden zu kostenlosen Währungs-APIs.

Kann ich Frankfurter und eine kostenpflichtige API zusammen einsetzen? Ja, und das ist eine sinnvolle Architektur. Leiten Sie normalen Traffic zum Hauptanbieter und fallen Sie im Fehlerfall auf Frankfurter zurück, wie im Hybrid-Beispiel oben. Achten Sie nur darauf, Fallback-Antworten zu protokollieren, da sie andere Aktualitätsgarantien tragen.

Loslegen

Wenn tägliche Referenzkurse für Ihr Vorhaben genügen, bleiben Sie bei Frankfurter — ein gutes Projekt, das Sie nichts kostet. Wenn Sie Kurse brauchen, die sich im Tagesverlauf bewegen, Abdeckung über die Referenzsätze der Zentralbanken hinaus oder Nutzungs-Header, die Sie tatsächlich überwachen können, holen Sie sich Ihren kostenlosen Finexly-API-Schlüssel — ohne Kreditkarte. Starten Sie mit 1.000 Anfragen pro Monat über 170+ Währungen und wachsen Sie hoch, oder vergleichen Sie zuerst die Stufen auf unserer Preisseite.

Vlado Grigirov

Senior Currency Markets Analyst & Financial Strategist

Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...

View full profile →

Diesen Artikel teilen