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ıç | Profesyonel | Plus |
|---|---|---|---|
| Günlük Limit | 100.000 istek/gün | 250.000 istek/gün | 750.000 istek/gün |
| Dakikalık Limit | 600 istek/dk | 1.200 istek/dk | 1.500 istek/dk |
| Kategori Endpoint'leri | Erişim yok | Tam erişim | Tam erişim |
| Ürün Görselleri / Özellikler | Erişim yok | Tam erişim | Tam erişim |
Plus Endpoint'leri (/plus/*) |
Erişim yok | Erişim yok | Tam erişim |
| CSV İşlemi | Erişim yok | Erişim yok | 10 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:
| Header | Açıklama |
|---|---|
| X-RateLimit-Limit-Day | Günlük maksimum istek sayısı |
| X-RateLimit-Remaining-Day | Bugün kalan istek sayısı |
| X-RateLimit-Limit-Minute | Dakikalık maksimum istek sayısı |
| X-RateLimit-Remaining-Minute | Bu dakika kalan istek sayısı |
| X-RateLimit-Reset | Günlük limitin sıfırlanacağı Unix timestamp |
| Retry-After | Limit aşımında beklenecek saniye (429 durumunda) |
Örnek Yanıt Header'ları
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ı
{
"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ı
{
"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
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.