Python
SDK'ya gerek yok. Frankfurter, düz JSON döndüren sade bir HTTPS API'si; zaten kullandığın HTTP kütüphanesi yeterli. API anahtarı yok, hesap yok.
Hızlı başlangıç
Kuru al ve dönüştür:
import requests
res = requests.get("https://api.frankfurter.dev/v2/rate/usd/eur")
data = res.json()
total = 100 * data["rate"] Yanıt tek bir düz nesne: {"date": "2026-07-17", "base": "USD", "quote": "EUR", "rate": 0.8739}. Geçersiz bir para birimi kodu, JSON mesajıyla birlikte 422 döner.
Para için güvenli hesaplama
Float'lar ekranda göstermek için yeterli, muhasebe için yanlış. parse_float parametresini json.loads fonksiyonuna geçirerek kurları Decimal olarak parse et:
from decimal import Decimal
import requests
res = requests.get("https://api.frankfurter.dev/v2/rate/usd/eur")
data = res.json(parse_float=Decimal)
total = Decimal("100") * data["rate"]Tek seferde birden fazla kur
/v2/rates, her hedef para birimi için bir satır içeren düz bir dizi döndürür. Bir dict comprehension ile bunu lookup sözlüğüne çevir. Tüm para birimleri için quotes parametresini hiç gönderme.
res = requests.get(
"https://api.frankfurter.dev/v2/rates",
params={"base": "usd", "quotes": "eur,gbp,jpy"},
)
rates = {row["quote"]: row["rate"] for row in res.json()}Değişmeyeni önbelleğe al
Sabitlediğin sağlayıcının geçmiş kurları değişmez, bu yüzden onları süresiz önbelleğe alabilirsin. Harmanlanmış kurlar yeni veri geldikçe kayabilir, güncel kurlar da sağlayıcılar yayımladıkça, bir iş gününde en fazla birkaç kez değişir. Bunlar için kısa bir TTL yeter. requests-cache ile önbellekleme tek satır:
import requests_cache
session = requests_cache.CachedSession("frankfurter", expire_after=3600)
res = session.get("https://api.frankfurter.dev/v2/rate/usd/eur")
data = res.json()Async
Asenkron bir web uygulamasında httpx kullan:
import httpx
API = "https://api.frankfurter.dev"
async def rate(base, quote):
async with httpx.AsyncClient(base_url=API) as client:
res = await client.get(f"/v2/rate/{base}/{quote}")
res.raise_for_status()
return res.json()["rate"]Resmi kaynak sabitleme
Varsayılan olarak tüm kaynakların harmanını alırsın. Tek bir kurumu sabitlemek için providers ekle. Mevzuat, merkez bankasının yayımladığı kuru şart koşuyorsa bu önemli; AB KDV'si için ECB referans kuru buna bir örnek.
res = requests.get(
"https://api.frankfurter.dev/v2/rate/usd/eur",
params={"providers": "ecb"},
)
data = res.json()Tüm kaynaklara göz at. Sabitlenen bir kaynak kendi yayın takvimini izler; bu yüzden en güncel kuru, harmanlanmış güncel kurun bir gün gerisinde kalabilir.
Seri mi analiz ediyorsun?
Tarih aralıkları, aylık gruplama ve grafikler için CSV endpoint'i doğrudan DataFrame'e yüklenir. pandas sayfasına bak.