Akhir pekan lalu, saya menghabiskan satu teko penuh kopi untuk mencoba mengekstrak halaman Amazon Best Sellers dengan empat cara berbeda. Dua cara berjalan sangat baik, satu hampir membuat IP saya diblokir, dan satu lagi cukup dengan satu klik. Ini semua yang saya pelajari.
Amazon adalah pasar online raksasa — 600 juta listing produk, 310+ juta akun pelanggan aktif, dan sistem Best Sellers Rank (BSR) yang diperbarui setiap jam. Kalau Anda melakukan riset produk FBA, analisis harga kompetitor, atau sekadar ingin menangkap tren sebelum pesaing Anda, data Best Seller itu sangat berharga.
Tapi bagaimana cara mengambil data itu dari Amazon ke spreadsheet? Nah, di situlah bagian yang seru. Saya menguji requests + BeautifulSoup, Selenium, scraping API, dan Thunderbit (AI web scraper no-code buatan kami) untuk melihat pendekatan mana yang benar-benar efektif — dan mana yang hanya akan membuat Anda menatap halaman CAPTCHA.
Apa Itu Amazon Best Sellers (dan Kenapa Harus Peduli)?
Amazon Best Sellers Rank (BSR) adalah papan peringkat real-time milik Amazon yang mengurutkan produk berdasarkan volume penjualan di tiap kategori. Anggap saja ini seperti kontes popularitas yang diperbarui setiap jam, berdasarkan data penjualan terbaru dan historis. Amazon sendiri menjelaskannya seperti ini:
"The Amazon Best Sellers calculation is based on Amazon sales and is updated hourly to reflect recent and historical sales of every item sold on Amazon." — Amazon Seller Central
Halaman Best Sellers menampilkan 100 produk teratas per kategori, dibagi menjadi dua halaman yang masing-masing berisi 50 produk. Halaman 1 mencakup peringkat #1–50, halaman 2 mencakup #51–100. Amazon telah mengonfirmasi bahwa jumlah tayangan halaman dan ulasan pelanggan TIDAK memengaruhi BSR — murni berdasarkan penjualan.
Siapa yang butuh data ini? Penjual e-commerce yang mencari produk untuk FBA, tim sales yang menyusun intel kompetitor, tim operasional yang memantau tren harga, dan peneliti pasar yang melacak pertumbuhan kategori. Dari pengalaman saya, siapa pun yang menjual di Amazon atau bersaing dengan Amazon pada akhirnya pasti butuh data ini dalam bentuk spreadsheet.
Kenapa Scrape Amazon Best Sellers dengan Python?
Riset produk secara manual itu menyita waktu. Sebuah studi McKinsey menemukan bahwa karyawan menghabiskan 9,3 jam per minggu hanya untuk mencari dan mengumpulkan informasi. Bagi tim e-commerce, itu berarti berjam-jam klik sana-sini di halaman Amazon, menyalin nama produk dan harga, lalu menempelkannya ke spreadsheet — dan minggu depan mengulang proses yang sama lagi.
Berikut gambaran cepat use case yang membuat scraping Best Sellers layak dilakukan:
| Use Case | Apa yang Didapat | Siapa yang Diuntungkan |
|---|---|---|
| Riset Produk FBA | Mengidentifikasi produk dengan permintaan tinggi dan kompetisi rendah berdasarkan BSR dan jumlah ulasan | Penjual Amazon, dropshipper |
| Penetapan Harga Kompetitif | Melacak perubahan harga pada produk-produk teratas di kategori Anda | Tim e-commerce, analis harga |
| Pemantauan Tren Pasar | Menangkap kategori yang sedang naik daun dan perubahan musiman | Product manager, peneliti pasar |
| Lead Generation | Membuat daftar brand terlaris beserta lini produknya | Tim sales, outreach B2B |
| Analisis Kompetitor | Membandingkan produk Anda dengan pemimpin kategori | Brand manager, tim strategi |
ROI-nya nyata: sebuah survei Salesforce terhadap 2.700 profesional commerce menemukan bahwa alat AI menghemat rata-rata 6,4 jam per minggu bagi para profesional e-commerce. Dan penjual yang memakai pelacakan harga otomatis mempertahankan Buy Box 67% dari waktu dibanding 42% untuk pelacak manual — kenaikan penjualan 37% yang dipicu respons lebih cepat terhadap perubahan harga.
4 Cara Scrape Amazon Best Sellers dengan Python: Perbandingan Singkat
Sebelum masuk ke tutorial langkah demi langkah, berikut perbandingan berdampingan yang saya harap sudah saya punya sebelum mulai menguji. Tabel ini akan membantu Anda memilih metode yang paling cocok:
| Kriteria | requests + BS4 | Selenium | Scraping API (mis. Scrape.do) | Thunderbit (No-Code) |
|---|---|---|---|---|
| Tingkat Kesulitan Setup | Menengah | Tinggi (driver, browser) | Rendah (API key) | Sangat rendah (ekstensi Chrome) |
| Menangani Lazy Loading | Tidak | Ya (simulasi scroll) | Ya (HTML yang sudah dirender) | Ya (AI menangani rendering) |
| Ketahanan Anti-Bot | Rendah (IP bisa diblokir) | Menengah (bisa terdeteksi) | Tinggi (proxy berganti-ganti) | Tinggi (mode cloud + browser) |
| Beban Maintenance | Tinggi (selector mudah rusak) | Tinggi (update driver + selector) | Rendah | Sangat rendah (AI menyesuaikan perubahan layout) |
| Biaya | Gratis | Gratis | Berbayar (per request) | Paket gratis + paket berbayar |
| Paling Cocok Untuk | Scrape sekali jalan, belajar | Halaman berat JS, butuh login | Skala / produksi | Non-dev, riset cepat, pemantauan berulang |
Kalau Anda ingin belajar dasar-dasar scraping dengan Python, mulai dari Metode 1 atau 2. Kalau Anda butuh keandalan untuk skala produksi, pilih Metode 3. Kalau Anda ingin hasil dalam satu klik tanpa menulis kode, langsung ke Metode 4.
Sebelum Memulai
- Tingkat Kesulitan: Pemula hingga menengah (tergantung metode)
- Waktu yang Dibutuhkan: ~15 menit untuk Thunderbit, ~45 menit untuk metode Python
- Yang Anda Perlukan: Python 3.8+ (untuk Metode 1–3), browser Chrome, Thunderbit Chrome Extension (untuk Metode 4), dan URL kategori Amazon Best Sellers yang ditargetkan
Metode 1: Scrape Amazon Best Sellers dengan requests + BeautifulSoup
Ini pendekatan ringan yang ramah pemula — tanpa otomatisasi browser, hanya HTTP request dan parsing HTML. Metode ini juga mengajari saya paling banyak tentang pertahanan anti-scraping Amazon.
Langkah 1: Siapkan Environment
Instal paket yang dibutuhkan:
pip install requests beautifulsoup4 pandas
Lalu siapkan import-nya:
import requests
from bs4 import BeautifulSoup
import pandas as pd
import random
import time
Langkah 2: Kirim Request dengan Header yang Realistis
Amazon memblokir request yang terlihat seperti bot. Pertahanan paling dasar adalah header User-Agent yang meniru browser asli. Berikut contoh dengan kumpulan string User-Agent yang aktual dan realistis (bersumber dari Geekflare, Maret 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) # Should be 200
Kalau Anda melihat status code 200, berarti berhasil. Kalau muncul 503 atau dialihkan ke halaman CAPTCHA, Amazon sudah menandai request Anda.
Langkah 3: Parse Data Produk dengan BeautifulSoup
Periksa HTML halaman Amazon menggunakan DevTools di browser Anda (klik kanan → Inspect). Container produk menggunakan ID gridItemRoot. Di dalam tiap container, Anda akan menemukan nama produk, harga, rating, dan URL.
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})
Peringatan: Nama class yang diawali
_cDEzb_adalah hash CSS module yang digenerate ulang Amazon secara berkala. IDgridItemRootdan classa-link-normallebih stabil, tetapi tetap periksa selector dengan DevTools sebelum menjalankan scraper Anda.
Langkah 4: Ekspor ke CSV
df = pd.DataFrame(products)
df.to_csv("amazon_best_sellers.csv", index=False)
print(f"Scraped {len(products)} products")
Apa yang Akan Terjadi — dan Apa yang Sering Gagal
Dalam pengujian saya, metode ini hanya mengembalikan sekitar 30 produk, bukan 50. Itu bukan bug pada kode — itu akibat lazy loading Amazon. Hanya sekitar 30 produk yang dirender saat halaman pertama kali dimuat; sisanya muncul setelah scroll, yang memerlukan eksekusi JavaScript yang tidak bisa ditangani requests.
Keterbatasan lainnya:
- IP cepat diblokir tanpa rotasi proxy (saya kena blok setelah sekitar 15 request berturut-turut dengan cepat)
- CSS selector bisa rusak saat Amazon memperbarui layout halaman — dan ini terjadi cukup sering
- Tidak ada penanganan pagination bawaan
Untuk belajar scraping dengan Python, pendekatan ini bagus. Untuk penggunaan produksi, ini rapuh.
Metode 2: Scrape Amazon Best Sellers dengan Selenium
Selenium mengatasi masalah lazy loading dengan menjalankan browser sungguhan — setup-nya lebih berat, tapi bisa menangkap semua 50 produk per halaman.
Langkah 1: Instal Selenium
pip install selenium pandas
Kabar baiknya: mulai Selenium 4.6+, Anda tidak lagi perlu webdriver-manager. Selenium Manager menangani pengunduhan driver secara otomatis.
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)
Flag --headless=new (diperkenalkan di Chrome 109+) memakai pipeline rendering yang sama seperti Chrome biasa, sehingga lebih sulit dideteksi Amazon.
Langkah 2: Scroll untuk Melewati Lazy Loading
Inilah langkah yang membuat Selenium layak dipakai meski setup-nya lebih repot. Amazon Best Sellers hanya memuat sekitar 30 produk di awal — sisanya muncul setelah scroll.
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)
Setelah scroll, semua 50 produk seharusnya sudah dirender di DOM. Saya menemukan bahwa 5 kali scroll page-down dengan jeda 2 detik sudah cukup, tetapi Anda mungkin perlu menyesuaikannya tergantung kecepatan koneksi.
Langkah 3: Ekstrak Data Produk
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})
Membungkus tiap ekstraksi dengan try/except itu penting — beberapa produk mungkin stoknya habis atau ada field yang hilang, dan Anda tentu tidak ingin satu elemen bermasalah menghentikan seluruh proses scraping.
Langkah 4: Tangani Pagination
Amazon membagi 100 Best Sellers menjadi dua halaman dengan struktur URL yang berbeda:
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)
# ... extract products as above ...
all_products.extend(products)
driver.quit()
Apa yang Bisa Diharapkan
Dalam pengujian saya, Selenium berhasil menangkap semua 50 produk per halaman — jelas lebih baik daripada requests + BS4. Kekurangannya: prosesnya sekitar 45 detik per halaman (termasuk jeda scroll), dan saya tetap kena flag setelah menjalankannya terlalu sering tanpa rotasi proxy. Selenium juga masih bisa dideteksi oleh sistem anti-bot Amazon meskipun memakai flag anti-detection — untuk skala serius, Anda butuh langkah tambahan (lihat Anti-Ban Playbook di bawah).
Masalah lain yang sering muncul:
- Ketidakcocokan versi WebDriver masih kadang terjadi, meskipun Selenium Manager sudah sangat mengurangi kasus ini
- Selector CSS harus diperbarui setiap kali Amazon mengubah DOM
- Konsumsi memori tinggi — tiap instance browser menghabiskan 200–400MB RAM
Metode 3: Scrape Amazon Best Sellers dengan Scraping API
Scraping API adalah pendekatan "biarkan orang lain yang menangani bagian tersulit". Layanan seperti Scrape.do, Oxylabs, dan ScrapingBee mengelola rotasi proxy, rendering JavaScript, dan perlindungan anti-bot — Anda cukup mengirim URL lalu menerima HTML atau JSON.
Cara Kerjanya
Anda mengirim URL target ke endpoint API. API merender halaman menggunakan browser sungguhan di infrastruktur mereka, mengganti proxy secara otomatis, menangani CAPTCHA, dan mengembalikan HTML bersih. Setelah itu Anda mem-parse HTML tersebut dengan BeautifulSoup seperti biasa.
Langkah 1: Kirim Request Melalui API
Berikut contoh menggunakan Scrape.do (harga mulai $29/bulan untuk 150.000 kredit, 1 kredit = 1 request apa pun rendering-nya):
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")
Dari sini, parsing-nya sama seperti Metode 1 — selector-nya sama, logika ekstraksinya sama.
Cek Realita Harga
Berikut biaya yang dikenakan beberapa API utama per 1.000 request Amazon pada tarif terbaik yang tersedia:
| Provider | Biaya per 1.000 Request | Catatan |
|---|---|---|
| Scrape.do | ~$0.19 | Tarif tetap, tanpa pengali kredit |
| Oxylabs | ~$1.80 | Pengali 5x untuk rendering JS |
| ScrapingBee | ~$4.90 | Pengali 5–25x untuk fitur premium |
| Bright Data | ~$5.00+ | Data paling lengkap (686 field/produk) tetapi paling lambat (~66 detik/request) |
Kelebihan dan Kekurangan
Kelebihan: Sangat andal (~99% tingkat keberhasilan di Amazon untuk provider teratas), tidak perlu maintenance driver, anti-bot ditangani otomatis, dan skalanya bagus.
Kekurangan: Bayar per request (biaya bisa membengkak pada skala besar), tetap perlu menulis kode parsing, dan masih rentan terhadap perubahan selector CSS. Untuk 100.000 halaman/bulan, perbandingan total biayanya sangat drastis: membangun sendiri biayanya sekitar $1,98 juta selama tiga tahun versus $332 ribu dengan provider API — hemat 71%.
Titik impas biasanya di 500 ribu–1 juta request/bulan. Di bawah itu, penghematan waktu dari API jauh lebih besar daripada biayanya.
Metode 4: Scrape Amazon Best Sellers dengan Thunderbit (Tanpa Python)
Saya perlu jujur: saya bekerja di Thunderbit, jadi anggap bagian ini dengan konteks itu. Meski begitu, saya benar-benar menguji keempat metode ini berurutan, dan perbedaan kecepatan menuju data sangat terasa.
Thunderbit adalah AI web scraper yang berjalan sebagai ekstensi Chrome. Gagasan utamanya: alih-alih menulis selector CSS atau kode Python, AI membaca halaman dan menentukan data apa yang harus diambil. Untuk Amazon Best Sellers secara khusus, Thunderbit punya template bawaan yang bekerja dalam satu klik.
Langkah 1: Instal Thunderbit Chrome Extension
Buka Chrome Web Store lalu klik "Add to Chrome." Daftar akun gratis — paket gratis memberi Anda kredit yang cukup untuk mencoba ini.
Langkah 2: Buka Halaman Amazon Best Sellers
Buka halaman kategori Amazon Best Sellers apa pun di Chrome. Contohnya:
https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/
Langkah 3: Klik "One Click Extract"
Buka sidebar Thunderbit dan klik "One Click Extract." AI akan menganalisis struktur halaman dan menentukan kolom-kolomnya: Product Name, Price, Rating, Image URL, Vendor, Product URL, dan Rank. Dalam pengujian saya, AI berhasil mengidentifikasi semua field relevan hanya dalam sekitar 3 detik.

Anda bisa mengganti nama kolom, menghapus kolom, atau menambahkan kolom baru. Anda bahkan bisa menambahkan prompt AI kustom per field — misalnya, "categorize as Electronics/Apparel/Home" untuk menambahkan tag kategori pada tiap produk.
Langkah 4: Klik "Scrape"
Tekan tombol "Scrape." Thunderbit akan mengisi tabel terstruktur dengan semua data produk dari halaman tersebut. Dalam mode cloud, ia dapat memproses hingga 50 halaman sekaligus secara paralel, sambil menangani lazy loading dan pagination secara otomatis.
Langkah 5: Ekspor Gratis
Klik "Export" dan pilih tujuan Anda: Excel, Google Sheets, Airtable, atau Notion. Semua ekspor gratis di semua paket — tanpa biaya tersembunyi.

Seluruh proses ini memakan waktu sekitar 90 detik, dari membuka halaman hingga mendapatkan spreadsheet lengkap. Sebagai perbandingan, Metode 1 butuh sekitar 20 menit (termasuk debugging masalah lazy loading), Metode 2 sekitar 35 menit (termasuk setup Selenium), dan Metode 3 sekitar 15 menit (termasuk setup akun API).
Kenapa Thunderbit Tangguh untuk Amazon
Karena AI membaca halaman dari awal setiap kali, ia otomatis menyesuaikan diri dengan perubahan layout — tidak ada selector CSS yang perlu dirawat. Ini langsung menjawab keluhan paling umum di forum scraping: "Basic web scraper tidak cukup, Anda perlu menambahkan begitu banyak 'catch' untuk perubahan elemen." Saat Amazon mengubah DOM-nya (yang terjadi cukup sering), Anda tidak perlu memperbarui apa pun.
Mode cloud scraping menangani rotasi proxy, rendering, dan langkah anti-bot secara transparan. Bagi pengguna yang menginginkan solusi "langsung jalan", ini menghilangkan seluruh drama anti-ban.
Lewati Maintenance Selector Saat Amazon mengubah markup-nya, selector BeautifulSoup Anda bisa rusak. AI Thunderbit membaca ulang halaman setiap kali dijalankan dan menentukan field-nya lagi. Get Started Free
Anti-Ban Playbook: Cara Menghindari Diblokir Amazon
Deteksi bot Amazon sangat agresif. IP saya sempat diblokir sementara saat pengujian, dan pengguna forum melaporkan hal serupa: "error di mana-mana, Amazon bahkan mulai mengarahkan saya ke homepage." Kalau Anda memilih jalur Python (Metode 1–3), bagian ini sangat penting.
Berikut strategi berlapis, dari yang paling dasar sampai lebih advanced:
1. Rotasi String User-Agent
Mengirim User-Agent yang sama berulang kali adalah tanda bahaya. Gunakan kumpulan 5+ string dari contoh kode di Metode 1, lalu pilih secara acak setiap request:
headers = {"User-Agent": random.choice(USER_AGENTS)}
2. Tambahkan Jeda Acak Antar Request
Jeda yang tetap mudah dikenali (pola). Jeda acak lebih aman:
time.sleep(random.uniform(2, 5))
Saya menemukan bahwa jeda 2–5 detik antar request cukup aman untuk batch kecil (di bawah 50 request). Untuk run yang lebih besar, naikkan ke 3–7 detik.
3. Gunakan Rotasi Proxy
Ini yang paling penting. Benchmark Proxyway menunjukkan proxy residential rata-rata punya tingkat keberhasilan ~94% di Amazon dibanding ~59% untuk proxy datacenter — selisih 35 poin persentase. Stack deteksi Amazon mencakup TLS fingerprinting, analisis perilaku, dan rate limiting per IP, jadi IP datacenter standar bisa cepat ditandai dalam hitungan detik.
Proxy residential memang lebih mahal ($2–$12 per GB tergantung provider), tetapi jauh lebih andal. Contoh kodenya:
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. Perkuat Browser Fingerprint Anda (Selenium)
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
# Setelah driver diinisialisasi, hapus flag navigator.webdriver
driver.execute_cdp_command('Page.addScriptToEvaluateOnNewDocument', {
'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
})
5. Kelola Session dan Cookie
Menyimpan cookie lintas request membuat scraper Anda terlihat lebih seperti sesi pengguna sungguhan:
session = requests.Session()
# Kunjungi homepage dulu agar mendapat cookie yang realistis
session.get("https://www.amazon.com", headers=headers)
time.sleep(2)
# Lalu scrape halaman target Anda
response = session.get(target_url, headers=headers)
6. Kapan Sebaiknya Lewati Semua Ribet Ini
Bagi pengguna yang tidak ingin mengelola semua ini, cloud scraping Thunderbit menangani rotasi proxy, rendering, dan anti-bot secara transparan. Scraping API juga menangani sebagian besar hal ini secara bawaan. Dari pengalaman saya, waktu yang habis untuk debugging masalah anti-ban sering kali lebih besar daripada waktu untuk menulis kode scraping-nya sendiri — jadi pendekatan "langsung jalan" memang punya ROI nyata.
Enrichment Subpage: Scraping Halaman Detail Produk untuk Data yang Lebih Kaya
Halaman listing Best Sellers hanya menampilkan info dasar — judul, harga, rating, rank. Tapi nilai sebenarnya untuk riset FBA ada di halaman detail produk individual. Berikut apa yang Anda lewatkan kalau hanya mengambil data listing:
| Field | Halaman Listing | Halaman Detail Produk |
|---|---|---|
| Nama Produk | âś… | âś… |
| Harga | âś… | âś… |
| Rating | âś… | âś… |
| BSR Rank | âś… | âś… (dengan sub-kategori rank) |
| Brand | ❌ | ✅ |
| ASIN | ❌ | ✅ |
| Tanggal Pertama Kali Tersedia | ❌ | ✅ |
| Dimensi/Berat | ❌ | ✅ |
| Jumlah Penjual | ❌ | ✅ |
| Fitur Bullet Point | ❌ | ✅ |
| Pemilik Buy Box | ❌ | ✅ |
Field "Tanggal Pertama Kali Tersedia" sangat berguna — ini menunjukkan sudah berapa lama produk ada di pasar, yang merupakan sinyal penting untuk analisis kompetisi. Dan mengetahui jumlah penjual serta pemilik Buy Box membantu Anda menilai apakah sebuah niche produk layak dimasuki (kalau Amazon sendiri menguasai >30% share Buy Box, persaingannya sangat sulit).
Pendekatan Python: Loop ke URL Produk
Setelah mengumpulkan URL produk dari halaman listing, loop ke tiap URL dengan jeda:
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")
# Ekstrak brand
brand_tag = detail_soup.find("a", id="bylineInfo")
product["Brand"] = brand_tag.get_text(strip=True) if brand_tag else "N/A"
# Ekstrak ASIN dari source halaman atau URL
# Ekstrak Date First Available dari tabel detail produk
# ... field tambahan ...
Peringatan penting: mengunjungi 100 halaman produk individual secara signifikan meningkatkan risiko diblokir. Siapkan rotasi proxy dan jeda yang lebih panjang.
Pendekatan Thunderbit: Scrape Subpage dengan Satu Klik
Setelah halaman listing masuk ke tabel, klik "Scrape Subpages" di Thunderbit. AI akan mengunjungi setiap URL produk dan memperkaya tabel dengan kolom tambahan — brand, ASIN, spesifikasi, fitur — secara otomatis. Tanpa kode tambahan, tanpa selector, tanpa setup ekstra. Ini sangat berguna bagi tim e-commerce yang membutuhkan gambaran lengkap untuk keputusan sourcing tetapi tidak ingin menulis dan memelihara parser halaman detail.
Mengotomatiskan Scrape Berulang: Memantau Best Sellers dari Waktu ke Waktu
Scrape sekali jalan memang berguna, tetapi pemantauan berkelanjutan adalah tempat keunggulan kompetitif yang sesungguhnya berada. Melacak produk mana yang naik dan turun, melihat tren lebih awal, dan memantau pergeseran harga selama berminggu-minggu atau berbulan-bulan — itulah yang membedakan riset biasa dari pengambilan keputusan berbasis data.
Pendekatan Python: Penjadwalan dengan Cron
Di Linux/Mac, Anda bisa menjadwalkan script Python dengan cron. Berikut entri crontab untuk scrape harian pukul 8 pagi:
0 8 * * * /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1
Untuk scrape mingguan setiap Senin pukul 9 pagi:
0 9 * * 1 /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1
Di Windows, gunakan Task Scheduler untuk melakukan hal yang sama. Untuk penjadwalan yang selalu aktif tanpa harus menyalakan laptop terus-menerus, deploy ke VPS atau AWS Lambda — meski itu menambah kompleksitas infrastruktur.
Tambahkan logging dan notifikasi error agar Anda tahu kalau ada run yang gagal. Tidak ada yang lebih buruk daripada baru sadar scraper Anda rusak diam-diam dua minggu lalu.
Pendekatan Thunderbit: Scheduled Scraper dalam Bahasa Sederhana
Scheduled Scraper milik Thunderbit memungkinkan Anda menjelaskan interval dengan bahasa natural — ketik "setiap Senin pukul 9 pagi" atau "setiap hari pukul 8 pagi" dan AI akan menafsirkan jadwalnya. Scrape berjalan di server cloud Thunderbit (tidak perlu browser atau komputer menyala), dan data otomatis diekspor ke Google Sheets atau Airtable. Ini menciptakan dashboard monitoring langsung tanpa urusan server — ideal untuk tim operasional yang ingin visibilitas berkelanjutan tanpa beban DevOps.
Pertimbangan Hukum dan Etika Saat Scraping Amazon
Saya bukan pengacara, dan ini bukan nasihat hukum. Tapi mengabaikan aspek legal dalam tutorial scraping akan tidak bertanggung jawab — pengguna forum secara eksplisit menanyakan soal ToS, dan itu memang ada alasannya.
robots.txt Amazon: Per 2026, robots.txt Amazon memuat 80+ path Disallow spesifik, tetapi /gp/bestsellers/ TIDAK secara eksplisit diblokir untuk user agent standar. Namun, 35+ user agent khusus AI (ClaudeBot, GPTBot, Scrapy, dll.) mendapat larangan umum Disallow: /. Tidak adanya disallow spesifik bukan berarti Amazon menyetujui scraping.
Syarat dan Ketentuan Amazon: Conditions of Use Amazon (diperbarui Mei 2025) secara eksplisit melarang "menggunakan proses atau teknologi otomatis apa pun untuk mengakses, memperoleh, menyalin, atau memantau bagian mana pun dari Amazon Website" tanpa izin tertulis. Ini bukan teori — Amazon menggugat Perplexity AI pada November 2025 atas akses otomatis tanpa izin dan memenangkan preliminary injunction.
Preseden hiQ v. LinkedIn: Dalam hiQ Labs v. LinkedIn (Ninth Circuit, 2022), pengadilan memutuskan bahwa scraping data publik kemungkinan tidak melanggar Computer Fraud and Abuse Act. Namun hiQ pada akhirnya berdamai dan setuju berhenti scraping — menang di CFAA tidak melindungi dari klaim pelanggaran kontrak.
Panduan praktis:
- Scrape hanya data yang tersedia untuk publik (harga, BSR, judul produk — bukan PII)
- Hormati rate limit dan jangan membebani server
- Gunakan data untuk intel kompetitif yang sah
- Konsultasikan dengan penasihat hukum Anda sebelum melakukan scraping dalam skala besar
- Sadar bahwa 20+ negara bagian AS kini memiliki regulasi privasi komprehensif
Cloud scraping Thunderbit menggunakan pola request standar seperti browser, tetapi Anda tetap harus memastikan kepatuhan dengan penasihat hukum Anda sendiri.
Tidak Perlu Python untuk Yang Ini Kalau tujuannya spreadsheet, bukan pipeline, cukup satu klik untuk sampai. Ekspor langsung ke Excel, Google Sheets, Airtable, atau Notion. Get Started Free
Metode Mana yang Sebaiknya Anda Pakai? Panduan Keputusan Singkat
Versi singkatnya:
- "Saya sedang belajar Python dan ingin proyek akhir pekan." → Metode 1 (requests + BeautifulSoup). Anda akan belajar banyak tentang HTTP request, parsing HTML, dan pertahanan anti-bot Amazon.
- "Saya perlu scrape halaman berat JavaScript atau sesi login." → Metode 2 (Selenium). Lebih berat, tetapi menangani konten dinamis.
- "Saya menjalankan scrape produksi dalam skala besar." → Metode 3 (Scraping API). Biarkan pihak lain mengelola proxy dan rendering. Total cost of ownership lebih menguntungkan API di bawah 500K request/bulan.
- "Saya bukan developer dan ingin data dalam 2 menit." → Metode 4 (Thunderbit). Tanpa kode, tanpa selector, tanpa maintenance.
- "Saya butuh pemantauan berkelanjutan tanpa urus server." → Thunderbit Scheduled Scraper. Setel sekali, lalu biarkan jalan.
Coba Thunderbit untuk Amazon Best Sellers Get Started Free
Kesimpulan dan Poin Penting
Setelah menguji selama satu akhir pekan, berikut yang benar-benar saya dapatkan:
requests + BeautifulSoup bagus untuk belajar, tetapi keterbatasan lazy loading (hanya sekitar 30 dari 50 produk) dan selector CSS yang rapuh membuatnya kurang praktis untuk produksi.
Selenium mengatasi masalah lazy loading dan menangkap semua 50 produk per halaman, tetapi lambat, boros memori, dan masih bisa dideteksi oleh pertahanan bot Amazon.
Scraping API menawarkan reliabilitas terbaik untuk scraping skala produksi — ~99% tingkat keberhasilan di Amazon — tetapi biayanya bisa membengkak dan Anda tetap perlu menulis kode parsing.
Thunderbit memberikan waktu tercepat menuju data dengan selisih yang sangat besar. AI menangani perubahan layout, lazy loading, pagination, dan anti-bot tanpa konfigurasi apa pun. Bagi pengguna non-teknis atau tim yang butuh data berulang tanpa beban DevOps, ini adalah opsi paling praktis.
Pelajaran terbesarnya? Pertahanan anti-bot Amazon dan perubahan layout yang sering berarti solusi tanpa maintenance menghemat waktu paling banyak dalam jangka panjang. Setiap jam yang Anda habiskan untuk memperbaiki selector yang rusak dan memutar proxy adalah jam yang tidak Anda pakai untuk analisis nyata.
Ingin mencoba pendekatan no-code? Paket gratis Thunderbit memberi Anda cukup kredit untuk meng-scrape beberapa kategori Best Sellers dan melihat hasilnya sendiri. Lebih suka jalur Python? Contoh kode di atas sudah cukup untuk memulai. Dengan cara apa pun, Anda akan punya data Amazon Best Seller dalam spreadsheet alih-alih terus menatap tab browser.
Untuk pembahasan lebih lanjut tentang pendekatan web scraping, cek panduan kami tentang scraping produk dan ulasan Amazon, ekstrak data dari website ke Excel, dan AI web scraper terbaik. Anda juga bisa menonton panduan langkah demi langkah di channel YouTube Thunderbit.
Pelajari Lebih Lanjut


