Kart FiyatKartFiyat API

Genel

Rate Limiting

API kullanım limitleri ve aşım durumunda yapılması gerekenler.

Limitler

KartFiyat, adil kullanım ve sistem kararlılığı için rate limiting uygular. Limitler seçtiğiniz plana göre değişir.

Limit TürüBaşlangıçProfesyonelPlus
Günlük Limit100.000 istek/gün250.000 istek/gün750.000 istek/gün
Dakikalık Limit600 istek/dk1.200 istek/dk1.500 istek/dk
Kategori Endpoint'leriErişim yokTam erişimTam erişim
Ürün Görselleri / ÖzelliklerErişim yokTam erişimTam erişim
Plus Endpoint'leri (/plus/*)Erişim yokErişim yokTam erişim
CSV İşlemiErişim yokErişim yok10 işlem/gün

Kurumsal paket Plus ile aynı endpoint erişimine sahiptir. CSV günlük limiti, genel istek limitlerinden bağımsız olarak kullanıcı başına ayrıca uygulanır.

Rate Limit Header'ları

Her API yanıtı, rate limit durumunuz hakkında bilgi veren header'lar içerir:

HeaderAçıklama
X-RateLimit-Limit-DayGünlük maksimum istek sayısı
X-RateLimit-Remaining-DayBugün kalan istek sayısı
X-RateLimit-Limit-MinuteDakikalık maksimum istek sayısı
X-RateLimit-Remaining-MinuteBu dakika kalan istek sayısı
X-RateLimit-ResetGünlük limitin sıfırlanacağı Unix timestamp
Retry-AfterLimit aşımında beklenecek saniye (429 durumunda)

Örnek Yanıt Header'ları

HTTP
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit-Day: 250000
X-RateLimit-Remaining-Day: 249875
X-RateLimit-Limit-Minute: 60
X-RateLimit-Remaining-Minute: 58
X-RateLimit-Reset: 1738627200

Limit Aşımı

Rate limit aşıldığında API 429 Too Many Requests yanıtı döner.

Günlük Limit Aşımı

JSON
{
  "success": false,
  "error": {
    "code": "DAILY_LIMIT_EXCEEDED",
    "message": "Günlük istek limitinize ulaştınız.",
    "limit": 250000,
    "used": 250000,
    "reset_at": "2026-02-04T00:00:00+03:00"
  }
}

Dakikalık Limit Aşımı

JSON
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Dakikalık istek limitinize ulaştınız. Lütfen biraz bekleyin.",
    "limit": 60,
    "retry_after": 45
  }
}

En İyi Uygulamalar

Rate Limit Yönetimi İçin İpuçları

  1. Header'ları kontrol edin:Her yanıtta dönen rate limit header'larını okuyun ve kalan limitinizi takip edin.
  2. Exponential backoff uygulayın: 429 hatası aldığınızda, her denemede bekleme süresini artırın (1s, 2s, 4s, 8s...).
  3. Yanıtları cache'leyin:Sık erişilen verileri local olarak cache'leyerek gereksiz istekleri azaltın.
  4. Batch işlemleri kullanın: Mümkün olduğunda tek bir istekte birden fazla öğe alın.
  5. İstekleri yayın: Burst istekler yerine istekleri zamana yayarak dakikalık limiti aşmayı önleyin.

Exponential Backoff Örneği

JavaScript
async function fetchWithRetry(url, options, maxRetries = 3) {
  let retries = 0;

  while (retries < maxRetries) {
    const response = await fetch(url, options);

    if (response.status === 429) {
      const retryAfter = response.headers.get('Retry-After') || Math.pow(2, retries);
      console.log(`Rate limited. Waiting ${retryAfter} seconds...`);
      await new Promise(r => setTimeout(r, retryAfter * 1000));
      retries++;
      continue;
    }

    return response;
  }

  throw new Error('Max retries exceeded');
}

Limit Artırımı

Mevcut planınızın limitleri ihtiyaçlarınızı karşılamıyorsa, daha yüksek limitli bir plana geçebilir veya özel bir kurumsal plan için bizimle iletişime geçebilirsiniz.