Barcode Lookup API
Bir barkod, 8 market, sonuçlar geldikçe ekranda.
8 Türk e-ticaret platformundan barkod bazlı fiyat karşılaştırması ve ürün bilgisi çeken REST API.
- Rol
- Backend, veri toplama
- Yıl
- 2025
- Durum
- Yayında
- Yığın
- Node.js · Puppeteer · Cheerio · Redis · SSE
- Bağlantılar
- Web sitesiKaynak kod
Mimari
Mimari
- 01
REST + SSE
Express. Fiyat karşılaştırması Server-Sent Events ile akar, en ucuz fiyat otomatik işaretlenir, CSV’ye aktarılır.
- 02
8 kazıyıcı
Sunucuda render edilen sitelere düz HTTP + Cheerio; Chrome sadece gereken yerde.
- 03
Redis önbellek
Her barkod:platform çifti 24 saat. Redis yoksa API önbelleksiz çalışmaya devam eder.
Ekranlar
Fiyat karşılaştırma, gerçek sorgu
İki barkod için 8 marketin fiyatları; bulunamayanlar gri, en ucuz işaretli.
Gerçek ekran görüntüleri, dil ve temaya göre değişir
Nasıl çalışıyor
İki servis, tek API
Fiyat karşılaştırma ve ürün bilgisi başta iki ayrı servisti. Onları ortak tarayıcı ve önbellek katmanı olan tek bir serviste birleştirip yeniden yapılandırdım. Trendyol, Hepsiburada, Pazarama, CarrefourSA, Mopaş, Afta Market, Şok Market ve Market Karşılaştır destekleniyor.
Paralel tarama, akan sonuçlar
Fiyat modunda 8 platform aynı anda taranır, her biri kendi sekmesinde. Kullanıcı en yavaş marketi beklemez: her sonuç bulunduğu an SSE ile ekrana gelir.
Chrome’u sadece gerektiğinde açmak
Sunucuda render edilen sitelerde aynı HTML’i düz bir HTTP isteği de veriyor; bunlara Chrome yerine axios ile gidilir, çok daha az CPU ve RAM harcanır. Tarayıcı gereken sitelerde Puppeteer (stealth) kullanılır ve görsel, stil, font, medya istekleri baştan engellenir.
İlk bulan kazanır
Ürün bilgisi modunda tüm platformlar paralel aranır ve ürünü ilk bulan kazanır; ardından ürün sayfasından kategori yolu çıkarılır. Bulunan ürünler kaydedilip sonraki isteklerde anında döner, bulunamayan barkodlar bir daha taranmaz.
Gerçek kullanımda
API, çalıştığım şirketin ön muhasabe programına entegre edildi. Program içinden barkodla ürün fiyatı çekmek ve platformlar arasında karşılaştırmak için kullanılıyor.