DEV Community

serbay
serbay

Posted on

Döviz kuru API: PHP, JavaScript ve Python ile kur çekme

Dolar, euro ve sterlin kurunu tek istekle JSON olarak alın. PHP, JavaScript ve Python örnekleri, önbellek ve kota ipuçları."
tags: api, php, python, javascript
canonical_url: https://veriapi.pro/blog/doviz-kuru-api-php-javascript-python

Dolar ve euro kurunu sitenize ya da uygulamanıza eklemenin en kısa yolu, kuru hazır JSON olarak veren bir API'ye tek bir GET isteği göndermektir. VeriApi.Pro Döviz Kuru API ile GET https://api.veriapi.pro/v1/doviz?kod=USD,EUR,GBP isteği; alış, satış ve günlük değişimi tek yanıtta döndürür. Ücretsiz pakette günde 500 istek birimi vardır ve her döviz isteği 1 birimdir.

Bu yazıda isteğin nasıl yapılacağını, yanıtın nasıl okunacağını ve PHP, JavaScript ve Python örneklerini adım adım anlatıyoruz.

Hangi kurlar, ne sıklıkla?

/v1/doviz varsayılan olarak anlık serbest piyasa (Kapalıçarşı) kurunu verir. USD, EUR, GBP, CHF, CAD, AUD, JPY, SAR, KWD, AED, QAR ve JOD için alış ve satış fiyatı dakikada bir güncellenir. Listede olmayan paralar için uluslararası referans kurlardan hesaplanan çapraz kur döner. Her satırdaki kaynak alanı kurun serbest piyasa kuru mu (kapalicarsi), yoksa referans kurdan çapraz hesap mı olduğunu söyler.

Parametre Ne işe yarar Örnek
kod Virgülle ayrılmış para kodları; boş bırakılırsa tüm liste USD,EUR,GBP
tur anlik (varsayılan, dakikada bir) ya da referans (gün sonu referans kuru, günde bir) referans

Tutar çevirmek için ayrı bir uç var: /v1/cevir/doviz?miktar=100&kaynak=USD&hedef=TRY isteği "100 dolar kaç TL" sorusunu tek çağrıda yanıtlar.

1. Ücretsiz API anahtarı alın

Ücretsiz üye olun, panelde API anahtarlarım bölümünden bir anahtar oluşturun. Anahtar va_ ile başlar ve isteklerde X-API-Key başlığıyla gönderilir. Ücretsiz pakette sitenizde VeriApi.Pro'ya görünür bir bağlantı (atıf) vermenizi rica ederiz; zorunlu değildir, ayrıntılar atıf sayfasında.

2. İsteği gönderin ve yanıtı okuyun

curl -H "X-API-Key: va_ANAHTARINIZ" "https://api.veriapi.pro/v1/doviz?kod=USD,EUR"
Enter fullscreen mode Exit fullscreen mode

Yanıt her uçta aynı zarfla gelir: veri veri içinde, kaynak bilgisi (Veri: VeriApi.Pro) kaynak içinde, verinin zamanı guncelleme alanında.

{
  "veri": {
    "tarih": "2026-11-02",
    "tur": "anlik",
    "kurlar": [
      {"kod": "USD", "ad": "ABD Doları", "alis": 49.775, "satis": 49.936, "degisim_yuzde": 0.16, "kaynak": "kapalicarsi"},
      {"kod": "EUR", "ad": "Euro", "alis": 55.278, "satis": 55.652, "degisim_yuzde": -0.0, "kaynak": "kapalicarsi"}
    ]
  },
  "kaynak": [{"kod": "veriapi", "ad": "VeriApi.Pro", "atif": "Veri: VeriApi.Pro"}],
  "guncelleme": "2026-11-02T01:15:30",
  "bayat": false
}
Enter fullscreen mode Exit fullscreen mode

bayat: true gelirse kaynak geçici olarak yanıt vermiyor demektir; API son iyi değeri döndürmeye devam eder, sayfanız boş kalmaz.

3. PHP ile döviz kuru çekme (önbellekli)

Kur dakikada bir değiştiği için her sayfa açılışında API'ye gitmenize gerek yok. Aşağıdaki örnek yanıtı 5 dakika dosyada saklar; böylece günde en fazla 288 istek yaparsınız ve ücretsiz kota fazlasıyla yeter.

<?php
function doviz_kurlari(string $kodlar = 'USD,EUR,GBP'): array {
    $dosya = sys_get_temp_dir() . '/doviz_' . md5($kodlar) . '.json';
    if (is_file($dosya) && time() - filemtime($dosya) < 300) {
        return json_decode(file_get_contents($dosya), true);
    }
    $ch = curl_init('https://api.veriapi.pro/v1/doviz?kod=' . urlencode($kodlar));
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_HTTPHEADER => ['X-API-Key: ' . getenv('VERIAPI_KEY')],
    ]);
    $yanit = json_decode(curl_exec($ch), true);
    $kod = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($kod !== 200 || empty($yanit['veri']['kurlar'])) {
        // hata: eski dosya varsa onu kullan
        return is_file($dosya) ? json_decode(file_get_contents($dosya), true) : [];
    }
    file_put_contents($dosya, json_encode($yanit['veri']['kurlar']));
    return $yanit['veri']['kurlar'];
}

foreach (doviz_kurlari() as $k) {
    printf("%s: %s TL (%+.2f%%)\n", $k['ad'], number_format($k['satis'], 4, ',', '.'), $k['degisim_yuzde']);
}
Enter fullscreen mode Exit fullscreen mode

Anahtarı koda yazmak yerine ortam değişkeninde (VERIAPI_KEY) tutmak, kodu paylaştığınızda anahtarın sızmasını önler.

4. JavaScript (Node.js) ile döviz kuru

Anahtarınızı tarayıcıda çalışan JavaScript'e koymayın: sayfanın kaynağını açan herkes görür. Tarayıcı tarafında kur göstermek için ya kendi sunucunuzdan geçirin ya da hazır döviz widget'ını kullanın. Sunucu tarafında (Node.js 18+) fetch yeterli:

const yanit = await fetch("https://api.veriapi.pro/v1/doviz?kod=USD,EUR", {
  headers: { "X-API-Key": process.env.VERIAPI_KEY },
});
if (!yanit.ok) throw new Error(`Döviz API hatası: ${yanit.status}`);
const { veri } = await yanit.json();
for (const k of veri.kurlar) {
  console.log(`${k.kod}: alış ${k.alis} / satış ${k.satis}`);
}
Enter fullscreen mode Exit fullscreen mode

5. Python ile döviz kuru

import os
import requests

r = requests.get(
    "https://api.veriapi.pro/v1/doviz",
    params={"kod": "USD,EUR,GBP"},
    headers={"X-API-Key": os.environ["VERIAPI_KEY"]},
    timeout=10,
)
r.raise_for_status()
for k in r.json()["veri"]["kurlar"]:
    print(f"{k['ad']}: {k['satis']:.4f} TL ({k['degisim_yuzde']:+.2f}%)")
Enter fullscreen mode Exit fullscreen mode

Tutar çevirmek için:

r = requests.get("https://api.veriapi.pro/v1/cevir/doviz",
                 params={"miktar": 250, "kaynak": "EUR", "hedef": "TRY"},
                 headers={"X-API-Key": os.environ["VERIAPI_KEY"]}, timeout=10)
print(r.json()["veri"])
Enter fullscreen mode Exit fullscreen mode

Kota, hata kodları ve iyi uygulamalar

  • Her yanıtta kalan hakkınız başlıklarda yazar: X-RateLimit-Remaining-Day (günlük) ve X-RateLimit-Remaining-Minute (dakikalık). Ücretsiz pakette dakikada 20 istek sınırı vardır.
  • Sınır aşılırsa 429 döner ve Retry-After başlığı kaç saniye beklemeniz gerektiğini söyler.
  • Hatalar her zaman {"hata": {"kod": …, "mesaj": "…"}} biçimindedir; 401 anahtar yok ya da geçersiz demektir.
  • Yanıtı 1–5 dakika önbelleğe alın. Kur dakikada bir değiştiği için daha sık istek yapmak bir şey kazandırmaz.
  • Panelde anahtarınıza alan adı kısıtı ekleyebilirsiniz; anahtar başka bir sitede kullanılamaz.

Tüm parametreler ve diğer uçlar API dokümantasyonunda; altın fiyatları için Altın Fiyatları API sayfasına bakın.

Sık sorulan sorular

Döviz kuru API'si ücretsiz mi?

Evet. /v1/doviz ve /v1/cevir/doviz ücretsiz pakette de açıktır. Günde 500 istek birimi hakkınız vardır ve her döviz isteği 1 birimdir. Sitenizde VeriApi.Pro'ya bir bağlantı vermenizi rica ederiz; zorunlu değildir.

Kurlar banka kuru mu?

Hayır. Varsayılan kur Kapalıçarşı serbest piyasa alış/satış fiyatıdır. tur=referans ile gün sonu euro referans kurlarından hesaplanan kuru alırsınız. Hiçbiri belirli bir bankanın gişe kuru değildir; değerler bilgilendirme amaçlıdır.

Kurlar ne sıklıkla güncellenir?

Kapalıçarşı kurları dakikada bir, referans kurlar iş günlerinde günde bir güncellenir. Verinin zamanı yanıttaki guncelleme alanında ve her satırın zaman alanında yazar.

API anahtarımı JavaScript ile tarayıcıda kullanabilir miyim?

Önermiyoruz; sayfa kaynağını açan herkes anahtarı görür. İsteği kendi sunucunuzdan yapın ya da anahtarın sayfaya yazılmadığı hazır döviz widget'ını kullanın.

Kaç para birimi destekleniyor?

12 ana para birimi Kapalıçarşı'dan dakikada bir, 30'dan fazla diğer para referans kurlardan hesaplanarak verilir. Tam listeyi kod parametresini boş bırakarak alabilirsiniz.


Bu yazı ilk olarak VeriApi.Pro blogunda yayımlandı. Yazar VeriApi.Pro'nun geliştiricisidir.

Top comments (0)