Ö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
| Uç | 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