Ana Sayfa / Blog / Finans & Borsa
Finans & Borsa

TCMB Faiz Oranları API Entegrasyonu: Politika Faizi, TLREF ve Mevduat Faizlerini Canlı Takip Etmek

Yazar: apibir Geliştirici Ekibi 8 dk okuma süresi

Özet: Bu rehber, apibir Faiz Oranları API'sinin /rates/policy, /rates/reference, /rates/deposit ve /rates/loan uçlarını kullanarak TCMB politika faizini, TLREF'i, mevduat/kredi oranlarını ve Fed/Euribor referanslarını Node.js ve Python ile nasıl çekeceğinizi adım adım anlatmaktadır.

İçindekiler

1. Neden faiz verisini API ile çekmelisiniz?

2. Uç noktalar ve alanlar

3. Politika faizini çekmek

4. TLREF ve küresel referanslar

5. Mevduat ve kredi oranları

6. Geçmiş seri

7. Faiz kararı günü otomasyonu

8. Sık yapılan hatalar

9. Sık sorulan sorular

Özet: Kredi skorlama, portföy değerleme ve nakit yönetimi ürünlerinde faiz oranı çoğu zaman manuel Excel güncellemesi olarak kalır. TCMB politika faizi değişince uygulamadaki sabit değer günlerce eski kalır; TLREF ise her iş günü hareket eder. Bu yazıda apibir Faiz Oranları API'siyle güncel paket çekmeyi, politika faizi ile TLREF'i ayırmayı, mevduat/kredi oranlarını ürün bazında okumayı ve faiz kararı gününde otomatik bülten üretmeyi anlatıyoruz.

Neden Faiz Verisini API ile Çekmelisiniz?

Türkiye'de faiz verisi tek bir sayı değildir. Ürününüzün ihtiyacına göre şu katmanlar ayrı ayrı gelir:

  • Politika faizi — TCMB bir hafta vadeli repo (politika) faizi; PPK kararlarıyla değişir.
  • Koridor — gecelik borç alma / verme oranları.
  • TLREF — Türk Lirası Gecelik Referans Faizi; neredeyse her iş günü kapanış verir.
  • Mevduat ve kredi faizleri — sektör ortalaması veya protokol sonrası banka bazlı ürün oranları.
  • Küresel referanslar — Fed Funds, ECB refi, Euribor, SOFR.

Manuel takipte tipik kırılmalar:

  • Gecikme: PPK kararı açıklandığında ekranınızda hâlâ eski oran durur.
  • Karışıklık: Politika faizi ile TLREF aynı "faiz" etiketi altında gösterilir; kullanıcı yanlış referansı okur.
  • Tarihçe yok: "Son 12 ayda kaç baz puan değişti?" sorusuna yanıt veremezsiniz.

API tabanlı kurgu üçünü birden çözer: güncelleme dakikalar mertebesinde, alanlar ayrı tutulur ve /rates/history ile geçmiş seri sorgulanabilir.

Uç Noktalar ve Alanlar

Temel adres: https://api.apibir.com/v1

Ne döner
GET /rates/policy Merkez bankası politika faizleri (TCMB, Fed, ECB …)
GET /rates/reference TLREF, Euribor, SOFR referans oranları
GET /rates/deposit Mevduat faiz oranları (vade bazlı)
GET /rates/loan Kredi faiz oranları (ürün / banka)
GET /rates/history Faiz oranı geçmişi

Kimlik doğrulama tüm apibir uçlarında aynıdır:

Authorization: apikey APIBIR-8f2c...9d41
Accept: application/json

Yanıt zarfı diğer servislerle ortaktır: success, data, creditsUsed, creditsRemaining. Her başarılı istek 1 kredi harcar; 4xx hataları kredi düşürmez.

1. Adım: Politika Faizini Çekmek

cURL

curl --request GET \
  --url "https://api.apibir.com/v1/rates/policy?country=TR&type=teblig" \
  --header "authorization: apikey APIBIR-8f2c...9d41" \
  --header "accept: application/json"

Node.js (fetch)

async function tcmbPolitika() {
  const url = new URL("https://api.apibir.com/v1/rates/policy");
  url.searchParams.set("country", "TR");
  url.searchParams.set("type", "teblig");

  const res = await fetch(url, {
    headers: { authorization: `apikey ${process.env.APIBIR_KEY}` }
  });
  if (!res.ok) throw new Error(`apibir ${res.status}`);

  const { data } = await res.json();
  const tcmb = (data.policy || data).find?.(
    (r) => r.institution === "TCMB"
  ) || (Array.isArray(data) ? data[0] : data);

  return tcmb;
}

const politika = await tcmbPolitika();
console.log(politika.rate, politika.changeBps, politika.effectiveDate);

Python

import os, requests

HEADERS = {"authorization": f"apikey {os.environ['APIBIR_KEY']}"}

def tcmb_politika():
    r = requests.get(
        "https://api.apibir.com/v1/rates/policy",
        params={"country": "TR", "type": "teblig"},
        headers=HEADERS,
        timeout=10,
    )
    r.raise_for_status()
    payload = r.json()["data"]
    policy = payload.get("policy", payload)
    if isinstance(policy, list):
        return next(p for p in policy if p.get("institution") == "TCMB")
    return policy

p = tcmb_politika()
print(p["rate"], p.get("changeBps"), p.get("effectiveDate"), p.get("nextMeeting"))

Örnek yanıt iskeleti (dokümantasyondaki şemaya uygun):

{
  "success": true,
  "creditsUsed": 1,
  "timestamp": "2026-08-07T10:42:20+03:00",
  "data": {
    "policy": [
      {
        "country": "TR",
        "institution": "TCMB",
        "name": "1 Hafta Vadeli Repo",
        "rate": 34.50,
        "previousRate": 36.00,
        "changeBps": -150,
        "effectiveDate": "2026-07-24",
        "nextMeeting": "2026-09-11"
      }
    ]
  }
}

changeBps alanı baz puan cinsinden değişimi verir (−150 = 1,50 puan indirim). Ürün kuralınızı effectiveDate üzerinden kilitleyin; karar açıklandı ama henüz yürürlükte değilken erken fiyat güncellemesi yapmayın. nextMeeting ile bir sonraki PPK tarihini panonuza yazabilirsiniz.

2. Adım: TLREF ve Küresel Referanslar

Politika faizi seyrek değişir; TLREF neredeyse her iş günü kapanış verir. İkisini aynı "canlı ticker" hızında yenilemek kredi israfıdır.

cURL

curl --request GET \
  --url "https://api.apibir.com/v1/rates/reference?country=TR" \
  --header "authorization: apikey APIBIR-8f2c...9d41"

Python — TLREF'i ayıkla

def tlref():
    r = requests.get(
        "https://api.apibir.com/v1/rates/reference",
        params={"country": "TR"},
        headers=HEADERS,
        timeout=10,
    )
    r.raise_for_status()
    data = r.json()["data"]
    refs = data.get("reference", data)
    return next(x for x in refs if str(x.get("name", "")).upper().startswith("TLREF"))

ref = tlref()
print(ref["rate"], ref.get("date"))

JavaScript — politika vs piyasa kartları

function faizKartlari(politika, referanslar) {
  const tlref = referanslar.find((r) =>
    String(r.name).toUpperCase().startsWith("TLREF")
  );
  return [
    {
      baslik: "TCMB Politika Faizi",
      deger: politika.rate,
      birim: "%",
      gecerlilik: politika.effectiveDate,
      tip: "karar"
    },
    {
      baslik: "TLREF",
      deger: tlref?.rate,
      birim: "%",
      gecerlilik: tlref?.date,
      tip: "piyasa"
    }
  ];
}

Euribor / SOFR gibi küresel referanslar aynı /rates/reference yanıtında gelir; çapraz para ve hedge senaryolarında yerel oranlarla birlikte okunur. Kur için ayrı olarak Döviz Kurları API kullanın.

3. Adım: Mevduat ve Kredi Oranları

Karşılaştırma siteleri ve kredi hesaplayıcıları için ürün bazlı uçlar:

cURL — ihtiyaç kredisi

curl --request GET \
  --url "https://api.apibir.com/v1/rates/loan?product=ihtiyac" \
  --header "authorization: apikey APIBIR-8f2c...9d41"

cURL — 92 günlük mevduat

curl --request GET \
  --url "https://api.apibir.com/v1/rates/deposit?maturity=92" \
  --header "authorization: apikey APIBIR-8f2c...9d41"

Python — yıllık maliyet oranını göster

def ihtiyac_kredisi():
    r = requests.get(
        "https://api.apibir.com/v1/rates/loan",
        params={"product": "ihtiyac"},
        headers=HEADERS,
        timeout=10,
    )
    r.raise_for_status()
    data = r.json()["data"]
    loans = data.get("loan", data)
    return loans

for row in ihtiyac_kredisi():
    print(row.get("bank"), row.get("monthlyRate"), row.get("annualCostRate"))

Sık kullanılan sorgu parametreleri:

Parametre Örnek Açıklama
country TR, US, EU Ülke filtresi (varsayılan TR)
product ihtiyac, konut, tasit, ticari Kredi ürünü
maturity 32, 92, 182, 365 Mevduat vadesi (gün)
bank banka kodu Protokol sonrası banka filtresi

Banka bazında kampanya oranları, ilgili banka protokolü olmadan yayımlanmaz; sektör ortalaması her zaman erişilebilir.

4. Adım: Geçmiş Seri

"Son 12 ayda politika faizi kaç kez değişti?" sorusu için /rates/history kullanılır.

Python — değişim günlerini bulma

def politika_degisim_gunleri(seri):
    """seri: [{"date": "...", "rate": ...}, ...] kronolojik"""
    degisimler = []
    onceki = None
    for nokta in seri:
        if onceki is not None and nokta["rate"] != onceki["rate"]:
            degisimler.append({
                "date": nokta["date"],
                "from": onceki["rate"],
                "to": nokta["rate"],
                "changeBps": round((nokta["rate"] - onceki["rate"]) * 100),
            })
        onceki = nokta
    return degisimler

Node.js — Chart.js için dizi

function chartSerisi(history) {
  return {
    labels: history.map((h) => h.date),
    datasets: [{
      label: "Politika faizi (%)",
      data: history.map((h) => h.rate)
    }]
  };
}

Geçmiş döviz kurları rehberimizdeki önbellek alışkanlıkları burada da geçerlidir: tarih aralığı sorgularını kendi veritabanınızda saklayıp panoyu oradan besleyin; her sayfa görüntülemesinde API'ye gitmeyin.

5. Adım: Faiz Kararı Günü Otomasyonu

nextMeeting alanını veya Ekonomik Takvim API olaylarını kullanarak PPK gününde politika faizini sık örnekleyebilirsiniz. Değişiklikte bülten atmak yeterlidir:

Python — fark + webhook

import json, os, pathlib, requests

STATE = pathlib.Path("data/faiz_son.json")

def kaydet(data):
    STATE.parent.mkdir(exist_ok=True)
    STATE.write_text(json.dumps(data, ensure_ascii=False))

def onceki():
    return json.loads(STATE.read_text()) if STATE.exists() else None

def bulten(eski, yeni):
    if eski and eski.get("rate") == yeni.get("rate"):
        return None
    once = eski["rate"] if eski else "?"
    bps = yeni.get("changeBps", "")
    return (
        f"*TCMB Politika Faizi Güncellendi*\n"
        f"{once}% → {yeni['rate']}% ({bps} bp)\n"
        f"Geçerlilik: {yeni.get('effectiveDate')}\n"
        f"Sonraki toplantı: {yeni.get('nextMeeting')}"
    )

def calistir():
    yeni = tcmb_politika()
    metin = bulten(onceki(), yeni)
    kaydet(yeni)
    if metin:
        requests.post(os.environ["SLACK_WEBHOOK"], json={"text": metin}, timeout=10)

# cron örneği (toplantı günü öğleden sonra): */15 14-17 * * 4
calistir()

Aynı deseni Resmi Gazete özetlerini Slack'e taşıma yazımızda da kullanmıştık; yalnızca kaynak uç noktası değişir. Kod yazmadan takip isteyen ekipler için apibir'in finans faiz bülteni aynı veriyi WhatsApp veya e-posta olarak iletir.

Sık Yapılan Entegrasyon Hataları

Hata Sonucu Doğrusu
Politika faizi ile TLREF'i tek alanda göstermek Kullanıcı yanlış referansı okur. /rates/policy ve /rates/reference ayrı kartlar.
Oranları koda sabit yazmak PPK sonrası uygulama günlerce eski kalır. Karar günü poll veya bülten; effectiveDate kuralı.
Her sayfa yüklemesinde history çekmek Gereksiz kredi tüketimi. Geçmişi kendi DB'nizde saklayın.
Yüzdeyi 100'e bölmeden faiz hesabına sokmak Kredi maliyeti 100 kat yanlış çıkar. API yıllık yüzde puan döner (34.50 = %34,50).
changeBps ile yüzde puanı karıştırmak −150'yi −150 puan sanmak. 100 bp = 1 yüzde puan.
annualCostRate yerine yalnızca monthlyRate göstermek Karşılaştırmada yanıltıcı ucuzluk. Tüketiciye yıllık maliyet oranını da yazın.

Sık Sorulan Sorular

Politika faizi ne sıklıkla güncellenir?

PPK toplantı takvimine bağlıdır; ara toplantılar da olabilir. Veri, karar açıklandıktan sonra API'de güncellenir. effectiveDate ve nextMeeting alanlarını ürün kuralınızın parçası yapın.

TLREF her gün gelir mi?

İş günlerinde kapanış verisi beklenir; resmi tatillerde boş gelebilir. Resmi tatil / iş günü aritmetiği API'si ile çekim günlerinizi filtreleyebilirsiniz.

Banka bazlı kampanya oranları var mı?

Sektör ortalaması her zaman erişilebilir. Banka bazında kampanya oranları ilgili banka protokolü sonrasında açılır; bank parametresiyle filtrelenir.

Fed ve Euribor aynı katalogda mı?

Evet. /rates/policy?country=US Fed bantlarını, /rates/reference Euribor / SOFR gibi referansları döner. Kur için Döviz Kurları API'sini ayrı kullanın.

Kod yazmadan takip edebilir miyim?

Evet. Finansal takip ve faiz bülteni hizmeti TCMB kararlarını ve mevduat/kredi güncellemelerini WhatsApp veya e-posta ile iletebilir. Kapsam için hizmetler ve teklif formuna bakın.

Başlamak için: Ücretsiz plan 100 kredi/ay ile geliştirme ve deneme için yeterlidir. Uç noktaların tamamı Faiz Oranları API sayfasında; kimlik doğrulama ve hata kodları dokümantasyonda yer alır.

Ücretsiz API anahtarını 30 saniyede alın → https://apibir.com

← Tüm Blog Yazılarına Dön Ücretsiz API Anahtarı Al