Geçen hafta sonu, Amazon’un Best Sellers sayfasını dört farklı yöntemle kazımaya çalışırken neredeyse bir tencere kahveyi tek başıma bitirdim. İki yöntem gayet iyi çalıştı, biri IP adresimin banlanmasına ramak kalmasına neden oldu, biri ise gerçekten tek tıkla işi çözdü. Öğrendiklerimin tamamı burada.
Amazon devasa bir pazar yeri — 600 milyon ürün listelemesi, 310 milyondan fazla aktif müşteri hesabı ve saatlik güncellenen Best Sellers Rank (BSR) sistemi var. FBA ürün araştırması yapıyorsanız, rakip fiyat analizine bakıyorsanız ya da rakiplerinizden önce trendleri yakalamaya çalışıyorsanız, Best Seller verileri altın değerinde.
Peki bu veriyi Amazon’dan alıp bir tabloya aktarmak? İşte işin ilginç kısmı burada başlıyor. Ben requests + BeautifulSoup, Selenium, bir scraping API’si ve Thunderbit’i (kendi kod yazmadan çalışan AI web scraper aracımız) test ettim; hangisinin gerçekten sonuç verdiğini, hangilerinin ise sizi bir CAPTCHA sayfasına kilitleyeceğini görmek için.
Amazon Best Sellers Nedir ve Neden Önemsemelisiniz?
Amazon Best Sellers Rank (BSR), Amazon’un gerçek zamanlı sıralama tablosudur ve ürünleri her kategori içinde satış hacmine göre sıralar. Bunu, saatlik güncellenen bir popülerlik yarışması gibi düşünebilirsiniz; hem son hem de geçmiş satış verilerine dayanır. Amazon bunu şu şekilde açıklıyor:
"Amazon Best Sellers hesaplaması, Amazon satışlarına dayanır ve Amazon’da satılan her ürünün son ve geçmiş satışlarını yansıtmak için saatlik olarak güncellenir." — Amazon Seller Central
Best Sellers sayfası, kategori başına ilk 100 ürünü gösterir ve bunlar iki sayfaya bölünür; her sayfada 50 ürün vardır. 1. sayfa #1–50, 2. sayfa ise #51–100 sıralarını kapsar. Amazon, sayfa görüntülemelerinin ve müşteri yorumlarının BSR’yi etkilemediğini doğruladı — tamamen satış odaklıdır.
Bu veriye kim ihtiyaç duyar? FBA için ürün araştıran e-ticaret satıcıları, rekabet istihbaratı oluşturan satış ekipleri, fiyat trendlerini izleyen operasyon ekipleri ve kategori büyümesini takip eden pazar araştırmacıları. Benim deneyimime göre Amazon’da satan ya da Amazon’la rekabet eden herkes sonunda bu veriyi bir tabloya aktarmaya ihtiyaç duyuyor.
Amazon Best Sellers Verisini Python ile Neden Kazımalısınız?
Manuel ürün araştırması ciddi bir zaman kaybıdır. McKinsey çalışmasına göre çalışanlar haftada 9,3 saati sadece bilgi aramak ve toplamak için harcıyor. E-ticaret ekipleri için bu; Amazon sayfaları arasında tıklayıp ürün adlarını ve fiyatları kopyalamak, sonra bunları elektronik tabloya yapıştırmak demek — ve ertesi hafta aynı süreci baştan yaşamak.
Best Sellers verisini kazımayı değerli kılan kullanım senaryolarına hızlıca bakalım:
| Kullanım Senaryosu | Elde Ettiğiniz Veri | Kimler İçin Faydalı |
|---|---|---|
| FBA Ürün Araştırması | BSR ve yorum sayısına göre yüksek talep gören, düşük rekabetli ürünleri belirleme | Amazon satıcıları, dropshipper'lar |
| Rekabetçi Fiyatlandırma | Kategorinizdeki öne çıkan ürünlerde fiyat değişimlerini izleme | E-ticaret ekipleri, fiyat analistleri |
| Pazar Trendi Takibi | Yükselen kategorileri ve mevsimsel değişimleri fark etme | Ürün yöneticileri, pazar araştırmacıları |
| Lead Oluşturma | En çok satan markaların ve ürün serilerinin listelerini oluşturma | Satış ekipleri, B2B outreach ekipleri |
| Rakip Analizi | Ürünlerinizi kategori liderleriyle kıyaslama | Marka yöneticileri, strateji ekipleri |
Yatırım getirisi gerçek: Salesforce anketine göre 2.700 ticaret profesyonelinin bulunduğu çalışmada, AI araçları e-ticaret profesyonellerine haftada ortalama 6,4 saat kazandırıyor. Otomatik fiyat takibi kullanan satıcılar Buy Box’ı zamanın 67%’sinde ellerinde tutarken, manuel takip yapanlarda bu oran 42% — fiyat değişimlerine daha hızlı tepki vermenin getirdiği %37’lik satış artışı.
Python ile Amazon Best Sellers Kazımanın 4 Yolu: Hızlı Karşılaştırma
Adım adım anlatıma geçmeden önce, keşke testlere başlamadan elimde olsaydı dediğim yan yana karşılaştırmayı paylaşayım. Bu tablo, durumunuza uygun yöntemi seçmenize yardımcı olacak:
| Kriter | requests + BS4 | Selenium | Scraping API (ör. Scrape.do) | Thunderbit (Kodsuz) |
|---|---|---|---|---|
| Kurulum Zorluğu | Orta | Yüksek (driver, tarayıcı) | Düşük (API anahtarı) | Çok düşük (Chrome uzantısı) |
| Lazy Loading Desteği | Hayır | Evet (kaydırma simülasyonu) | Evet (render edilmiş HTML) | Evet (AI rendering’i yönetir) |
| Anti-Bot Dayanıklılığı | Düşük (IP ban riski) | Orta (tespit edilebilir) | Yüksek (dönen proxy’ler) | Yüksek (cloud + browser modları) |
| Bakım Yükü | Yüksek (selector’lar bozulur) | Yüksek (driver güncellemeleri + selector’lar) | Düşük | Çok düşük (AI düzen değişikliklerine uyum sağlar) |
| Maliyet | Ücretsiz | Ücretsiz | Ücretli (istek başına) | Ücretsiz katman + ücretli planlar |
| En Uygun Kullanım | Tek seferlik işler, öğrenme | JS ağırlıklı sayfalar, giriş gereken oturumlar | Ölçek / üretim ortamı | Teknik olmayan kullanıcılar, hızlı araştırma, düzenli takip |
Python scraping temellerini öğrenmek istiyorsanız 1. veya 2. yöntemle başlayın. Üretim ölçeğinde güvenilirlik gerekiyorsa 3. yöntemi seçin. Kod yazmadan tek tıkla sonuç almak istiyorsanız doğrudan 4. yönteme geçin.
Başlamadan Önce
- Zorluk: Başlangıç - Orta seviye (yönteme göre değişir)
- Gerekli Süre: Thunderbit için yaklaşık 15 dakika, Python yöntemleri için yaklaşık 45 dakika
- İhtiyacınız Olanlar: Python 3.8+ (Yöntem 1–3 için), Chrome tarayıcı, Thunderbit Chrome Extension (Yöntem 4 için) ve hedef Amazon Best Sellers kategori URL’si
Yöntem 1: requests + BeautifulSoup ile Amazon Best Sellers Kazıma
Bu, hafif ve başlangıç dostu bir yöntemdir — tarayıcı otomasyonu yok, sadece HTTP istekleri ve HTML ayrıştırma. Aynı zamanda Amazon’un scraping karşıtı savunmaları hakkında en çok şeyi bana öğreten yöntem de buydu.
1. Adım: Ortamı Kurun
Gerekli paketleri yükleyin:
pip install requests beautifulsoup4 pandas
Ardından import’ları hazırlayın:
import requests
from bs4 import BeautifulSoup
import pandas as pd
import random
import time
2. Adım: Gerçekçi Başlıklarla İstek Gönderin
Amazon, bot gibi görünen istekleri engeller. En temel savunma, gerçek bir tarayıcıyı taklit eden bir User-Agent başlığıdır. İşte güncel ve gerçekçi User-Agent dizilerinden oluşan bir havuz örneği (Geekflare kaynağından, Mart 2026):
USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 15.7; rv:149.0) Gecko/20100101 Firefox/149.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 15_7_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15",
]
headers = {"User-Agent": random.choice(USER_AGENTS)}
url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
response = requests.get(url, headers=headers)
print(response.status_code) # 200 olmalı
200 durum kodu görüyorsanız, giriş yapmışsınız demektir. 503 görürseniz ya da CAPTCHA sayfasına yönlendirilirseniz, Amazon isteğinizi işaretlemiş demektir.
3. Adım: BeautifulSoup ile Ürün Verisini Ayrıştırın
Amazon sayfa HTML’ini tarayıcınızın DevTools aracını kullanarak inceleyin (sağ tık → Inspect). Ürün kapsayıcıları gridItemRoot ID’sini kullanır. Bu kapsayıcıların içinde ürün adı, fiyat, puan ve URL bulunur.
soup = BeautifulSoup(response.text, "html.parser")
products = []
for item in soup.find_all("div", id="gridItemRoot"):
title_tag = item.find("div", class_="_cDEzb_p13n-sc-css-line-clamp-3_g3dy1")
price_tag = item.find("span", class_="_cDEzb_p13n-sc-price_3mJ9Z")
link_tag = item.find("a", class_="a-link-normal")
title = title_tag.get_text(strip=True) if title_tag else "N/A"
price = price_tag.get_text(strip=True) if price_tag else "N/A"
url = "https://www.amazon.com" + link_tag["href"] if link_tag else "N/A"
products.append({"Title": title, "Price": price, "URL": url})
Uyarı:
_cDEzb_önekli sınıf adları, Amazon’un düzenli olarak yeniden ürettiği CSS module hash’leridir.gridItemRootID’si vea-link-normalsınıfı daha stabildir, ancak scraper’ı çalıştırmadan önce selector’ları mutlaka DevTools ile doğrulayın.
4. Adım: CSV’ye Aktarın
df = pd.DataFrame(products)
df.to_csv("amazon_best_sellers.csv", index=False)
print(f"{len(products)} ürün kazındı")
Neler Beklemelisiniz — ve Neler Yanlış Gider
Testimde bu yöntem 50 yerine yaklaşık 30 ürün döndürdü. Bu kod hatası değil — Amazon’un lazy loading davranışı. İlk yüklemede yalnızca yaklaşık 30 ürün render edilir; geri kalanı kaydırdıktan sonra görünür ve requests bunu JavaScript çalıştırmadan yapamaz.
Diğer sınırlamalar:
- Proxy rotasyonu olmadan IP ban çok hızlı gelir (ben seri şekilde yaklaşık 15 istekten sonra bloklandım)
- CSS selector’lar Amazon sayfa düzenini değiştirdiğinde bozulur — ve bunu düzenli olarak yaparlar
- Yerleşik sayfalama desteği yoktur
Python scraping öğrenmek için bu yaklaşım harikadır. Üretimde ise kırılgandır.
Yöntem 2: Selenium ile Amazon Best Sellers Kazıma
Selenium, lazy loading sorununu gerçek bir tarayıcı çalıştırarak çözer — kurulum olarak daha ağırdır ama sayfa başına 50 ürünün tamamını yakalar.
1. Adım: Selenium’u Kurun
pip install selenium pandas
İyi haber: Selenium 4.6+ ile artık webdriver-manager kullanmanız gerekmiyor. Selenium Manager sürücü indirmelerini otomatik yönetir.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import pandas as pd
options = Options()
options.add_argument("--headless=new")
options.add_argument("--window-size=1920,1080")
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(options=options)
--headless=new bayrağı (Chrome 109+ ile geldi) headed Chrome ile aynı render hattını kullanır; bu da Amazon’un bunu tespit etmesini zorlaştırır.
2. Adım: Lazy Loading’i Aşağı Kaydırarak Aşın
Selenium’u kurulum zahmetine değdiren adım budur. Amazon Best Sellers başlangıçta yalnızca yaklaşık 30 ürün yükler — geri kalanlar kaydırınca gelir.
def scroll_page(driver, scrolls=5, delay=2):
for _ in range(scrolls):
driver.find_element(By.TAG_NAME, "body").send_keys(Keys.PAGE_DOWN)
time.sleep(delay)
driver.get("https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/")
time.sleep(3)
scroll_page(driver)
Kaydırmadan sonra tüm 50 ürün DOM’da render edilmiş olmalıdır. Ben 2 saniyelik gecikmeyle 5 kez Page Down yapmanın yeterli olduğunu gördüm, ancak bağlantı hızınıza göre ayarlamanız gerekebilir.
3. Adım: Ürün Verisini Çekin
items = driver.find_elements(By.ID, "gridItemRoot")
products = []
for item in items:
try:
title = item.find_element(By.CSS_SELECTOR, "div._cDEzb_p13n-sc-css-line-clamp-3_g3dy1").text
except:
title = "N/A"
try:
price = item.find_element(By.CSS_SELECTOR, "span._cDEzb_p13n-sc-price_3mJ9Z").text
except:
price = "N/A"
try:
url = item.find_element(By.CSS_SELECTOR, "a.a-link-normal").get_attribute("href")
except:
url = "N/A"
products.append({"Title": title, "Price": price, "URL": url})
Her çıkarma işlemini try/except içine almak önemlidir — bazı ürünler stokta olmayabilir ya da bazı alanlar eksik olabilir; tek bir hatalı öğenin tüm işlemi çökertmesini istemezsiniz.
4. Adım: Sayfalar Arasında Gezinmeyi Yönetin
Amazon, 100 Best Sellers ürününü farklı URL yapılarıyla iki sayfaya böler:
urls = [
"https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
"https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/ref=zg_bs_pg_2_electronics?_encoding=UTF8&pg=2"
]
all_products = []
for url in urls:
driver.get(url)
time.sleep(3)
scroll_page(driver)
# ... yukarıdaki gibi ürünleri çıkarın ...
all_products.extend(products)
driver.quit()
Neler Beklemelisiniz
Testimde Selenium, sayfa başına 50 ürünün tamamını yakaladı — requests + BS4’ye karşı net bir avantaj. Dezavantajı ise sayfa başına yaklaşık 45 saniye sürmesi (kaydırma gecikmeleri dahil) ve proxy rotasyonu olmadan çok fazla çalıştırıldığında yine işaretlenmem oldu. Anti-detection bayrakları olsa bile Selenium, Amazon’un bot tespiti tarafından yine de fark edilebilir — ciddi ölçekte ek önlemler gerekir (aşağıdaki Anti-Ban Playbook’a bakın).
Diğer sıkıntılar:
- WebDriver sürüm uyumsuzlukları hâlâ ara sıra yaşanabiliyor, ancak Selenium Manager bunu çok daha az yaygın hale getirdi
- Amazon DOM yapısını değiştirdiğinde CSS selector’ların güncellenmesi gerekiyor
- Bellek kullanımı yüksektir — her tarayıcı örneği 200–400MB RAM tüketir
Yöntem 3: Scraping API ile Amazon Best Sellers Kazıma
Scraping API’leri, "zor işleri başkası halletsin" yaklaşımıdır. Scrape.do, Oxylabs ve ScrapingBee gibi servisler proxy rotasyonu, JavaScript rendering ve anti-bot önlemlerini yönetir — size yalnızca URL gönderip HTML ya da JSON alırsınız.
Nasıl Çalışır?
Hedef URL’nizi API uç noktasına gönderirsiniz. API, kendi altyapısında gerçek bir tarayıcıyla sayfayı render eder, proxy’leri döndürür, CAPTCHA’ları yönetir ve temiz HTML’i geri verir. Siz de dönen HTML’i her zamanki gibi BeautifulSoup ile ayrıştırırsınız.
1. Adım: API Üzerinden İstek Gönderin
Scrape.do kullanan bir örnek aşağıdadır (fiyatlandırma, 150.000 kredi için ayda 29$’dan başlar; 1 kredi = render dahil fark etmeksizin 1 istek):
import requests
from bs4 import BeautifulSoup
api_token = "YOUR_API_TOKEN"
target_url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
api_url = f"https://api.scrape.do?token={api_token}&url={target_url}&render=true&geoCode=us"
response = requests.get(api_url)
soup = BeautifulSoup(response.text, "html.parser")
Buradan sonrası Yöntem 1 ile aynıdır — aynı selector’lar, aynı çıkarım mantığı.
Fiyatlandırma Gerçeği
Başlıca API’lerin, en iyi mevcut oranlarına göre 1.000 Amazon isteği başına maliyetleri şöyle:
| Sağlayıcı | 1.000 İstek Başına Maliyet | Notlar |
|---|---|---|
| Scrape.do | ~0,19$ | Sabit ücret, kredi çarpanı yok |
| Oxylabs | ~1,80$ | JS rendering için 5x çarpan |
| ScrapingBee | ~4,90$ | Premium özelliklerde 5–25x çarpan |
| Bright Data | 5,00$+ | En kapsamlı veri (ürün başına 686 alan) ama en yavaş (~66 sn/istek) |
Artılar ve Eksiler
Artılar: Yüksek güvenilirlik, üst seviye sağlayıcılarda Amazon için yaklaşık %99 başarı oranı, driver bakımı gerektirmez, anti-bot önlemlerini otomatik yönetir, iyi ölçeklenir.
Eksiler: İstek başına ücretlidir (ölçekte maliyet büyür), yine de ayrıştırma kodu yazmanız gerekir, CSS selector değişikliklerine karşı hâlâ hassastır. Ayda 100.000 sayfa için toplam maliyet karşılaştırması oldukça çarpıcıdır: kendi içinde geliştirme yaklaşık üç yıl içinde [$1,98M] iken bir API sağlayıcıyla $332K olur — bu da %71 tasarruf demek.
Başabaş noktası genellikle ayda 500K–1M istek civarındadır. Bunun altında API’nin sağladığı zaman kazancı maliyetin çok üzerindedir.
Yöntem 4: Thunderbit ile Amazon Best Sellers Kazıma (Python Gerekmez)
Tam açıklama: Thunderbit’te çalışıyorum, bu yüzden bu bölümü o bağlamla değerlendirin. Yine de dört yöntemi de art arda gerçekten test ettim ve veriye ulaşma süresindeki fark oldukça netti.
Thunderbit, Chrome uzantısı olarak çalışan bir AI web scraper’dır. Temel fikir şu: CSS selector yazmak ya da Python kodu oluşturmak yerine AI sayfayı okur ve hangi verinin çekileceğini kendi belirler. Amazon Best Sellers için Thunderbit, tek tıkla çalışan hazır şablonlara sahiptir.
1. Adım: Thunderbit Chrome Extension’ı Yükleyin
Chrome Web Store sayfasına gidin ve "Add to Chrome" butonuna tıklayın. Ücretsiz bir hesap oluşturun — ücretsiz katman, bunu test etmek için yeterli krediyi sağlar.
2. Adım: Amazon Best Sellers Sayfasına Gidin
Chrome’da herhangi bir Amazon Best Sellers kategori sayfasını açın. Örneğin:
https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/
3. Adım: "One Click Extract" Butonuna Tıklayın
Thunderbit yan panelini açın ve "One Click Extract"e tıklayın. AI, sayfa yapısını analiz eder ve sütunları belirler: Ürün Adı, Fiyat, Puan, Görsel URL’si, Satıcı, Ürün URL’si ve Sıra. Benim testimde, yaklaşık 3 saniye içinde ilgili tüm alanları doğru şekilde tespit etti.

Sütunları yeniden adlandırabilir, silebilir veya yenilerini ekleyebilirsiniz. Hatta alan bazında özel AI prompt’ları da ekleyebilirsiniz — örneğin, her ürüne kategori etiketi eklemek için "Electronics/Apparel/Home olarak sınıflandır" gibi.
4. Adım: "Scrape" Butonuna Tıklayın
"Scrape" butonuna basın. Thunderbit, sayfadaki tüm ürün verileriyle yapılandırılmış bir tablo oluşturur. Cloud modunda, aynı anda 50 sayfaya kadar paralel işlem yapabilir; lazy loading ve sayfalama otomatik olarak yönetilir.
5. Adım: Ücretsiz Dışa Aktarın
"Export"a tıklayın ve hedefinizi seçin: Excel, Google Sheets, Airtable veya Notion. Tüm planlarda dışa aktarma ücretsizdir — gizli ücret yoktur.

Sayfayı açmamdan eksiksiz bir tabloya ulaşmama kadar geçen süre yaklaşık 90 saniyeydi. Karşılaştırma için: Yöntem 1 yaklaşık 20 dakika sürdü (lazy loading sorununu ayıklamak dahil), Yöntem 2 yaklaşık 35 dakika sürdü (Selenium kurulumu dahil) ve Yöntem 3 yaklaşık 15 dakika sürdü (API hesabı kurulumunu dahil).
Thunderbit Amazon’da Neden İyi Çalışıyor?
AI sayfayı her seferinde yeniden okuduğu için düzen değişikliklerine otomatik uyum sağlar — bakım gerektiren CSS selector’lar yoktur. Bu, scraping forumlarındaki en yaygın şikayeti doğrudan çözer: "Basit bir web scraper yetmez, eleman değişiklikleri için o kadar çok ‘catch’ eklemeniz gerekir ki." Amazon DOM yapısını değiştirdiğinde (ki bunu düzenli olarak yapıyor), hiçbir şeyi güncellemeniz gerekmez.
Cloud scraping modu, proxy rotasyonu, rendering ve anti-bot önlemlerini şeffaf biçimde yönetir. "Çalışsın yeter" çözümü isteyen kullanıcılar için bu, anti-ban stresinin tamamını ortadan kaldırır.
Selector Bakımını Atlayın Amazon markup yapısını değiştirdiğinde BeautifulSoup selector’larınız bozulur. Thunderbit’in AI’sı her çalıştırmada sayfayı yeniden okur ve alanları tekrar belirler. Get Started Free
Anti-Ban Oyun Planı: Amazon Tarafından Engellenmemek İçin Ne Yapmalı?
Amazon’un bot tespiti oldukça agresiftir. Test sırasında IP adresim geçici olarak bloklandı ve forum kullanıcıları da benzer şeyler rapor ediyor: "her yerde hatalar, Amazon beni ana sayfaya yönlendirmeye bile başladı." Python yolunu seçiyorsanız (Yöntem 1–3), bu bölüm kritik.
İşte basitten ileri seviyeye katmanlı bir strateji:
1. User-Agent Dizilerini Döndürün
Aynı User-Agent’ı tekrar tekrar göndermek alarm zillerini çaldırır. Yöntem 1’deki kod örneğinde yer alan 5+ dizilik havuzu kullanın ve her istek için rastgele birini seçin:
headers = {"User-Agent": random.choice(USER_AGENTS)}
2. İstekler Arasına Rastgele Gecikmeler Ekleyin
Sabit gecikmeler fark edilebilir (örüntü oluşturur). Rastgele gecikmeler daha güvenlidir:
time.sleep(random.uniform(2, 5))
Ben, istekler arasında 2–5 saniyelik gecikmenin küçük partilerde (50 isteğin altında) fark edilmeden kalmamı sağladığını gördüm. Daha büyük işler için bunu 3–7 saniyeye çıkarın.
3. Proxy Rotasyonu Kullanın
Asıl önemli konu budur. Proxyway karşılaştırmaları, residential proxy’lerin Amazon’da ortalama yaklaşık %94 başarı sağladığını, datacenter proxy’lerde ise bunun yaklaşık %59 olduğunu gösteriyor — arada 35 puanlık fark var. Amazon’un tespit sistemi TLS fingerprinting, davranış analizi ve IP başına hız limiti içeriyor; bu yüzden standart datacenter IP’leri saniyeler içinde işaretleniyor.
Residential proxy’ler daha pahalıdır (sağlayıcıya göre GB başına 2–12$) ama çok daha güvenilirdir. Kod örneği:
proxies = {
"http": "http://user:pass@residential-proxy.example.com:8080",
"https": "http://user:pass@residential-proxy.example.com:8080"
}
response = requests.get(url, headers=headers, proxies=proxies)
4. Tarayıcı Parmak İzini Güçlendirin (Selenium)
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
# driver başlatıldıktan sonra navigator.webdriver bayrağını kaldırın
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
})
5. Oturumları ve Çerezleri Yönetin
Çerezleri istekler arasında korumak, scraper’ınızın gerçek bir kullanıcı oturumuna daha çok benzemesini sağlar:
session = requests.Session()
# Daha gerçekçi çerezler almak için önce ana sayfayı ziyaret edin
session.get("https://www.amazon.com", headers=headers)
time.sleep(2)
# Sonra hedef sayfayı kazıyın
response = session.get(target_url, headers=headers)
6. Sıkıntıyı Baştan Elemek Ne Zaman Daha Mantıklı?
Bunların hiçbirini yönetmek istemeyen kullanıcılar için Thunderbit’in cloud scraping özelliği proxy rotasyonu, rendering ve anti-bot önlemlerini şeffaf biçimde yönetir. Scraping API’leri de bu konuların çoğunu kutudan çıkar çıkmaz çözer. Benim deneyimime göre, anti-ban sorunlarını ayıklamaya harcanan zaman çoğu zaman asıl scraping kodunu yazma süresini aşıyor — bu yüzden "çalışsın yeter" yaklaşımının gerçek bir yatırım getirisi var.
Alt Sayfa Zenginleştirme: Daha Zengin Veri İçin Ürün Detay Sayfalarını Kazımak
Best Sellers listeleme sayfası yalnızca temel bilgileri gösterir — başlık, fiyat, puan, sıralama. Ancak FBA araştırmasında asıl değer tekil ürün detay sayfalarında bulunur. Sadece listeyi kazırsanız kaçırdıklarınız şunlardır:
| Alan | Listeleme Sayfası | Ürün Detay Sayfası |
|---|---|---|
| Ürün Adı | ✅ | ✅ |
| Fiyat | ✅ | ✅ |
| Puan | ✅ | ✅ |
| BSR Sıralaması | ✅ | ✅ (alt kategori sıralarıyla birlikte) |
| Marka | ❌ | ✅ |
| ASIN | ❌ | ✅ |
| İlk Kullanıma Sunulma Tarihi | ❌ | ✅ |
| Boyutlar/Ağırlık | ❌ | ✅ |
| Satıcı Sayısı | ❌ | ✅ |
| Madde İşaretli Özellikler | ❌ | ✅ |
| Buy Box Sahibi | ❌ | ✅ |
"İlk Kullanıma Sunulma Tarihi" alanı özellikle değerlidir — ürünün piyasada ne kadar süredir bulunduğunu gösterir ve bu da rekabet analizinde önemli bir sinyaldir. Ayrıca satıcı sayısını ve Buy Box sahibini bilmek, bir ürün nişine girmenin mantıklı olup olmadığını anlamanıza yardımcı olur (eğer Amazon’un kendisi Buy Box payının %30’undan fazlasını tutuyorsa, rekabet etmek son derece zordur).
Python Yaklaşımı: Ürün URL’leri Üzerinde Döngü Kurma
Listeleme sayfasından ürün URL’lerini topladıktan sonra, her biri üzerinde bir gecikme ile döngü kurun:
for product in products:
time.sleep(random.uniform(3, 6))
detail_response = session.get(product["URL"], headers={"User-Agent": random.choice(USER_AGENTS)})
detail_soup = BeautifulSoup(detail_response.text, "html.parser")
# Markayı çek
brand_tag = detail_soup.find("a", id="bylineInfo")
product["Brand"] = brand_tag.get_text(strip=True) if brand_tag else "N/A"
# ASIN'i sayfa kaynağından veya URL'den çek
# Ürün detayları tablosundan İlk Kullanıma Sunulma Tarihi'ni çek
# ... ek alanlar ...
Açık söyleyeyim: 100 ayrı ürün sayfasına gitmek ban riskinizi ciddi şekilde artırır. Proxy rotasyonu ve daha uzun gecikmeler için bütçe ayırın.
Thunderbit Yaklaşımı: Tek Tıkla Alt Sayfa Kazıma
Listeleme sayfasını bir tabloya kazıdıktan sonra Thunderbit’te "Scrape Subpages" seçeneğine tıklayın. AI, her ürün URL’sini ziyaret eder ve tabloyu marka, ASIN, teknik özellikler, özellikler gibi ek sütunlarla otomatik olarak zenginleştirir. Ek kod yok, selector yok, kurulum yok. Özellikle kaynak seçimi kararları için tam resme ihtiyaç duyan ama detay sayfası ayrıştırıcısı yazmak istemeyen e-ticaret ekipleri için tam yerinde bir çözüm.
Tekrarlayan Kazımaları Otomatikleştirme: Best Sellers’ı Zaman İçinde İzleyin
Tek seferlik bir kazıma yararlıdır, ama asıl rekabet avantajı sürekli izleme ile gelir. Hangi ürünlerin yükselip düştüğünü takip etmek, trendleri erken yakalamak ve haftalar ya da aylar boyunca fiyat değişimlerini izlemek — işte bunlar sıradan araştırmayı veri temelli karar vermeye dönüştürür.
Python Yaklaşımı: Cron ile Zamanlama
Linux/Mac’te Python betiğinizi cron ile zamanlayabilirsiniz. İşte her gün sabah 8’de çalışacak örnek crontab girdisi:
0 8 * * * /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1
Her pazartesi sabah 9’da çalışacak haftalık örnek:
0 9 * * 1 /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1
Windows’ta aynı işi yapmak için Task Scheduler kullanabilirsiniz. Laptop’u açık tutmadan sürekli çalışan bir zamanlama istiyorsanız bir VPS’e veya AWS Lambda’ya dağıtım yapabilirsiniz — ancak bu da altyapı karmaşıklığı ekler.
Başarısız çalışmaları yakalamak için loglama ve hata bildirimleri ekleyin. Scraper’ın iki hafta önce sessizce bozulduğunu sonradan fark etmekten daha kötü bir şey yok.
Thunderbit Yaklaşımı: Doğal Dille Scheduled Scraper
Thunderbit’in Scheduled Scraper özelliği, aralığı doğal dilde tanımlamanıza izin verir — "her pazartesi saat 9’da" veya "her gün saat 8’de" yazın, AI bunu program olarak yorumlasın. Kazımalar Thunderbit’in bulut sunucularında çalışır (tarayıcı ya da bilgisayarın açık kalması gerekmez) ve veri otomatik olarak Google Sheets veya Airtable’a aktarılır. Bu, DevOps yükü olmadan sürekli görünürlük isteyen operasyon ekipleri için ideal, sıfır sunucu yönetimli bir canlı izleme panosu oluşturur.
Amazon Kazırken Hukuki ve Etik Hususlar
Avukat değilim; bu hukuki tavsiye değildir. Ama bir scraping rehberinde yasal çerçeveyi görmezden gelmek sorumsuzluk olur — forum kullanıcıları da ToS endişelerini açıkça dile getiriyor ve haklılar.
Amazon’un robots.txt dosyası: 2026 itibarıyla Amazon’un robots.txt dosyasında 80’den fazla özel Disallow yolu var, ancak /gp/bestsellers/ standart user-agent’lar için açıkça engellenmiş değil. Bununla birlikte, 35’ten fazla AI odaklı user-agent’a (ClaudeBot, GPTBot, Scrapy vb.) toplu olarak Disallow: / uygulanıyor. Belirli bir engelin olmaması, Amazon’un scraping’i onayladığı anlamına gelmez.
Amazon’un Hizmet Şartları: Amazon’un Conditions of Use metni (Mayıs 2025’te güncellendi), yazılı izin olmadan "Amazon Websitesi’nin herhangi bir bölümüne erişmek, almak, kopyalamak veya izlemek için herhangi bir otomatik süreç ya da teknoloji kullanmayı" açıkça yasaklıyor. Bu teorik değil — Amazon, Kasım 2025’te izinsiz otomatik erişim nedeniyle Perplexity AI’ye dava açtı ve ön ihtiyati tedbir kararı kazandı.
hiQ v. LinkedIn emsali: hiQ Labs v. LinkedIn davasında (Dokuzuncu Daire, 2022), mahkeme kamuya açık verilerin kazınmasının Computer Fraud and Abuse Act’i muhtemelen ihlal etmediğine hükmetti. Ancak hiQ sonunda uzlaşmaya gitti ve scraping’i durdurmayı kabul etti — CFAA davasını kazanmak, sözleşme ihlali iddialarına karşı koruma sağlamaz.
Pratik kurallar:
- Yalnızca kamuya açık verileri kazıyın (fiyatlar, BSR, ürün başlıkları — PII değil)
- Hız limitlerine saygı gösterin ve sunucuları zorlamayın
- Veriyi meşru rekabet analizi için kullanın
- Ölçekli kazıma yapmadan önce kendi hukuki danışmanınıza danışın
- 20’den fazla ABD eyaletinin artık kapsamlı gizlilik yasalarına sahip olduğunu unutmayın
Thunderbit’in cloud scraping’i standart tarayıcı benzeri istek kalıpları kullanır, ancak uyumluluğu her zaman kendi hukuki danışmanınızla doğrulamalısınız.
Bunda Python Gerekmez Hedefiniz bir veri hattı değil de bir tabloysa, tek tıkla sonuca ulaşırsınız. Doğrudan Excel, Google Sheets, Airtable veya Notion’a aktarın. Get Started Free
Hangi Yöntemi Kullanmalısınız? Hızlı Karar Rehberi
Kısa versiyon:
- "Python öğreniyorum ve hafta sonu yapabileceğim bir proje istiyorum." → Yöntem 1 (requests + BeautifulSoup). HTTP istekleri, HTML ayrıştırma ve Amazon’un anti-bot savunmaları hakkında çok şey öğrenirsiniz.
- "JavaScript ağırlıklı sayfaları ya da giriş yapılmış oturumları kazımam gerekiyor." → Yöntem 2 (Selenium). Daha ağırdır ama dinamik içeriği işler.
- "Üretim ortamında, büyük ölçekte scraping yapıyorum." → Yöntem 3 (Scraping API). Proxy ve rendering işlerini başkasına bırakın. Toplam sahip olma maliyeti, ayda 500K istek altındaki senaryolarda API’leri avantajlı kılar.
- "Geliştirici değilim ve 2 dakikada veri istiyorum." → Yöntem 4 (Thunderbit). Kod yok, selector yok, bakım yok.
- "Sunucu yönetmeden sürekli izleme yapmam gerekiyor." → Thunderbit Scheduled Scraper. Kurun ve unutun.
Amazon Best Sellers İçin Thunderbit’i Deneyin Get Started Free
Sonuç ve Temel Çıkarımlar
Bir hafta sonu süren testlerden sonra geriye gerçekten şunlar kaldı:
requests + BeautifulSoup, öğrenmek için harika; ancak lazy loading sınırlaması (50 ürünün yalnızca yaklaşık 30’u) ve kırılgan CSS selector’lar nedeniyle üretimde kullanışlı değil.
Selenium, lazy loading sorununu çözüyor ve sayfa başına 50 ürünün tamamını yakalıyor; fakat yavaş, bellek tüketimi yüksek ve Amazon’un bot savunmaları tarafından yine de tespit edilebiliyor.
Scraping API’leri, üretim ölçeğinde scraping için en iyi güvenilirliği sunuyor — Amazon’da yaklaşık %99 başarı oranı — fakat maliyetler artıyor ve yine de ayrıştırma kodu yazmanız gerekiyor.
Thunderbit, veriye ulaşma süresinde açık ara en hızlı sonuç verdi. AI; düzen değişikliklerini, lazy loading’i, sayfalama yapısını ve anti-bot önlemlerini herhangi bir kurulum gerektirmeden yönetiyor. Teknik olmayan kullanıcılar ya da DevOps yükü olmadan düzenli veri isteyen ekipler için en pratik seçenek bu.
En büyük ders? Amazon’un anti-bot savunmaları ve sık düzen değişiklikleri, bakım gerektirmeyen çözümleri uzun vadede en çok zaman kazandıran seçenek hâline getiriyor. Kırılan selector’ları düzeltmeye ve proxy döndürmeye harcadığınız her saat, gerçek analize ayıramadığınız bir saattir.
Kodsuz yaklaşımı denemek ister misiniz? Thunderbit’in ücretsiz katmanı, birkaç Best Sellers kategorisini kazımak ve sonucu kendiniz görmek için yeterli kredi sağlar. Python yolunu tercih ediyorsanız, yukarıdaki kod örnekleri başlangıç için yeterli olacaktır. Her iki durumda da Amazon Best Seller verisini bir tarayıcı sekmesine bakmak yerine bir elektronik tabloda elde etmiş olacaksınız.
Web scraping yaklaşımları hakkında daha fazla bilgi için Amazon ürünlerini ve yorumlarını kazıma, web sitelerinden Excel’e veri çıkarma ve en iyi AI web scraper’lar rehberlerimize göz atın. Ayrıca Thunderbit YouTube kanalında adım adım anlatımları izleyebilirsiniz.
Daha Fazla Bilgi Edinin


