Best Buy Fiyat ve Stok Verilerini Kazımak 2026: API mi HTML mi?
Best Buy fiyat ve stok verilerini kazımak 2026 yılında hâlâ en çok aranan e-ticaret veri toplama görevlerinden biridir. Sebebi basit: Best Buy'un resmi Products API erişim için onay gerektirir ve anahtarlar sıkı hız limitlerine tabidir. Canlı fiyatlandırma ve mağaza düzeyinde stok durumu ise genellikle doğrudan siteden çekilmelidir. Bu rehber, HTML kazıma yaklaşımını ProxyHat proxy altyapısıyla nasıl uygulayacağınızı gösterir.
Resmi API, katalog metaverisi (ürün adı, açıklama, kategori) için uygundur ancak gerçek zamanlı mağaza stoku ve promosyon fiyatları için her zaman güncel değildir. Ayrıca API anahtarı başvurusu günler sürebilir ve üretim ortamında saniyede yaklaşık 100 istek ile sınırlandırılır. Eğer binlerce SKU'yu saatlik olarak izlemeniz gerekiyorsa, HTML kazıma tek pratik seçenektir — ancak Best Buy'ın anti-bot savunmasıyla karşılaşacaksınız.
Best Buy'ın Anti-Bot Stack: Akamai Bot Manager
Best Buy, Akamai Bot Manager kullanır. Bu sistem, tarayıcı parmak izi ve davranışsal sinyallerle botları tespit eder. İki kritik çerez akışı vardır:
- _abck: Tarayıcı sensör verisini içeren imza çerezi. Her sayfa yüklemesinde JavaScript tarafından güncellenir.
- bm_sz: Bot yönetimi oturum belirteci. IP ve davranış kalıplarına göre risk skoru taşır.
Veri merkezi IP'leri genellikle 5-10 istek içinde Akamai tarafından zorlanır — ya CAPTCHA sayfası, ya 403 yanıtı, ya da boş sayfa döner. Bu nedenle datacenter proxy'leri Best Buy kazıması için neredeyse işe yaramaz. Mobil veya yerleşik (residential) proxy'ler, gerçek ISP atamalarından geldiği için çok daha uzun süreler boyunca çalışır.
Akamai Sensör Çerezi Nasıl Çalışır?
Akamai'nin istemci tarafı JavaScript'i, tarayıcı özelliklerini (canvas, WebGL, font listesi, zamanlama verileri) toplayarak bir sensör verisi paketi üretir. Bu paket _abck çerezine yazılır ve her istekte sunucu tarafından doğrulanır. Eğer sensör verisi eksik veya tutarsızsa, Akamai sessizce engeller — hata kodu vermeden sayfa içeriğini boşaltabilir.
Bu, standart requests kütüphanesinin neden başarısız olduğunu açıklar: Python requests JavaScript çalıştırmaz, dolayısıyla _abck çerezi asla oluşmaz. Çözüm, tarayıcı parmak izini taklit eden kütüphaneler kullanmaktır.
URL Paternleri ve CSS Seçiciler
Best Buy ürün sayfaları tutarlı bir URL yapısına sahiptir. Her ürün bir SKU kimliği ile tanımlanır:
https://www.bestbuy.com/site/<ürün-slug>/<sku>.p?skuId=<sku>Örnek: https://www.bestbuy.com/site/sony-playstation-5/6426149.p?skuId=6426149
Temel CSS Seçiciler
| Veri Alanı | CSS Seçici | Notlar |
|---|---|---|
| Fiyat | .priceView-customer-price | Promosyon fiyatını içerir |
| Orijinal fiyat | .priceView-price-navigation ~ .priceView-regional-price | Çizili fiyat |
| Ürün başlığı | .sku-title h1 | Sayfa başlığı |
| Stok durumu | .fulfillment-availability-section | Mağaza/online durumu |
| Ürün özellikleri | .specifications-table | Tablo formatında |
Dahili JSON Uç Noktaları
Best Buy, sayfa içi JavaScript tarafından çağrılan dahili API'ler kullanır. Bunlar doğrudan erişilebilir:
# Fiyat ve stok uç noktası (SKU + zip kodu)
https://www.bestbuy.com/productfulfillment?skuId=6426149&zip=60601
# Fiyat uç noktası
https://www.bestbuy.com/priceview?skuId=6426149Bu uç noktalar JSON döndürür ve HTML ayrıştırmasından çok daha verimlidir. Ancak Akamai koruması altındadırlar — geçerli _abck çerezi ve gerçekçi IP gerektirir.
Örnek truncated yanıt:
{
"sku": "6426149",
"price": {
"currentPrice": 499.99,
"regularPrice": 549.99,
"onSale": true
},
"inStoreAvailability": true,
"stores": [
{
"storeId": "123",
"storeName": "Chicago - Lincoln Park",
"stockStatus": "IN_STOCK",
"quantity": 12
}
]
}Mağaza Düzeyinde Stok İçin ABD Yerleşik Proxy'leri
Best Buy mağaza stoku lokasyona özeldir. Chicago'daki bir mağazada ürün varken, Miami'de olmayabilir. Best Buy web sitesi, kullanıcının IP adresinden veya zip kodundan coğrafi konum çıkarır ve buna göre stok gösterir.
Bu, veri toplama stratejiniz için iki şey ifade eder:
- Zip kodu parametresi yeterli değildir — Akamai IP coğrafi konumunu da doğrular.
- ABD yerleşik proxy'leri şarttır. ProxyHat ile şehir düzeyinde hedefleme yapabilirsiniz.
ProxyHat kullanıcı adında şehir parametresi ile coğrafi hedefleme:
# Chicago'dan bağlan
http://user-country-US-city-chicago:pass@gate.proxyhat.com:8080
# New York'tan bağlan
http://user-country-US-city-newyork:pass@gate.proxyhat.com:8080
# Los Angeles'tan bağlan
http://user-country-US-city-losangeles:pass@gate.proxyhat.com:8080Bu şekilde, her şehir için ayrı bir oturum açarak o bölgedeki mağaza stokunu gerçekçi bir şekilde sorgulayabilirsiniz. ProxyHat lokasyonlar sayfasından desteklenen tüm ABD şehirlerini görebilirsiniz.
Proxy Türü Karşılaştırması
| Özellik | Datacenter | Residential | Mobile |
|---|---|---|---|
| Akamai geçişi | 5-10 istek sonra blok | Yüksek başarı oranı | En yüksek başarı oranı |
| Hız | ~50ms | ~200-500ms | ~300-800ms |
| Fiyat | En düşük | Orta | En yüksek |
| Mağaza stoku | Çalışmaz | İdeal | İdeal ama pahalı |
| Eşzamanlı oturum | 100+ | 100+ | 50-100 |
Best Buy için residential proxy'ler en iyi dengeyi sunar. ProxyHat fiyatlandırması sayfasından residential planları inceleyebilirsiniz.
Python ile Pratik Uygulama: curl_cffi + ProxyHat
Standart requests kütüphanesi Akamai sensör çerezini üretmediği için Best Buy'da çalışmaz. Bunun yerine curl_cffi kullanacağız — bu kütüphane, libcurl'ün TLS parmak izini gerçek Chrome tarayıcısını taklit edecek şekilde yapılandırır.
from curl_cffi import requests
import json
import time
# ProxyHat residential proxy - Chicago
def get_proxy(zip_code, session_id):
return {
"http": f"http://user-country-US-city-chicago-session-{session_id}:pass@gate.proxyhat.com:8080",
"https": f"http://user-country-US-city-chicago-session-{session_id}:pass@gate.proxyhat.com:8080"
}
# SKU bilgisi çek
def scrape_bestbuy_sku(sku_id, zip_code, session_id):
proxy = get_proxy(zip_code, session_id)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Accept": "application/json, text/plain, */*",
"Accept-Language": "en-US,en;q=0.9",
"Referer": f"https://www.bestbuy.com/site/product/{sku_id}.p?skuId={sku_id}",
}
url = f"https://www.bestbuy.com/productfulfillment?skuId={sku_id}&zip={zip_code}"
try:
response = requests.get(
url,
headers=headers,
proxies=proxy,
impersonate="chrome120",
timeout=30
)
if response.status_code == 403:
print(f"403 - Akamai challenge. Backing off...")
time.sleep(10)
return None
data = response.json()
return {
"sku": data.get("sku"),
"price": data.get("price", {}).get("currentPrice"),
"inStoreAvailability": data.get("inStoreAvailability"),
"stores": data.get("stores", [])[:3] # truncated
}
except Exception as e:
print(f"Error: {e}")
return None
# Kullanım
result = scrape_bestbuy_sku("6426149", "60601", "sess-chi-001")
print(json.dumps(result, indent=2))Örnek çıktı:
{
"sku": "6426149",
"price": 499.99,
"inStoreAvailability": true,
"stores": [
{"storeId": "123", "stockStatus": "IN_STOCK", "quantity": 12},
{"storeId": "456", "stockStatus": "LOW_STOCK", "quantity": 2},
{"storeId": "789", "stockStatus": "OUT_OF_STOCK", "quantity": 0}
]
}curl ile Hızlı Test
Kodu yazmadan önce proxy bağlantısını test etmek için:
curl -x "http://user-country-US-city-chicago:pass@gate.proxyhat.com:8080" \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
-H "Accept: application/json" \
"https://www.bestbuy.com/productfulfillment?skuId=6426149&zip=60601"Rotasyon, Backoff ve Sayfalama Stratejileri
Zip Kodu Başına Yapışkan Oturum
Her zip kodu için ayrı bir -session- kimliği kullanın. Bu, ProxyHat'ın aynı IP'yi tutmasını sağlar ve Akamai'nin oturum sürekliliğini algılamasına yardımcı olur:
# Chicago için sabit oturum
http://user-country-US-city-chicago-session-chi-001:pass@gate.proxyhat.com:8080
# New York için sabit oturum
http://user-country-US-city-newyork-session-ny-001:pass@gate.proxyhat.com:8080403 ve Akamai Challenge Backoff
Akamai challenge aldığınızda (403 veya bozuk içerik), şu stratejiyi uygulayın:
- Exponential backoff: 5s, 10s, 20s, 40s aralıklarla yeniden dene.
- Oturum değiştir: Aynı IP'de 3 başarısızlık sonrası yeni
-session-kimliği ile IP rotasyonu yapın. - Çerez sıfırla:
_abckvebm_szçerezlerini temizleyip yeniden edinin. - Hız azalt: Saniyede istek sayısını 2-3'e düşürün.
import time
import random
def retry_with_backoff(func, max_retries=5):
for attempt in range(max_retries):
result = func()
if result is not None:
return result
wait_time = (2 ** attempt) + random.uniform(0, 2)
print(f"Retry {attempt + 1}, waiting {wait_time:.1f}s")
time.sleep(wait_time)
return NoneKategori Sayfalarında Sayfalama
Best Buy kategori sayfaları ?cp=1, ?cp=2 parametreleriyle sayfalanır. Her sayfada yaklaşık 24-48 ürün bulunur. Tüm SKU'ları toplamak için:
def scrape_category(category_url, max_pages=50):
sku_ids = []
for page in range(1, max_pages + 1):
url = f"{category_url}?cp={page}"
response = requests.get(url, proxies=proxy, impersonate="chrome120")
# SKU'ları sayfa HTML'inden çıkar
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, "html.parser")
for link in soup.select("a.sku-link"):
href = link.get("href", "")
if "/site/" in href and ".p?" in href:
sku = href.split("skuId=")[-1].split("&")[0]
sku_ids.append(sku)
time.sleep(2) # Nazik hız
# Son sayfa kontrolü
if not soup.select("a.sku-link"):
break
return sku_idsEtik ve Hukuki Hususlar
Best Buy fiyat ve stok verilerini kazımadan önce aşağıdaki noktaları göz önünde bulundurun:
- Yalnızca herkese açık veri: Ürün fiyatları, stok durumu ve katalog bilgileri herkese açıktır. Hesap gerektiren verileri kazımayın.
- Hesap veya ödeme otomasyonu yapmayın: Otomatik satın alma botları Best Buy'ın Hizmet Şartları'nı ihlal eder.
- CFAA ve GDPR: ABD'de CFAA, yetkisiz erişimi yasaklar. Avrupa'da GDPR, kişisel veri toplamayı kısıtlar. Yalnızca herkese açık, kişisel olmayan veriyle çalışın.
- robots.txt kontrolü: Best Buy'ın
robots.txtdosyasını inceleyin ve engellenen yolları kazımayın. - Hız sınırlarına saygı: Saniyede 2-5 istek makul bir hızdır. Best Buy'ın sunucularına aşırı yük bindirmeyin.
Eğer sadece katalog metaverisi gerekiyorsa ve saatlik binlerce istek gerekmiyorsa, resmi Best Buy Developer API tier'i yeterli olabilir. API, fiyat ve temel ürün bilgileri için daha güvenilir ve yasal olarak daha temiz bir yoldur.
Best Buy Fiyat Takibi ve Stok Kontrolü İçin İş Akışı
Otomatik bir Best Buy fiyat takibi ve stok kontrol sistemi kurmak için önerilen mimari:
- SKU listesi hazırla: Kategori kazıması veya API ile tüm izlenecek SKU'ları topla.
- Zip kodu listesi: İzlenecek mağaza bölgelerini belirle (örneğin 50 büyük şehir).
- Oturum havuzu: Her zip kodu için bir ProxyHat sticky session aç.
- Periyodik yoklama: Her SKU için her zip kodunda saatlik yoklama yap.
- Veri depolama: Fiyat/stok değişikliklerini zaman serisi veritabanına kaydet.
- Uyarı sistemi: Stok geldiğinde veya fiyat düştüğünde bildirim gönder.
Bu mimari hakkında daha fazla bilgi için web kazıma kullanım senaryosu sayfamızı inceleyebilirsiniz. SERP takibi ile entegre etmek isterseniz SERP takibi rehberimize bakın.
ProxyHat Kurulumu ve Yapılandırması
ProxyHat'a başlamak için dokümantasyon adresinden hesap bilgilerinizi alabilirsiniz. Temel bağlantı parametreleri:
| Parametre | Değer |
|---|---|
| Gateway | gate.proxyhat.com |
| HTTP Port | 8080 |
| SOCKS5 Port | 1080 |
| URL Formatı | http://USERNAME:PASSWORD@gate.proxyhat.com:8080 |
Kullanıcı adında parametreler nokta ile ayrılır:
# Ülke + şehir + oturum
user-country-US-city-chicago-session-abc123
# Sadece ülke
user-country-US
# SOCKS5 alternatifi
socks5://user-country-US-city-chicago:pass@gate.proxyhat.com:1080Sık Yapılan Hatalar ve Edge Case'ler
- Standart requests kullanmak: Akamai sensör çerezi olmadan 403 alırsınız.
curl_cffiveya Playwright kullanın. - Datacenter proxy kullanmak: 5-10 istek sonra bloklanırsınız. Residential şart.
- Tek IP ile tüm ABD'yi taramak: IP coğrafi konumu stok verisini etkiler. Şehir düzeyinde hedefleme yapın.
- Çerez yönetimini atlamak:
_abckçerezini saklayın ve yeniden kullanın. Her istekte sıfırlamayın. - Aşırı hız: Saniyede 10+ istek Akamai'yi tetikler. 2-5 istek/saniye makuldur.
- Referer header'ı eksik: Dahili API çağrılarında
Refererheader'ı ürün sayfasını göstermelidir.
Key Takeaways
- Best Buy, Akamai Bot Manager kullanır; datacenter IP'ler 5-10 istek içinde bloklanır.
curl_cffiile Chrome TLS parmak izi taklit edilerek Akamai sensör çerezi üretilebilir.- Mağaza stoku lokasyona özeldir — ABD residential proxy'leri ile şehir düzeyinde hedefleme şarttır.
- Dahili
/productfulfillmentuç noktası, HTML ayrıştırmasından daha verimlidir.- Zip kodu başına sticky session + exponential backoff = yüksek başarı oranı.
- Yalnızca herkese açık veriyi kazıyın; hesap/ödeme otomasyonu ToS ihlalidir.
Best Buy fiyat ve stok verilerini kazımak 2026 yılında doğru proxy altyapısı ile mümkündür. ProxyHat residential proxy'leri ve bu rehberdeki stratejilerle, güvenilir bir fiyat takibi ve stok kontrol sistemi kurabilirsiniz.






