Migros API: ürün, fiyat ve indirimleri JSON olarak
Migros'un geliştiricilere açık bir API'si yok. Burada dönen şey Sanal Market'in herkese gösterdiği katalog: ürün, marka, raf fiyatı ve ayrı bir alan olarak Money kart fiyatı. Bir de çoğu motorda bulunmayan bir uç var: ürünü **barkodundan** bulabiliyorsunuz, yani elinizdeki paketten doğrudan kayda gidebiliyorsunuz.
Uçlar
| endpoint | Ne döndürür | Zorunlu |
|---|---|---|
| search | Anahtar kelimeyle arama. Her ürün raf fiyatıyla ve ayrıca Money kart fiyatıyla birlikte gelir. | query |
| product/detail | Tek ürünün tamamı: başlık, marka, kategori yolu ve bütün alanlar. `product_id` ya da ürün adresiyle. | product_id |
| product/barcode | Paketin üzerindeki EAN/GTIN barkoduyla ürünü bulur ve `product/detail` ile aynı tam kaydı döner. | barcode |
| deals | Migros'un kendi indirim sayfaları: tüm indirimli ürünler, Money kart indirimleri ve çoklu alım kampanyaları. | hepsi opsiyonel |
| category | Bir kategorideki bütün ürünler, sayfalı, aramayla aynı satır ve filtrelerle. | category |
| categories | Sanal Market'in ana raf ağacı: her ana kategori, id'si ve adresi. | hepsi opsiyonel |
| suggest | Kullanıcı yazarken çıkan öneriler: arama ifadeleri, markalar ve kategoriler. | query |
Her çağrı kredi ile ücretlendirilir. Başarısız ve engellenen çağrılar ücretsizdir.
Çalışan örnek
Raf fiyatı ile Money kart fiyatı aynı sayfada iki ayrı değer. Tek bir 'fiyat' alanı toplayan bir karşılaştırma, kartlı ve kartsız fiyatları karıştırır ve sonuç doğru görünür ama değildir.
curl -X POST https://api.reefapi.com/migros/v1/product/barcode \
-H "x-api-key: ANAHTARINIZ" \
-H "content-type: application/json" \
-d '{"barcode": "8690632000015"}'{
"ok": true,
"data": {
"product": {
"product_id": "...",
"title": "...",
"brand": "...",
"price": 89.9,
"money_card_price": 79.9
}
},
"meta": { "record_count": 1, "cache_hit": false, "mode": "live" }
}Migros için kendi scriptinizi yazmak yerine
Migros kataloğunu kendiniz çekmek ilk gün çalışır. Sonrasında iki şey oluyor ve ikisi de sessiz: site yapısını değiştirdiğinde ayrıştırıcınız hata vermeden boş liste döndürür, bot koruması devreye girdiğinde istek engellenir.
Markette ayrıca kendine özgü bir tuzak var: Money kart fiyatı ile raf fiyatı aynı kartta duruyor. İlk bulduğu sayıyı alan bir script ikisini karıştırır ve ortaya hiçbir yerde hata vermeyen yanlış bir veri tabanı çıkar.
Tek seferlik bir çıkarım için kendi scriptiniz daha ucuz, bunu dürüstçe söylüyoruz. Günlük çalışan bir fiyat takibi kuruyorsanız maliyet kodda değil, fark edilmeyen kırılmalarda birikir.
Sınırlar ve dürüst notlar
- Bu Migros'un resmi API'si değildir ve Migros ile bir ortaklığımız yoktur.
- Raf fiyatı ve Money kart fiyatı ayrı alanlardır. Ürünün kart indirimi yoksa o alan null gelir.
- Katalog Sanal Market'i kapsar; mağazaya özel fiyat ve stok burada yayımlanmaz.
- Her çağrı canlıdır, önbellekten yanıt dönmez.