Çiçeksepeti API: çiçek, hediye ve pazaryeri ürünlerinin fiyatları JSON olarak
Çiçeksepeti, sitedeki ürünleri ve fiyatları alıcı tarafında dışarıya açan bir API yayımlamıyor. Bu uçlar ciceksepeti.com'u sipariş vermeden önce ürün sayfasına bakan bir müşterinin gördüğü haliyle okur: orkide, gül, çikolata gibi Çiçeksepeti'nin kendi ürünleri ve pazaryerindeki elektronik, moda ve ev ürünleri; TL fiyatı, sayfada üstü çizili bir fiyat varsa o, 'Sepet Fiyatı' etiketi, teslimat rozeti, puanı ve buketin içinde ne olduğu. Elinizde yalnız ürün kodu varsa (adresin sonundaki `at6343` ya da `kcm74954793` gibi) `product/detail` ürünü doğrudan açar; aynı kodu aramaya yazmak da tek satırlık bir sonuç döndürür. Çiçeksepeti'de mağazası olanların ürün yükleyip sipariş yönettiği satıcı entegrasyonunun yerine geçmez: buradan ürün eklenmez, stok ya da sipariş güncellenmez; dönen şey sitenin ziyaretçiye gösterdiği güncel veridir.
Uçlar
| endpoint | Ne döndürür | Zorunlu |
|---|---|---|
| search | Bir kelimeyle ya da bir kategorinin içinde arama (`kirmizi-gul`, `orkide` gibi slug ya da kategori adresi). TL fiyat aralığı, 'Kargo Bedava' ve 'Aynı Gün Teslimat' süzgeçleri, sitenin yedi sıralama seçeneği, sayfa başına 30 ürün. Her satır fiyatın türünü söyler: indirimli, sepette ya da normal. `query` ya da `category`'den biri yeter. | hepsi opsiyonel |
| product/detail | Ürün sayfasının tamamı, adresle ya da ürün koduyla: KDV hariç fiyat, üstü çizili fiyat, sepet fiyatı etiketi, açılan seçeneğin stoku, her seçeneğin kendi fiyatı, puan ve değerlendirme sayısı, pazaryeri ürünlerinde satıcı ve satıcı puanı, özellik tablosu, buket içeriği ('Tekli Kırmızı Gül: 20 Adet' gibi) ve teslimat rozetleri. | hepsi opsiyonel |
| product/reviews | Yazılı yorumlar, çağrı başına 20 tane: yıldız, metin, tarih, yorumu yazanın şehri ve 'faydalı' oyu. Sitenin altı sıralama seçeneği, yıldız süzgeci ve `next_cursor` ile sayfalama. Yorumcu adı dönmez. | hepsi opsiyonel |
| search/suggest | Sitenin arama kutusunun önerileri: önerilen kategoriler ve `search`'e `category` olarak verilebilen slug'ları. | query |
Her çağrı kredi ile ücretlendirilir. Başarısız ve engellenen çağrılar ücretsizdir.
Çalışan örnek
Aynı gün teslim edilen orkideler, en çok satanlara göre: 1.099 sonuç; ilk sayfadaki 30 satırın hepsinde 'Aynı Gün Ücretsiz Teslimat' yazıyor, yarısı indirimli. Satırdaki puan ve değerlendirme sayısı arama dizininden gelir ve ürün sayfasındakiyle aynı olmayabilir: `at6343` için arama 99.999 değerlendirme gösterdi, aynı gün `product/detail` 119.636 dedi; `vbt1789`'da fark 6.799'a karşı 6.800'dü. Kesin sayı gerekiyorsa `product/detail` çağırın.
curl -X POST https://api.reefapi.com/ciceksepeti/v1/search \
-H "x-api-key: API_ANAHTARINIZ" \
-H "content-type: application/json" \
-d '{"query": "orkide", "same_day": true, "sort": "best_selling"}'{
"ok": true,
"data": {
"results": [
...
{
"position": 2,
"product_id": 181620500,
"product_code": "vbt1789",
"title": "Gazete Buket Kağıtlı Saksıda Beyaz Çiftli Orkide",
"url": "https://www.ciceksepeti.com/gazete-buket-kagitli-saksida-beyaz-ciftli-orkide-vbt1789",
"price": 999.99,
"price_display": "999,99 TL",
"price_type": "discounted",
"price_before_discount": 1099.0,
"price_outside_basket": null,
"discount_percent": 9,
"currency": "TRY",
"search_index_rating": 4.3,
"search_index_rating_count": 6799,
"delivery_text": "Aynı Gün Ücretsiz Teslimat",
"badge": "TREND TASARIM",
"category_path": [{ "id": 216, "name": "Flower" }, { "id": 234, "name": "Orkide" }],
"is_marketplace": false
},
...
{
"position": 6,
"product_id": 181620425,
"product_code": "at6343",
"title": "2 Dal Beyaz Orkide Çiçeği",
"price": 999.99,
"price_type": "discounted",
"price_before_discount": 1099.0,
"search_index_rating": 4.4,
"search_index_rating_count": 99999,
"delivery_text": "Aynı Gün Ücretsiz Teslimat",
...
},
...
],
"count": 30,
"total_results": 1099,
"total_pages": 37,
"page": 1,
"page_size": 30,
"has_next_page": true
},
"meta": { "record_count": 30, "charged_credits": 1, "cache_hit": false, "mode": "live" }
}Çiçeksepeti scraper'ı: HTML'deki gizli fiyatlar ve sahte stok sayıları
Ürün sayfasında ekranda görünmeyen fiyatlar da duruyor. Motoru kurarken incelediğimiz bir Poco X8 sayfasında müşteri 38.999 TL 'Sepet Fiyatı' görüyordu; HTML'de ise gizlenmiş bir blokta 41.426, gizli bir indirim kutusunda da 49999.00 yazıyordu. Eski fiyat sınıfını ilk bulduğu yerde okuyan bir ayrıştırıcı, ekranda olmayan bir indirimi kaydeder. Burada yalnız görünen üstü çizili fiyat `price_before_discount` olur; o telefonda bu alan null döndü.
Stok sayısı da her zaman bir sayı değil. İki ürünün sayfasında stok olarak 9999 ve 2147482519 yazıyordu, ikisi de satıştaydı. Bunlar gerçek adet değil, yer tutucu; motor 9999 ve üzerini `stock_count: null` olarak verir. Çiçeklerde ve Çiçeksepeti'nin kendi hediyelerinde ise sayfa stok hiç yayımlamıyor.
Arama sayfası da kendi başına yanıltıcı. Karşılığı olmayan bir kelimede sayfa 30 alakasız öneri ürünüyle dolu açılıyor; son sayfanın ötesi istendiğinde de site 1. sayfaya yönlendiriyor. HTML'den sayan bir döngü ilkinde 30 ürün bulduğunu, ikincisinde listenin hiç bitmediğini sanır. Burada ilki boş sonuç, ikincisi boş sayfa ve `page_notice` olarak döner.
Sevgililer Günü ya da Anneler Günü öncesinde gül ve orkide fiyatlarını günde birkaç kez kaydetmek gibi bir iş, tam bu üç noktada sessizce bozulur: tablo dolar, ama içindeki indirimlerin, stokların ve sonuç sayılarının bir kısmı sitede hiç yoktur.
Aynı dildeki diğer API dökümanları
- Trendyol API dökümanı
- Hepsiburada API dökümanı
- n11 API dökümanı
- Pazarama API dökümanı
- Getir API dökümanı
- Migros API dökümanı
- CarrefourSA API dökümanı
- A101 API — fiyat listesi ve ürünler
- Watsons Türkiye API dökümanı
- ŞOK Market API — ürünler ve fiyatlar
- Amazon.com.tr API — fiyat ve ürün verisi
- MediaMarkt Türkiye API — fiyat ve ürün sorgulama
- Teknosa API — ürün sorgulama ve satıcı fiyatları
- Vatan Bilgisayar API — fiyat listesi ve mağaza stoğu
Sınırlar ve dürüst notlar
- Bu API'yi Çiçeksepeti çıkarmadı, resmi bir Çiçeksepeti hizmeti de değil; şirketle ortaklık ya da anlaşma yok. Veriler sitenin herkese açık sayfalarından okunuyor.
- Teslimat metni ve rozetler sitenin varsayılan görünümüne göredir; site bu görünümü İstanbul Avrupa yakası olarak açıyor. İl ya da ilçe seçilemiyor, yani 'Ankara'ya aynı gün gider mi' sorusunun cevabı bu API'de yok.
- Bir ürünü başka satıcıların kaça sattığı yayımlanmıyor: Çiçeksepeti iki mağazanın sattığı aynı ürünü iki ayrı ürün koduyla listeliyor. Barkod (GTIN) da incelediğimiz sayfaların hiçbirinde yoktu.
- Stok yalnız açılan seçeneğe aittir (`stock_variant_code`); diğer beden ve renklerde yalnız satılabilir olup olmadıkları gelir.
- Yalnız yıldız verilmiş değerlendirmeler de yorum listesinde yer alıyor: 27 Ekim'de `vbt1789`'un en yeni 20 değerlendirmesinin 10'u 'Bu ürün için yalnızca puan verilmiştir, yorum yapılmamıştır.' metniyle ve `id: null` olarak geldi. Bunlar id ile tekilleştirilemez; metin analizi yapacaksanız ayıklayın.
- Arama süzgeçleri fiyat aralığı, kargo bedava, aynı gün teslimat ve kategoriyle sınırlı; sitenin 'Kime', 'Ne İçin' gibi yan süzgeçleri ve yorum konuları yok. Fiyat aralığı tam lira alır.
- `product/detail` bazen yavaş: 27 Ekim'deki iki ölçümde 16,3 s ve 3,9 s sürdü. Zaman aşımınızı buna göre ayarlayın.
- Dört ucun her biri çağrı başına 1 kredi; aramada bir çağrı 30 ürünlük tek bir sayfadır.