Python
Bir SDK'ya ihtiyacın yoktur. Frankfurter standart HTTPS üzerinden düz JSON döndürür; bu yüzden halihazırda kullandığın HTTP kütüphanesi yeterlidir. API anahtarı veya hesap gerekmez.
Hızlı Başlangıç
Bir kur 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 nesnedir: {"date": "2026-07-17", "base": "USD", "quote": "EUR", "rate": 0.8739}. Geçersiz bir para birimi kodu JSON mesajıyla birlikte 422 döndürür.
Para İçin Güvenli Matematik
Kayan noktalı sayılar (float) ekranda göstermek için uygundur ancak muhasebe için yanlıştır. json.loads fonksiyonuna parse_float ileterek kurları Decimal olarak ayrıştır:
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"]Aynı Anda Birden Fazla Hedef Kur
/v2/rates her hedef kur için bir satır içeren düz bir dizi döndürür. Bir sözlük üreteci (comprehension) ile bunu bir sözlüğe dönüştür. Tüm para birimlerini almak için quotes parametresini atla.
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
Geçmiş kurlar değişmezdir, bu yüzden onları sonsuza kadar önbelleğe alabilirsin. Güncel kurlar ise yalnızca kaynaklar yayınladıkça, bir iş gününde en fazla birkaç kez değişir; bu nedenle kısa bir TTL fazlasıyla yeterlidir. requests-cache ile önbellekleme tek satırdı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 Bir Kaynağı Sabitle
Varsayılan olarak tüm kaynakların harmanını alırsın. AB KDV'si için AMB gösterge kuru gibi bir mevzuatın kendi merkez bankasının yayınladığı kuru zorunlu kıldığı durumlarda tek bir kurumu sabitlemek için providers parametresini ekle.
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 nedenle en güncel kuru, harmanlanmış güncel kurun bir gün gerisinde kalabilir.
Bir Seriyi mi Analiz Ediyorsun?
Tarih aralıkları, aylık gruplama ve grafikler için CSV endpoint'i doğrudan bir DataFrame'e yüklenir. pandas sayfasına göz at.