CarrefourSA API: fiyat ve ürün sorgulama, JSON olarak
Bu uçlar carrefoursa.com'da bir müşterinin gördüğünü okur: ürün adı, kategori, TL fiyatı, varsa CarrefourSA Kart ile ödenen fiyat, kilo fiyatı ve stokta olup olmadığı. Tedarikçi ya da satıcı entegrasyonu değildir; ürün yüklemez, sipariş çekmez, alıcı tarafındaki canlı ürün verisini döndürür. Kart fiyatını görmek için CarrefourSA'da üyelik ya da kart sahibi olmak gerekmez; iki fiyat da aynı yanıtta ayrı alanlarda gelir.
Uçlar
| endpoint | Ne döndürür | Zorunlu |
|---|---|---|
| search | Müşterinin yazacağı gibi bir arama kelimesiyle ya da CarrefourSA kategori koduyla ürün listeleme. Her satırda normal fiyat, varsa Kart fiyatı, kilo/litre fiyatı, stok durumu, çoklu alım ve sepet kampanyaları. Marka, sitenin fiyat bantları ve 'yalnız stoktakiler' filtresi; sıralama sitenin kendi seçenekleriyle. | hepsi opsiyonel |
| product/detail | Tek ürünün tam kaydı: bütün görseller, barkod, iki fiyat ayrı ayrı (Kart fiyatı bir sepet tutarına bağlıysa o şartın metniyle), paket boyutu, sipariş sınırları, kampanya tarihleri, içindekiler, alerjen, menşei, muhafaza bilgisi ve besin değerleri tablosu. | product_id |
| product/reviews | Ürüne yazılmış müşteri yorumları, en yeniden eskiye: puan, başlık, metin ve tarih. Yorum yazanın adı hiçbir zaman dönmez. | product_id |
| search/suggest | carrefoursa.com arama kutusunun, harfler girildikçe önerdiği arama ifadeleri. | query |
Her çağrı kredi ile ücretlendirilir. Başarısız ve engellenen çağrılar ücretsizdir.
Çalışan örnek
Balık, et ve şarküteride tartılı satılan ürünlerde price kilo fiyatıdır ve sold_by "weight" gelir. Örnekte halk arasında yaygın olan 'çupra' yazımını kullandık: site aramayı kendisi 'çipura'ya çevirdi (keyword_redirect). Aynı yazım toleransı dördüncü satıra bir Lego Toyota Supra seti de getirdi; fiyat listesi çıkarıyorsanız category_path ile süzün.
curl -X POST https://api.reefapi.com/carrefoursa/v1/search \
-H "x-api-key: ANAHTARINIZ" \
-H "content-type: application/json" \
-d '{"query": "çupra", "page_size": 5}'{
"ok": true,
"data": {
"results": [
{
"product_id": "30171460",
"title": "Çipura 600-800 g",
"category_path": ["Et, Tavuk, Balık", "Balık ve Deniz Mahsülleri", "Balık"],
"price": 399.0,
"price_display": "399,00 TL",
"currency": "TRY",
"member_price": 299.95,
"member_price_display": "299,95 TL",
"member_program": "CarrefourSA Kart",
"unit_price": 399.0,
"unit_price_unit": "kg",
"sold_by": "weight",
"availability": "in_stock",
"stock_level": null
},
...
],
"total_results": 4,
"keyword_redirect": { "type": "page", "url": "https://www.carrefoursa.com/tr/search/?text=%C3%A7ipura" }
},
"meta": { "record_count": 4, "cache_hit": false, "mode": "live" }
}CarrefourSA'yı kendiniz çekmeye kalkarsanız
İlk engel daha ilk istekte çıkıyor: site, sunucu IP'lerinden ve Türkiye dışından gelen istekleri Cloudflare ile geri çeviriyor. Ölçtüğümüzde bulut sunucusundan, robots.txt dahil, tek bir sayfa açılmadı. Yani script'iniz yerel bilgisayarınızda çalışıp sunucuya taşındığı gün durur.
İkincisi fiyatın kendisi. Üstü çizili fiyat gördüğümüz 71 ürünün 71'inde indirimli fiyat CarrefourSA Kart fiyatıydı, ürün verisinde 'liste fiyatı' adını taşıyan alan da kart fiyatını gösteriyor. Alan adına güvenen bir script, kartı olmayan müşterinin hiç ödemediği bir fiyatı kaydeder ve bunu hiçbir hata haber vermez.
Üçüncüsü sessiz başarı: olmayan bir ürün numarası istendiğinde site HTTP 200 ile bir hata gövdesi döndürüyor. Durum koduna bakan script bunu geçerli ürün sanar. Burada o durum NOT_FOUND olarak döner ve kredi düşmez. Bir kerelik bir fiyat listesi için kendi kodunuz yeter; her sabah çalışacak bir fiyat takibinde bu üç tuzak ayrı ayrı bakım ister.
Sınırlar ve dürüst notlar
- Bu CarrefourSA'nın resmi API'si değildir ve CarrefourSA ile bir ortaklığımız yoktur.
- Fiyat ve stok, sitenin varsayılan online mağazasına aittir. Site ürün sayfasında fiyat ve kampanyaların mağaza konumuna göre değişebileceğini yazıyor; mağaza bazında fiyat ya da stok sorgulama burada yok.
- Tartılı ürünlerde (balık, et, peynir) stock_level null döner, çünkü site bu ürünlerin stok sayısını birimsiz veriyor. Bu ürünlerin barkodu da mağaza içi koddur (barcode_in_store_code: true), paketteki EAN değildir.
- price_band yalnız sitenin kendi bantlarını kabul eder ('50 TL - 199,99 TL' gibi); serbest bir fiyat aralığı verilemez.
- İndirimli ürünleri toplu listeleyen bir uç yok: sitenin 'Fırsatlar' kategorisi indirim listesi değil, neredeyse bütün kataloğu içeriyor.
- Yanıtlar önbellekten gelmez; her çağrı o anki fiyatı okur.