Frankfurter
Frankfurter, 98 merkez bankası ve resmi kaynaktan 206 para birimi için günlük döviz kurlarını takip eder. Veriler 1948 yılına kadar uzanır.
Genel API api.frankfurter.dev adresinde çalışır ve API anahtarı gerektirmez. Proje açık kaynaklıdır; tam kontrol için kendin de barındırabilirsin.
Bir yapay zeka ajanıyla mı çalışıyorsun? Ona llms.txt dosyasını ver veya MCP sunucusunu bağla.
Döviz Kurları
En güncel döviz kurlarını al.
curl https://api.frankfurter.dev/v2/ratesbase ile baz para birimini değiştir.
curl https://api.frankfurter.dev/v2/rates?base=usdquotes ile hedef para birimlerini filtrele.
curl https://api.frankfurter.dev/v2/rates?quotes=usd,gbpGeçmiş Kurlar
Belirli bir tarihteki kurları sorgula.
curl https://api.frankfurter.dev/v2/rates?date=1999-01-04Zaman Serisi
from ve to ile belirli bir dönemdeki kurları al.
curl https://api.frankfurter.dev/v2/rates?from=2026-01-01"es=usdİpucu: Yalnızca ihtiyacın olan para birimlerini sorgulamak yanıt boyutunu küçük tutar. Geniş tarih aralıklarında sonuçları satır satır akışla almak için NDJSON isteyebilirsin.
Gruplama
group ile zaman serisinin örnekleme sıklığını düşür. week ve month desteklenir.
curl https://api.frankfurter.dev/v2/rates?from=2026-01-01&group=monthKaynağa Göre Filtreleme
providers ile sorguyu belirli kaynaklarla sınırla.
curl https://api.frankfurter.dev/v2/rates?providers=ecb Varsayılan olarak kurlar tüm kaynaklardan harmanlanır. Tek bir kaynağın kurlarını almak için providers parametresini kullan veya doğrudan o kaynağın rotalarını sorgula.
Kaynak Dağılımı
Harmanlanan her kura hangi kaynakların katkıda bulunduğunu görmek için expand=providers ekle.
curl https://api.frankfurter.dev/v2/rates?expand=providers Her satıra katkı sağlayan kaynak kodlarını içeren bir providers dizisi eklenir. Sabit kurlu para birimlerinde bu alan bulunmaz; bu kurlar kaynak verilerinden değil kur sabitlemesinden gelir.
CSV Çıktısı
Kurlar CSV formatında da alınabilir. Yola .csv ekle veya Accept başlığını text/csv olarak ayarla.
curl https://api.frankfurter.dev/v2/rates.csvNDJSON Çıktısı
Büyük yanıtlar için Accept başlığını application/x-ndjson yaparak NDJSON (satır sonuyla ayrılmış JSON) iste. Her satır bağımsız bir JSON nesnesidir; yanıtın tamamını belleğe almadan geniş zaman serilerini akışla okumak için uygundur.
curl https://api.frankfurter.dev/v2/rates?from=2026-01-01Tek Kur
Tek bir para birimi çiftinin kurunu al. İsteğe bağlı olarak date veya providers ekleyebilirsin.
curl https://api.frankfurter.dev/v2/rate/eur/usdPara Birimleri
Mevcut para birimlerini ve kaynak kapsamlarını al.
curl https://api.frankfurter.dev/v2/currenciesEski para birimlerini scope ile dahil et.
curl https://api.frankfurter.dev/v2/currencies?scope=allTek Para Birimi
Tek bir para biriminin detaylarını ve kaynak kapsamını al.
curl https://api.frankfurter.dev/v2/currency/eurKaynaklar
API'nin arkasındaki veri kaynaklarını listele.
curl https://api.frankfurter.dev/v2/providersTek bir kaynağın detaylarını al.
curl https://api.frankfurter.dev/v2/providers/ecbKaynağa Göre Kurlar
Kurları doğrudan belirli bir kaynaktan sorgula. /v2/rates ve /v2/rate ile aynı parametreleri destekler.
curl https://api.frankfurter.dev/v2/providers/ecb/ratesBu kaynaktan tek bir para birimi çiftini al.
curl https://api.frankfurter.dev/v2/providers/ecb/rate/eur/usd date, tarih aralıkları (from ve to) veya gruplama ile birlikte kullanabilirsin. .csv ve ndjson gibi formatlar burada da çalışır.
curl https://api.frankfurter.dev/v2/providers/ecb/rates?date=2024-05-15Dönüştürme
Ayrı bir dönüştürme endpoint'i yoktur. Kuru alıp birkaç satır kodla dönüştürebilirsin.
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`)
);Hatalar
API, standart HTTP durum kodlarını bir JSON gövdesiyle döndürür.
{
"message": "Could not find currency ABC"
}400- Geçersiz parametre veya hatalı biçimlendirilmiş istek.
404- Para birimi, kur veya kaynak bulunamadı.
422- İstek anlaşıldı ancak işlenemiyor.
Self-Hosting
Frankfurter'ı Docker ile kendi sunucunda barındırabilirsin. Prodüksiyon kurulumu ve API anahtarı yapılandırması için deploy rehberine göz at.
FAQ
- Frankfurter kimler içindir (ve kimler için değildir)?
- SaaS faturalandırması, e-ticaret, vergi raporlaması, ERP ve muhasebe sistemleri ile 1948'e kadar uzanan geçmiş seriler üzerinden yapılan akademik araştırmalar için uygundur. Canlı alım satım (trading) veya gün içi sert dalgalanmalara maruz kalan egzotik para birimleriyle çalışan işletmeler için uygun değildir.
- API ticari kullanım için ücretsiz mi?
- Evet, kesinlikle. Temel verilerle ilgili ayrıntılar için her kaynağın kendi koşullarına bakabilirsin.
- API'de herhangi bir çağrı veya kullanım sınırı var mı?
- Kota yoktur. Kötüye kullanımı önlemek amacıyla istek sıklığı sınırlandırılır (rate limit), ancak günlük veya aylık tavanlar bulunmaz. Yüksek hacimli kullanım için yanıtları önbelleğe almayı, kendi sunucunda barındırmayı veya veri setlerini doğrudan sorgulamayı değerlendirebilirsin.
- API GraphQL destekliyor mu?
- Hayır. REST API yeterince basittir; GraphQL büyük bir fayda sağlamadan karmaşıklık getirir. Ayrıca API'yi hızlı tutan edge önbelleklemesini de devre dışı bırakır. Tam olarak ihtiyacın olan veriyi almak için
base,quotesvefrom/togibi sorgu parametrelerini kullanabilirsin. - v1 API'si kullanımdan kaldırılıyor mu?
- Hayır. v1 API'si v2 lehine deprecated edilmiştir ancak süresiz olarak çalışmaya devam edecektir. v1 dokümantasyonuna göz atabilirsin. Avrupa Merkez Bankası verileri için /v2/providers/ecb/rates endpoint'ini kullan.
- API'nin gizlilik politikası nedir?
- Frankfurter kişisel verileri, IP adreslerini veya sorgulanan URL'leri toplamaz ve kaydetmez. Genel erişim noktası, yalnızca toplu trafik istatistikleri sunan Cloudflare arkasında önbellekleme ve DDoS korumasıyla çalışır.
- API'yi App Store veya Google Play gizlilik beyanlarında belirtmem gerekir mi?
- Hayır. Sorgular anonim olduğundan ve istek günlüğü tutulmadığından, Apple ve Google Play kuralları kapsamında Toplanmayan Veri (Data Not Collected) olarak sınıflandırılır.
- Nereden hata bildirebilir veya soru sorabilirim?
- Hata bildirmek, yeni bir özellik istemek veya yeni bir veri kaynağı önermek için bir issue açabilirsin. Soru sormak ya da Frankfurter ile geliştirdiğin bir kütüphane veya aracı paylaşmak için Discussions alanını kullanabilirsin.
- Kurlar ne kadar hassas ve doğrudur?
- Mevzuata uyumluluk için, resmi gösterge kurlarını almak üzere belirli bir kaynağa göre filtreleme yapabilirsin. Genel kullanım için varsayılan harmanlanmış kurlar yeterlidir; ancak yeni veriler geldikçe son ondalık basamaklar değişebilir.
- Kurlar alış, satış mı yoksa orta piyasa kuru mudur?
- API orta piyasa (mid-market) kurlarını döndürür. Bir kaynak gösterge kuru yerine alış ve satış kurları yayınladığında Frankfurter her ikisini de kaydeder ve orta noktayı hesaplar.
- Tüm döviz kurları günlük müdür?
- Neredeyse tümü öyledir. Yalnızca 2 kaynak günlük olmayan periyotlarla yayın yapar: Birleşik Krallık Gelir ve Gümrük İdaresi HMRC (aylık) ve ABD Hazine Bakanlığı UST (üç aylık). Kurları haftalarca veya aylarca geçerli kaldığı için harmanlanmış akışa dahil edilmezler ve yalnızca bu kaynaklar doğrudan sorgulandığında görünürler.
- Neden bazı eski ve yeni para birimlerinin tarihleri çakışıyor?
- Bazı kaynaklar ardıl para birimlerini eski para biriminin dönemine geriye dönük olarak işler (örneğin
TRL2010'da biterkenTRY1996'da başlar). Kaynak verilerini olduğu gibi kaydederiz ve çakışmaları yalnızca harmanlama yaparken filtreleriz. - Neden Frankfurter?
- Çünkü her şeyin verileriyle başladığı Avrupa Merkez Bankası'nın merkezi Frankfurt'ta.