Blog'a Dön

2026'da Frankfurter API alternatifleri: geliştiriciler için dürüst bir karşılaştırma

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

Frankfurter API alternatifleri arıyorsanız, büyük ihtimalle onunla bir şeyi çoktan yayına almışsınızdır. Frankfurter, bir kuşak yan projenin varsayılan ücretsiz döviz kuru API'si: API anahtarı yok, kayıt yok, kota yok, temiz bir REST yüzeyi ve bir öğleden sonrada okunabilecek açık kaynak bir kod. Sonra bir şey değişir — bir uyum sorusu, hafta sonu ortaya çıkan bir hata, gün içi kur isteyen bir müşteri — ve başka neler olduğunu merak etmeye başlarsınız.

Bu rehber o karara dürüstçe bakıyor. Frankfurter'ın 2026'da gerçekte ne yaptığını (karşılaştırma yazılarının çoğu güncelliğini yitirmiş bilgilerle çalışıyor), ekipleri ondan uzaklaştıran beş somut sınırı ve üç gerçekçi yolu ele alıyor: kendin barındırmak, anahtarlı ticari bir API'ye geçmek ya da hibrit kurmak. Sonda bir göç örneği var.

Frankfurter 2026'da gerçekte nedir

"En iyi ücretsiz döviz API'leri" derlemelerinin neredeyse tamamı Frankfurter'ı hâlâ "AMB kurları, yaklaşık 30 para birimi, hafta sonu verisi yok" diye tanımlıyor. Yıllarca doğruydu. Artık doğru değil.

frankfurter.dev üzerindeki v2 API'si 84 merkez bankasının günlük kurlarını izliyor, 201 para birimini kapsıyor ve geçmişi 1948'e kadar uzanıyor. Ticari kullanım için gerçekten ücretsiz, kimlik doğrulama istemiyor, aylık ya da günlük kota yayımlamıyor ve JSON'un yanında CSV ile NDJSON çıktısı da veriyor. Bir OpenAPI şeması, bir llms.txt ve ajan iş akışları için bir MCP sunucusu mevcut. Docker ile kendiniz barındırabilirsiniz.

Bu, derlemelerin kabul ettiğinden daha güçlü bir ürün ve açıkça söylemekte fayda var: çok sayıda proje için doğru yanıt Frankfurter'dır ve göç etmemelisiniz. Kişisel finans takipçisi, para birimi referans sayfası, kuru günde bir kez sabitleyen bir faturalama aracı ya da on yıllık aylık ortalamaları çeken bir veri bilimi not defteri yapıyorsanız, Frankfurter bunu iyi yapar ve hiçbir şeye mal olmaz.

Yazının geri kalanı, yapamadığı durumlarla ilgili.

Ekipleri Frankfurter API alternatifleri aramaya iten beş sınır

1. Günlük referans kurları canlı kur değildir

Bu yapısal olan; bir kusur değil — veri kaynağının doğası bu. Merkez bankası referans kurları her iş günü bir kez yayımlanır. Örneğin AMB, euro referans kurlarını her iş günü yaklaşık 16:00 CET'te yayımlar. Frankfurter da bu sayıları sadakatle sunar.

Yani 09:00'da çektiğiniz kur ile 15:00'te çektiğiniz kur aynı sayıdır; piyasa arada %1,2 hareket etmiş olsa bile. Yalnızca gösterim yapan bir çeviricide kimse fark etmez. Ama bir ödeme sayfasında, bir hakediş hesabında ya da müşterinin sizin sayınızı Google ile karşılaştırdığı her yerde bu gecikme bir destek kaydına dönüşür.

Ürününüz gün içinde hareket eden kurlara ihtiyaç duyuyorsa, referans kur kaynağı değil piyasa verisi kaynağı gerekir. Finexly API piyasa saatlerinde 170'ten fazla para biriminde her dakika yenilenir; bu aynı şeyin daha iyisi değil, farklı bir veri modelidir. Döviz kuru API'leri verilerini nereden alır yazımız bu ayrımı derinleştiriyor.

2. Hafta sonu ve tatil satırları yoktur

Merkez bankaları cumartesi, pazar ve ulusal tatillerde yayın yapmaz. Dolayısıyla 2026-08-23 sorgusu işe yarar bir şey döndürmez ve bir aylık zaman serisi 31 değil, yaklaşık 21 satır içerir.

Her ekip aynı şekilde tökezler: gece işi pazar günü çalışır, boş ya da kaymış bir sonuç alır ve ya çöker ya da — çok daha kötüsü — sessizce muhasebe defterine bir null yazar. Herhangi bir merkez bankası kaynağının günlük kurları üzerine inşa ediyorsanız, açık bir ileri doldurma politikanız olmalı ve bunu yazıya dökmelisiniz; çünkü "son yayımlanan kuru kullan" ile "satırı atla" farklı finansal tablolar üretir.

3. Harmanlanmış kurlar yayımlandıktan sonra değişebilir

Frankfurter varsayılan olarak katkı veren tüm sağlayıcıların kurlarını harmanlar. Kendi SSS'si sonucu ferahlatıcı bir açıklıkla anlatıyor: yeni veriler geldikçe son ondalık basamaklar kayabilir ve uyum için belirli bir sağlayıcıya filtrelemelisiniz.

Genel kullanım için son derece makul bir tasarım. Ama bir kuru saklayıp kullanıcıya gösterir ve sonra yeni bir çekimle mutabakat yaparsanız sorun olur: bir denetçiye açıklaması çok zor küçük farklar bulursunuz. Frankfurter tarafındaki çözüm, harmanı kabul etmek yerine providers=ECB (ya da sizi düzenleyen otorite) geçmektir. Kendi sisteminizdeki çözüm ise işlem anında fiilen kullandığınız kuru kalıcı hale getirmek ve onu bir daha asla yeniden türetmemektir. Bu kural her sağlayıcı için geçerli ve döviz kurları ile vergi raporlaması rehberimizde ele alıyoruz.

4. API anahtarı yoksa kota da yok — görünürlük de

"API anahtarı gerekmez" Frankfurter'ın en iyi özelliği ve en hafife alınan riski. Anahtar olmadığı için:

  • Uygulama başına kotanız yok. Şu anda kötü yazılmış bir döngüden onu dövmekte olan kişi dahil, tüm internetle ortak bir hız sınırlayıcıyı paylaşıyorsunuz.
  • Kullanım telemetriniz yok. Geçen salı çağrı hacminizin üçe katlandığını söyleyecek bir panel yok.
  • Destek ilişkiniz yok. Bir durum sayfası ve GitHub sorun izleyici var — birçok ücretsiz hizmetten fazlası — ama SLA yok ve arayacak kimse yok.

Projenin kendi tavsiyesi net: yüksek hacimli kullanımda yanıtları önbelleğe alın, kendiniz barındırın ya da veri kümelerini doğrudan sorgulayın. Bu dürüst bir öneri ve aynı zamanda birçok ekibin Frankfurter API alternatiflerini değerlendirmeye başladığı an. Veriler yanlış olduğu için değil, arkasında hiçbir sözleşme olmayan bir üretim bağımlılığı üstlendikleri için.

5. Dönüştürme uç noktası yok

Frankfurter bunu bilerek belgeliyor: kuru al ve çarp. Üç satır kod.

Ama bu üç satır, kod tabanınızın altı ayrı yerinde birbirinden biraz farklı yazılan ve birinde çarpılması gerekirken bölünen üç satırdır. Ayrı bir convert uç noktası teknik bir zorunluluk değil; yuvarlama ve yön kurallarının tam olarak tek bir uygulamasına sahip olmanın yoludur. EUR→USD ile USD→EUR arasında %0,3 fark oluşan bir hatayı yayına aldıysanız, neden önemli olduğunu bilirsiniz. Bu mayın tarlasının geri kalanını para birimi yuvarlama ve ondalık basamaklar rehberimiz kapsıyor.

Frankfurter API alternatiflerinin karşılaştırması

Aşağıdaki ücretsiz plan ayrıntıları, her sağlayıcının yazım anında yayımladığı bilgilerdir. Karar vermeden önce doğrulayın — ücretsiz planlar dokümantasyondan daha sık değişir.

APIÜcretsiz planGüncelleme sıklığıKimlik doğrulamaBaz para birimiŞunun için ideal
FrankfurterSınırsız (kötüye kullanım sınırı, SLA yok)Günlük, iş günleriYokHerhangi biriHobi projeleri, muhasebe, tarihsel araştırma
Kendi barındırdığınız FrankfurterÜcretsiz + kendi altyapı maliyetinizGünlük, iş günleriSizinHerhangi biriKontrol isteyen ve zaten Docker kullanan ekipler
FinexlyAyda 1.000 istekPiyasa saatlerinde her dakikaBearer anahtarıHerhangi biri (üst planlarda özel baz)Gün içi kur ve destek kanalı gereken ürünler
ExchangeRate-APIAyda ~1.500 istekGünlükAnahtarHerhangi biriGünde bir yenilenen panolar
Open Exchange RatesAyda 1.000 istekSaatlikAnahtarÜcretsizde yalnızca USDUSD bazıyla yaşayabilen sunucu uygulamaları
Fixer.ioAyda 100 istekSaatlikAnahtarÜcretsizde yalnızca EUREski entegrasyonlar
İki şey öne çıkıyor. Birincisi, kotada Frankfurter'ı geçen yok, çünkü Frankfurter'ın kotası yok. Kısıtınız günlük kurlara yapılan ham çağrı hacmiyse, yanıt başka yerden daha küçük bir kota satın almak değil, Frankfurter'ı kendiniz barındırmaktır. İkincisi, ücretli seçenekler size aynı veriyi daha şık ambalajla satmıyor — farklı bir güncelleme sıklığı ve bir destek ilişkisi satıyorlar. İkisi de sizin sorununuz değilse, geçiş bir geriye gidiştir.

Bunlardan birkaçını döviz API karşılaştırmasında ve gerçek zamanlı kur API'leri karşılaştırmamızda yan yana inceliyoruz.

Seçenek 1: Frankfurter'ı kendiniz barındırın

En az kullanılan yanıt. Frankfurter bir Docker imajı yayımlıyor ve onu kendiniz çalıştırmak, üretim ekiplerini gerçekten kaygılandıran iki şeyi ortadan kaldırıyor: ortak hız sınırlayıcı ve kontrol eksikliği.

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

Kazandıklarınız: sınırsız iç çağrı, kendi erişilebilirlik kaderiniz ve bir sağlayıcıyı sabitleyebilme. Üstlendikleriniz: bir konteyner, bir veritabanı, izleme ve bir banka tatilinde yukarı akış toplamanın bozulduğunu fark edecek biri. Bu gerçek bir maliyettir — kabaca yap ya da satın al analizimizdeki argümanın, başkasının yazdığı bir koda uygulanmış hâli.

Kendi barındırmak; hacminiz yüksek, gecikme gereksinimleriniz sıkı ve günlük referans kurları gerçekten yeterliyse doğru tercihtir. Sorun gün içi kur ihtiyacıysa hiç yardımcı olmaz — aynı günlük verinin kendi kopyanızı çalıştırıyor olursunuz.

Seçenek 2: gün içi kur sunan anahtarlı bir API'ye geçin

Buraya gelme nedeniniz kurun tazeliği, egzotik paritelerin kapsanması ya da bir e-postaya yanıt verecek birine ihtiyaç duymanızsa, dürüst yanıt anahtarlı ticari bir API'dir.

Aynı iş her iki tarafta şöyle görünür. Önce Frankfurter:

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

Ve Finexly karşılığı:

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

Uç nokta eşlemesi

İşFrankfurter v2Finexly v1
Para birimlerini listeleGET /v2/currenciesGET /v1/currencies
Tek pariteGET /v2/rate/EUR/USDGET /v1/rate?from=EUR&to=USD
Çoklu pariteGET /v2/rates?base=USD&quotes=EUR,GBPGET /v1/convert?q=USD_EUR,USD_GBP
Tutar dönüştür(yok — kendiniz çarpın)GET /v1/convert-amount?from=USD&to=EUR&amount=100
Geçmiş veriGET /v2/rates?date=1999-01-04Ücretli planlar — bkz. geçmiş kurlar rehberi
Biçimdeki asıl değişiklik çoklu parite çağrısında. Frankfurter tek bir baz ve karşı para birimi listesi kullanır; Finexly ise açık BASE_QUOTE parite listesi alır, böylece USD_EUR ile GBP_JPY çapraz bölme olmadan aynı istekte gelir.

Bir göç sarmalayıcısı

Yeni bir istemciyi kod tabanına serpiştirmeyin. İkisini tek bir arayüzün ardına koyun ki geri dönmek bir yapılandırma değişikliğinden ibaret olsun:

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"))

Kopyalamaya değer iki ayrıntı. API anahtarı ortamdan gelir, asla kaynaktan değil — Finexly belgeleri, sorgu parametresi olarak geçirilen anahtarların sunucu erişim günlükleri ve HTTP Referrer başlıkları üzerinden sızabileceğini belirtiyor; bu yüzden üretim yolu Authorization başlığıdır. Ayrıca her çağrının bir zaman aşımı var, çünkü çoğu HTTP istemcisinde varsayılan "sonsuza kadar bekle"dir.

Kota tüketimini anlık görmek için X-RateLimit-Limit, X-RateLimit-Used ve X-RateLimit-Units yanıt başlıklarını izleyin. Bu telemetri, kimlik doğrulaması olmayan bir API'den alamayacağınız şeydir ve çoğu zaman ekiplerin geçiş yapmasının asıl nedenidir.

Seçenek 3: hibrit — birini önbelleğe alın, diğerine düşün

Üretim sistemlerinin çoğunun yakınsadığı desen. Ana sağlayıcınızı kullanın, agresif önbellekleyin ve ücretsiz, kimlik doğrulamasız API'yi son çare olarak tutun:

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;
}

Ayda 1.000 istekli ücretsiz planda 60 saniyelik bir önbellek küçük bir uygulamayı rahatça taşır; çünkü çağrı hacminiz trafiğin değil zamanın fonksiyonu hâline gelir. Yedek yanıtları günlüklerinizde işaretleyin ki dünün kuruna sessiz bir gerileme bir hafta boyunca fark edilmeden kalmasın. TTL seçimi ve yeniden deneme davranışı hakkında dahası önbellekleme ve hata yönetimi rehberimizde.

Bir karar kontrol listesi

Listeyi yukarıdan aşağı okuyun ve ilk "evet"te durun:

  1. Kurların işlem günü içinde değişmesi gerekiyor mu? → Referans kur değil, piyasa verisi API'si gerekir.
  2. Düzenlemeye ya da denetime tabi bir akış mı? → Adı belli bir sağlayıcıyı sabitleyin, kullandığınız kuru saklayın, asla yeniden türetmeyin.
  3. Çağrı hacminiz yüksek ama günlük kurlar yeterli mi? → Frankfurter'ı kendiniz barındırın.
  4. Bir şey bozulduğunda yanıt verecek birine ihtiyacınız var mı? → Anahtarlı ve destek katmanlı bir plan gerekir.
  5. Hiçbiri değil mi? → Frankfurter'da kalın. Önbelleğe alın, hafta sonu boşluğunu ele alın ve zamanınızı başka yere harcayın.

Frankfurter API alternatifleri aramaya çıkan ekiplerin çoğu, 5. adımda asıl sorunun eksik bir önbellek ve ele alınmamış bir pazar günü olduğunu keşfeder.

Sık sorulan sorular

Frankfurter API gerçekten ticari kullanım için ücretsiz mi? Evet. Proje, ticari kullanım için ücretsiz olduğunu ve aylık ya da günlük kota bulunmadığını belirtiyor — istekler yalnızca kötüye kullanımı önlemek için sınırlanıyor. Karşılığında SLA ve destek sözleşmesi yok, dolayısıyla risk sizde.

Frankfurter yalnızca AMB kurlarını mı sunuyor? Artık hayır. v2 API'si 84 merkez bankasının 201 para birimindeki verilerini harmanlıyor ve providers parametresiyle tek bir kaynağa daraltabiliyorsunuz. Yaygın olan "yalnızca AMB, 30 para birimi" tanımı eski sürümlere ait.

Frankfurter hafta sonu neden veri döndürmüyor? Çünkü merkez bankaları iş günü olmayan günlerde referans kur yayımlamaz. Merkez bankası verisi üzerine kurulu her API'de aynı boşluk vardır. Ya son yayımlanan kuru ileri doğru doldurursunuz ya da sürekli fiyatlayan bir piyasa verisi kaynağı kullanırsınız.

Frankfurter'ın en iyi ücretsiz alternatifi nedir? "Ücretsiz"in size ne kazandırması gerektiğine bağlı. Sınırsız günlük kur için Frankfurter'ı geçen yok — kendiniz barındırın. Gün içi güncelleme ve gerçek bir API anahtarı olan bir ücretsiz plan içinse Finexly'nin ücretsiz planı 170'ten fazla para biriminde ayda 1.000 istek veriyor. Daha geniş tablo için ücretsiz döviz API rehberimize bakın.

Frankfurter ile ücretli bir API'yi birlikte kullanabilir miyim? Evet ve bu makul bir mimari. Normal trafiği ana sağlayıcınıza yönlendirin, hata durumunda yukarıdaki hibrit örnekteki gibi Frankfurter'a düşün. Yalnızca yedek yanıtların günlüğe yazıldığından emin olun; farklı tazelik garantileri taşırlar.

Başlayın

Yaptığınız iş için günlük referans kurları yeterliyse Frankfurter'da kalın — iyi bir proje ve size hiçbir şeye mal olmayacak. Gün içinde hareket eden kurlara, merkez bankası referans kümelerinin ötesinde kapsama ya da gerçekten izleyebileceğiniz kullanım başlıklarına ihtiyacınız varsa, ücretsiz Finexly API anahtarınızı alın — kredi kartı gerekmez. 170'ten fazla para biriminde ayda 1.000 istekle başlayın ve büyüdükçe yükseltin; ya da önce fiyatlandırma sayfamızda planları karşılaştırın.

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 →