W zeszły weekend wypiłem cały dzbanek kawy, próbując na cztery różne sposoby zeskrobać stronę Best Sellers Amazona. Dwie metody działały naprawdę dobrze, jedna omal nie skończyła się zablokowaniem mojego IP, a jedna zajęła dosłownie jedno kliknięcie. Poniżej zebrałem wszystko, czego się przy tym nauczyłem.
Amazon to prawdziwy gigant w świecie marketplace’ów — 600 milionów ofert produktowych, ponad 310 milionów aktywnych kont klientów i system Best Sellers Rank (BSR), który odświeża się co godzinę. Jeśli robisz research produktów pod FBA, analizujesz ceny konkurencji albo po prostu chcesz wyłapywać trendy, zanim zrobią to inni, dane z Best Sellers są po prostu bezcenne.
Ale wyciągnięcie tych danych z Amazona do arkusza kalkulacyjnego? Tu zaczyna się ciekawa część. Przetestowałem requests + BeautifulSoup, Selenium, scraping API oraz Thunderbit (nasz własny no-code AI web scraper), żeby sprawdzić, które podejście naprawdę dowozi — a które zostawi Cię z ekranem CAPTCHA.
Czym są Amazon Best Sellers i dlaczego warto się nimi interesować?
Amazon Best Sellers Rank (BSR) to aktualizowana na bieżąco tabela wyników Amazona, która klasyfikuje produkty według sprzedaży w obrębie danej kategorii. Można to traktować jak ranking popularności odświeżany co godzinę, oparty zarówno na ostatnich, jak i historycznych danych sprzedażowych. Sam Amazon opisuje to tak:
„Obliczanie Amazon Best Sellers opiera się na sprzedaży w Amazon i jest aktualizowane co godzinę, aby odzwierciedlić najnowszą i historyczną sprzedaż każdego produktu sprzedawanego w Amazon.” — Amazon Seller Central
Strona Best Sellers pokazuje 100 najlepszych produktów w danej kategorii, podzielonych na dwie strony po 50 pozycji. Strona 1 obejmuje miejsca #1–50, a strona 2 #51–100. Amazon potwierdził, że wyświetlenia strony i opinie klientów NIE wpływają na BSR — liczy się wyłącznie sprzedaż.
Kto korzysta z tych danych? Sprzedawcy e-commerce szukający produktów do FBA, zespoły sprzedaży budujące przewagę konkurencyjną, działy operacyjne monitorujące trendy cenowe oraz analitycy rynku śledzący wzrost kategorii. Z mojego doświadczenia wynika, że każdy, kto sprzedaje na Amazonie albo konkuruje z Amazonem, prędzej czy później potrzebuje tych danych w arkuszu.
Dlaczego warto zeskrobać Amazon Best Sellers w Pythonie?
Ręczne badanie produktów to pożeracz czasu. W badaniu McKinsey wykazano, że pracownicy spędzają 9,3 godziny tygodniowo tylko na wyszukiwaniu i zbieraniu informacji. W zespołach e-commerce oznacza to godziny spędzone na klikaniu po stronach Amazona, kopiowaniu nazw produktów i cen oraz wklejaniu ich do arkuszy — tylko po to, by powtórzyć cały proces w kolejnym tygodniu.
Oto szybki przegląd zastosowań, dla których warto zeskrobywać Best Sellers:
| Zastosowanie | Co otrzymujesz | Kto na tym zyskuje |
|---|---|---|
| Research produktów do FBA | Identyfikacja produktów o wysokim popycie i niskiej konkurencji na podstawie BSR i liczby opinii | Sprzedawcy Amazon, dropshipperzy |
| Analiza cen konkurencji | Śledzenie zmian cen w czołowych produktach danej kategorii | Zespoły e-commerce, analitycy cenowi |
| Monitorowanie trendów rynkowych | Wykrywanie rosnących kategorii i sezonowych zmian | Product managerowie, analitycy rynku |
| Generowanie leadów | Tworzenie list najlepiej sprzedających się marek i ich linii produktowych | Zespoły sprzedaży, outreach B2B |
| Analiza konkurencji | Porównanie własnych produktów z liderami kategorii | Brand managerowie, zespoły strategii |
Zwrot z inwestycji jest realny: w badaniu Salesforce obejmującym 2700 specjalistów z branży commerce wykazano, że narzędzia AI oszczędzają średnio 6,4 godziny tygodniowo. A sprzedawcy korzystający z automatycznego monitorowania cen utrzymują Buy Box przez 67% czasu, w porównaniu do 42% przy ręcznym śledzeniu — to 37% wzrost sprzedaży wynikający z szybszej reakcji na zmiany cen.
4 sposoby na zeskrobanie Amazon Best Sellers w Pythonie: szybkie porównanie
Zanim przejdziemy do instrukcji krok po kroku, poniżej porównanie, które sam chciałbym mieć na starcie testów. Ta tabela pomoże Ci dobrać metodę do sytuacji:
| Kryterium | requests + BS4 | Selenium | Scraping API (np. Scrape.do) | Thunderbit (no-code) |
|---|---|---|---|---|
| Trudność konfiguracji | Średnia | Wysoka (driver, przeglądarka) | Niska (klucz API) | Bardzo niska (rozszerzenie Chrome) |
| Obsługa lazy loading | Nie | Tak (symulacja przewijania) | Tak (wyrenderowany HTML) | Tak (AI obsługuje renderowanie) |
| Odporność na boty | Niska (blokady IP) | Średnia (wykrywalne) | Wysoka (rotacja proxy) | Wysoka (tryb chmurowy + przeglądarka) |
| Nakład na utrzymanie | Wysoki (psujące się selektory) | Wysoki (aktualizacje drivera + selektory) | Niski | Bardzo niski (AI dostosowuje się do zmian układu) |
| Koszt | Darmowe | Darmowe | Płatne (za żądanie) | Darmowy plan + płatne plany |
| Najlepsze dla | Jednorazowe zrzuty, nauka | Strony z dużą ilością JS, logowanie | Skala / produkcja | Osoby bez kodu, szybki research, cykliczny monitoring |
Jeśli chcesz nauczyć się podstaw scrapingu w Pythonie, zacznij od metody 1 lub 2. Jeśli potrzebujesz niezawodności na poziomie produkcyjnym, wybierz metodę 3. Jeśli chcesz dostać wynik jednym kliknięciem, bez pisania kodu, przejdź od razu do metody 4.
Zanim zaczniesz
- Poziom trudności: początkujący do średnio zaawansowanego (zależnie od metody)
- Szacowany czas: ok. 15 minut dla Thunderbit, ok. 45 minut dla metod Pythonowych
- Czego potrzebujesz: Python 3.8+ (dla metod 1–3), przeglądarka Chrome, Thunderbit Chrome Extension (dla metody 4) oraz URL kategorii Amazon Best Sellers
Metoda 1: Scrape Amazon Best Sellers za pomocą requests + BeautifulSoup
To lekka, przyjazna dla początkujących metoda — bez automatyzacji przeglądarki, tylko żądania HTTP i parsowanie HTML. Nauczyła mnie też najwięcej o zabezpieczeniach Amazona przeciw scrapowaniu.
Krok 1: Przygotuj środowisko
Zainstaluj wymagane pakiety:
pip install requests beautifulsoup4 pandas
Następnie przygotuj importy:
import requests
from bs4 import BeautifulSoup
import pandas as pd
import random
import time
Krok 2: Wyślij żądanie z realistycznymi nagłówkami
Amazon blokuje żądania, które wyglądają jak ruch bota. Najprostsza obrona to nagłówek User-Agent udający prawdziwą przeglądarkę. Oto przykład z pulą aktualnych, realistycznych ciągów User-Agent (na podstawie Geekflare, marzec 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) # Powinno być 200
Jeśli widzisz status 200, wszystko gra. Jeśli pojawia się 503 albo zostajesz przekierowany na stronę CAPTCHA, Amazon oznaczył Twoje żądanie jako podejrzane.
Krok 3: Sparsuj dane produktów za pomocą BeautifulSoup
Sprawdź HTML strony Amazon w narzędziach deweloperskich przeglądarki (klik prawym → Inspect). Kontenery produktów używają ID gridItemRoot. Wewnątrz każdego kontenera znajdziesz nazwę produktu, cenę, ocenę i adres 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})
Uwaga: Klasy zaczynające się od
_cDEzb_to hashe z CSS modules, które Amazon okresowo regeneruje. IDgridItemRooti klasaa-link-normalsą stabilniejsze, ale i tak zawsze warto sprawdzić selektory w DevTools przed uruchomieniem scrapera.
Krok 4: Eksport do CSV
df = pd.DataFrame(products)
df.to_csv("amazon_best_sellers.csv", index=False)
print(f"Zeskrobano {len(products)} produktów")
Czego się spodziewać — i co może pójść nie tak
W moim teście ta metoda zwróciła około 30 produktów zamiast 50. To nie błąd w kodzie — to lazy loading Amazona. Tylko około 30 produktów renderuje się przy pierwszym załadowaniu strony; reszta pojawia się po przewinięciu, co wymaga wykonania JavaScriptu, z czym requests sobie nie radzi.
Inne ograniczenia:
- Blokady IP pojawiają się szybko bez rotacji proxy (zostałem zablokowany po około 15 żądaniach wysłanych jedno po drugim)
- Selektory CSS psują się, gdy Amazon zmienia układ strony — a robi to regularnie
- Brak obsługi paginacji „z pudełka”
Do nauki scrapingu w Pythonie to świetna metoda. Do produkcji jest jednak zbyt krucha.
Metoda 2: Scrape Amazon Best Sellers z Selenium
Selenium rozwiązuje problem lazy loadingu, bo uruchamia prawdziwą przeglądarkę — konfiguracja jest cięższa, ale dzięki temu pobierzesz wszystkie 50 produktów z jednej strony.
Krok 1: Zainstaluj Selenium
pip install selenium pandas
Dobra wiadomość: od Selenium 4.6+ nie trzeba już używać webdriver-manager. Selenium Manager sam pobiera sterowniki.
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)
Flaga --headless=new (wprowadzona w Chrome 109+) korzysta z tego samego silnika renderującego co normalny Chrome, przez co Amazonowi trudniej wykryć automatyzację.
Krok 2: Przewiń stronę, aby ominąć lazy loading
To właśnie ten krok sprawia, że Selenium jest warte dodatkowej konfiguracji. Amazon Best Sellers ładuje początkowo około 30 produktów — reszta pojawia się dopiero po przewinięciu.
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)
Po przewinięciu wszystkie 50 produktów powinno być już wyrenderowane w DOM. U mnie 5 przewinięć Page Down z 2-sekundową przerwą wystarczało, ale przy wolniejszym łączu może być potrzeba korekty.
Krok 3: Wyciągnij dane produktów
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})
Warto opakować każdą ekstrakcję w try/except — niektóre produkty mogą być niedostępne albo nie mieć wszystkich pól, a nie chcesz, żeby jeden problematyczny element wywalił cały scraping.
Krok 4: Obsłuż paginację
Amazon dzieli 100 Best Sellers na dwie strony z różnymi strukturami URL:
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)
# ... ekstrakcja produktów jak wyżej ...
all_products.extend(products)
driver.quit()
Czego się spodziewać
W moim teście Selenium pobrało wszystkie 50 produktów z każdej strony — wyraźnie lepiej niż requests + BS4. Minusy: całość trwała około 45 sekund na stronę (wliczając przewijanie), a po zbyt wielu uruchomieniach bez rotacji proxy i tak dostałem flagę. Selenium jest też wykrywalne przez mechanizmy antybotowe Amazona, nawet z flagami antydetekcyjnymi — przy większej skali potrzebne będą dodatkowe zabezpieczenia (patrz playbook antybanowy poniżej).
Inne bolączki:
- Zdarzają się rozjazdy wersji WebDrivera, choć Selenium Manager mocno ograniczył ten problem
- Selektory CSS trzeba aktualizować, gdy Amazon zmienia DOM
- Zużycie pamięci jest wysokie — jedna instancja przeglądarki potrafi zjeść 200–400 MB RAM
Metoda 3: Scrape Amazon Best Sellers za pomocą Scraping API
Scraping API to podejście w stylu „niech ktoś inny ogarnie trudne rzeczy”. Usługi takie jak Scrape.do, Oxylabs czy ScrapingBee zajmują się rotacją proxy, renderowaniem JavaScriptu i zabezpieczeniami antybotowymi — Ty wysyłasz tylko URL i dostajesz z powrotem HTML albo JSON.
Jak to działa
Wysyłasz docelowy URL do endpointu API. API renderuje stronę w prawdziwej przeglądarce na swojej infrastrukturze, rotuje proxy, radzi sobie z CAPTCHA i zwraca czysty HTML. Potem analizujesz go standardowo przez BeautifulSoup.
Krok 1: Wyślij żądanie przez API
Oto przykład z użyciem Scrape.do (ceny startują od 29 USD/miesiąc za 150 000 kredytów, 1 kredyt = 1 żądanie niezależnie od renderowania):
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")
Dalej parsowanie wygląda identycznie jak w metodzie 1 — te same selektory, ta sama logika ekstrakcji.
Rzeczywistość cenowa
Poniżej stawki głównych API za 1000 żądań do Amazona według najlepszej dostępnej ceny:
| Dostawca | Koszt za 1000 żądań | Uwagi |
|---|---|---|
| Scrape.do | ok. 0,19 USD | Stała stawka, bez mnożników kredytów |
| Oxylabs | ok. 1,80 USD | Mnożnik 5x za renderowanie JS |
| ScrapingBee | ok. 4,90 USD | Mnożniki 5–25x dla funkcji premium |
| Bright Data | 5,00 USD+ | Najbardziej rozbudowane dane (686 pól/produkt), ale najwolniejsze (~66 s/żądanie) |
Plusy i minusy
Plusy: wysoka niezawodność (ok. 99% skuteczności na Amazonie u czołowych dostawców), brak utrzymania driverów, automatyczna obsługa mechanizmów antybotowych, dobra skalowalność.
Minusy: płatność za każde żądanie (koszty rosną wraz ze skalą), nadal trzeba napisać kod parsujący, nadal jesteś podatny na zmiany selektorów CSS. Przy 100 000 stron miesięcznie różnica kosztów jest ogromna: budowa własnego rozwiązania kosztuje około $1,98 mln w trzy lata versus $332 tys. przy dostawcy API — to oszczędność na poziomie 71%.
Punkt opłacalności zwykle wypada przy 500 tys.–1 mln żądań miesięcznie. Poniżej tego progu oszczędność czasu oferowana przez API zazwyczaj znacznie przewyższa koszty.
Metoda 4: Scrape Amazon Best Sellers z Thunderbit (bez Pythona)
Pełne disclosure: pracuję w Thunderbit, więc weź ten fragment z odpowiednim kontekstem. Mimo to naprawdę przetestowałem wszystkie cztery metody jedna po drugiej i różnica w czasie od wejścia na stronę do uzyskania danych była bardzo wyraźna.
Thunderbit to AI web scraper działający jako rozszerzenie Chrome. Główna idea jest prosta: zamiast pisać selektory CSS albo kod w Pythonie, AI czyta stronę i samo ustala, jakie dane trzeba wyciągnąć. Dla Amazon Best Sellers Thunderbit ma gotowe szablony, które działają jednym kliknięciem.
Krok 1: Zainstaluj rozszerzenie Thunderbit do Chrome
Wejdź do Chrome Web Store i kliknij „Dodaj do Chrome”. Załóż darmowe konto — darmowy plan daje wystarczająco kredytów, żeby to przetestować.
Krok 2: Otwórz stronę Amazon Best Sellers
Otwórz dowolną stronę kategorii Amazon Best Sellers w Chrome. Na przykład:
https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/
Krok 3: Kliknij „One Click Extract”
Otwórz panel boczny Thunderbit i kliknij „One Click Extract”. AI analizuje strukturę strony i samodzielnie rozpoznaje kolumny: Product Name, Price, Rating, Image URL, Vendor, Product URL oraz Rank. W moim teście poprawnie wykrył wszystkie istotne pola w około 3 sekundy.

Możesz zmieniać nazwy kolumn, usuwać je albo dodawać własne. Da się też dodać niestandardowe prompty AI dla poszczególnych pól — na przykład „zaklasyfikuj jako Electronics/Apparel/Home”, aby dodać do każdego produktu tag kategorii.
Krok 4: Kliknij „Scrape”
Naciśnij przycisk „Scrape”. Thunderbit wypełni uporządkowaną tabelę wszystkimi danymi produktowymi ze strony. W trybie chmurowym może przetwarzać nawet 50 stron równolegle, automatycznie obsługując lazy loading i paginację.
Krok 5: Eksportuj za darmo
Kliknij „Export” i wybierz docelowe miejsce: Excel, Google Sheets, Airtable albo Notion. Eksporty są darmowe we wszystkich planach — bez ukrytych kosztów.

Cały proces zajął mi około 90 sekund — od otwarcia strony do gotowego arkusza. Dla porównania: metoda 1 zajęła około 20 minut (w tym debugowanie problemu z lazy loadingiem), metoda 2 około 35 minut (w tym konfiguracja Selenium), a metoda 3 około 15 minut (w tym zakładanie konta API).
Dlaczego Thunderbit dobrze radzi sobie z Amazonem
Ponieważ AI za każdym razem odczytuje stronę na nowo, automatycznie dostosowuje się do zmian układu — nie trzeba utrzymywać żadnych selektorów CSS. To bezpośrednio odpowiada na najczęstszy zarzut w forach scrapujących: „zwykły web scraper nie wystarczy, trzeba dodawać mnóstwo zabezpieczeń na zmiany elementów”. Gdy Amazon zmienia DOM (co robi regularnie), nie musisz nic poprawiać.
Tryb cloud scraping obsługuje rotację proxy, renderowanie i środki antybotowe w sposób niewidoczny dla użytkownika. Dla osób, które chcą rozwiązania typu „po prostu działa”, eliminuje to cały stres związany z banowaniem.
Oszczędź czas na utrzymaniu selektorów Gdy Amazon zmienia oznaczenia w HTML, selektory BeautifulSoup przestają działać. AI Thunderbit przy każdym uruchomieniu ponownie odczytuje stronę i rozpoznaje pola od nowa. Get Started Free
Playbook antybanowy: jak uniknąć blokady ze strony Amazona
System wykrywania botów Amazona jest agresywny. Podczas testów tymczasowo zablokowano mi IP, a użytkownicy forów opisują podobne sytuacje: „błędy wszędzie, Amazon zaczął nawet przekierowywać mnie na stronę główną”. Jeśli idziesz ścieżką Pythona (metody 1–3), ta sekcja jest kluczowa.
Oto warstwowa strategia, od podstawowej do bardziej zaawansowanej:
1. Rotuj ciągi User-Agent
Wysyłanie w kółko tego samego User-Agent to czerwona flaga. Użyj puli 5+ stringów z przykładu w metodzie 1 i losuj jeden przy każdym żądaniu:
headers = {"User-Agent": random.choice(USER_AGENTS)}
2. Dodawaj losowe opóźnienia między żądaniami
Stałe opóźnienia są wykrywalne. Losowe są bezpieczniejsze:
time.sleep(random.uniform(2, 5))
Zauważyłem, że przerwy 2–5 sekund między żądaniami pozwalały mi pozostać „pod radarem” przy małych paczkach (poniżej 50 żądań). Przy większych uruchomieniach warto zwiększyć to do 3–7 sekund.
3. Używaj rotacji proxy
To najważniejszy element. Testy Proxyway pokazują, że proxy residential osiągają średnio ok. 94% skuteczności na Amazonie, podczas gdy proxy datacenter tylko ok. 59% — różnica 35 punktów procentowych. Stos antybotowy Amazona obejmuje TLS fingerprinting, analizę zachowania oraz limity per IP, więc standardowe adresy datacenter są oznaczane w ciągu sekund.
Proxy residential są droższe (2–12 USD za GB, zależnie od dostawcy), ale dużo bardziej niezawodne. Przykład:
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. Wzmocnij fingerprint przeglądarki (Selenium)
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
# Po inicjalizacji drivera usuń flagę navigator.webdriver
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
})
5. Zarządzaj sesjami i ciasteczkami
Przechowywanie cookies między żądaniami sprawia, że scraper bardziej przypomina prawdziwą sesję użytkownika:
session = requests.Session()
# Najpierw odwiedź stronę główną, aby zdobyć realistyczne cookies
session.get("https://www.amazon.com", headers=headers)
time.sleep(2)
# Potem zeskrob docelową stronę
response = session.get(target_url, headers=headers)
6. Kiedy warto od razu pominąć cały ten ból
Dla osób, które nie chcą zarządzać żadnym z powyższych elementów, cloud scraping Thunderbit obsługuje rotację proxy, renderowanie i zabezpieczenia antybotowe przezroczysto. Scraping API również automatycznie ogarnia większość tych kwestii. Z mojego doświadczenia czas spędzony na debugowaniu problemów antybanowych często przewyższa czas potrzebny na napisanie samego scrapera — dlatego podejście „po prostu działa” ma realny zwrot z inwestycji.
Enrichment podstron: scrapowanie stron produktowych dla bogatszych danych
Strona listy Best Sellers pokazuje tylko podstawowe informacje — tytuł, cenę, ocenę i ranking. Ale prawdziwa wartość w researchu FBA kryje się na indywidualnych stronach produktów. Oto, czego nie zobaczysz, jeśli zeskrobiesz tylko listę:
| Pole | Strona listy | Strona produktu |
|---|---|---|
| Nazwa produktu | ✅ | ✅ |
| Cena | ✅ | ✅ |
| Ocena | ✅ | ✅ |
| Ranking BSR | ✅ | ✅ (wraz z rankingami w podkategoriach) |
| Marka | ❌ | ✅ |
| ASIN | ❌ | ✅ |
| Data pierwszej dostępności | ❌ | ✅ |
| Wymiary / waga | ❌ | ✅ |
| Liczba sprzedawców | ❌ | ✅ |
| Cechy w punktach | ❌ | ✅ |
| Właściciel Buy Box | ❌ | ✅ |
Szczególnie cenna jest data „Date First Available” — pokazuje, jak długo produkt jest na rynku, co jest ważnym sygnałem w analizie konkurencji. Z kolei liczba sprzedawców i właściciel Buy Box pomagają ocenić, czy dana nisza jest warta wejścia (jeśli sam Amazon trzyma ponad 30% udziału w Buy Box, konkurencja jest ekstremalnie trudna).
Podejście Pythonowe: pętla po URL-ach produktów
Po zebraniu URL-i produktów ze strony listy przechodzisz po każdym z nich z opóźnieniem:
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")
# Wyciągnij markę
brand_tag = detail_soup.find("a", id="bylineInfo")
product["Brand"] = brand_tag.get_text(strip=True) if brand_tag else "N/A"
# Wyciągnij ASIN ze źródła strony lub URL
# Wyciągnij Date First Available z tabeli szczegółów produktu
# ... dodatkowe pola ...
Uwaga: wejście na 100 indywidualnych stron produktowych znacząco zwiększa ryzyko bana. Trzeba liczyć się z rotacją proxy i dłuższymi przerwami.
Podejście Thunderbit: scrapowanie podstron jednym kliknięciem
Po zeskrobaniu strony listy do tabeli kliknij w Thunderbit „Scrape Subpages”. AI odwiedza każdy URL produktu i automatycznie wzbogaca tabelę o dodatkowe kolumny — marka, ASIN, specyfikacje, cechy. Bez dodatkowego kodu, selektorów czy konfiguracji. To szczególnie przydatne dla zespołów e-commerce, które potrzebują pełnego obrazu do decyzji sourcingowych, ale nie chcą pisać i utrzymywać parsera stron szczegółowych.
Automatyzacja cyklicznych zrzutów: monitorowanie Best Sellers w czasie
Jednorazowy scrape jest przydatny, ale prawdziwa przewaga konkurencyjna pojawia się przy ciągłym monitoringu. Śledzenie, które produkty rosną, które spadają, wczesne wykrywanie trendów i obserwowanie zmian cen przez tygodnie lub miesiące — to właśnie odróżnia okazjonalny research od decyzji opartych na danych.
Podejście Pythonowe: harmonogramowanie przez Cron
Na Linuxie/Macu możesz zaplanować uruchamianie skryptu Pythonowego przez cron. Oto wpis crontab dla codziennego scrapu o 8:00:
0 8 * * * /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1
Dla cotygodniowego scrapu w poniedziałek o 9:00:
0 9 * * 1 /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1
Na Windowsie użyj Harmonogramu zadań, aby osiągnąć ten sam efekt. Jeśli chcesz działać stale bez trzymania laptopa włączonego, wdroż skrypt na VPS albo AWS Lambda — choć to zwiększa złożoność infrastruktury.
Dodaj logowanie i powiadomienia o błędach, żeby wyłapać nieudane uruchomienia. Nic nie jest gorsze niż odkrycie po dwóch tygodniach, że scraper po cichu przestał działać.
Podejście Thunderbit: Scheduled Scraper w zwykłym języku
Funkcja Scheduled Scraper w Thunderbit pozwala opisać interwał naturalnym językiem — wpisz „every Monday at 9am” albo „every day at 8am”, a AI zinterpretuje harmonogram. Scrapowanie działa na serwerach chmurowych Thunderbit (nie trzeba uruchomionego komputera ani przeglądarki), a dane mogą automatycznie eksportować się do Google Sheets lub Airtable. To tworzy żywy dashboard monitorujący bez zarządzania serwerami — idealne dla zespołów operacyjnych, które chcą stałej widoczności bez narzutu DevOps.
Aspekty prawne i etyczne scrapowania Amazona
Nie jestem prawnikiem i nie jest to porada prawna. Ale pominięcie kwestii prawnych w poradniku o scrapowaniu byłoby nieodpowiedzialne — użytkownicy forów wprost podnoszą obawy związane z ToS, i słusznie.
robots.txt Amazona: Według stanu na 2026 rok robots.txt Amazona zawiera ponad 80 konkretnych ścieżek Disallow, ale /gp/bestsellers/ NIE jest wprost blokowane dla standardowych user agentów. Jednak ponad 35 user agentów związanych z AI (ClaudeBot, GPTBot, Scrapy itd.) otrzymuje zbiorcze Disallow: /. Brak wyraźnego zakazu nie oznacza, że Amazon akceptuje scraping.
Warunki korzystania z Amazona: Conditions of Use Amazona (zaktualizowane w maju 2025) wprost zabraniają „używania jakiegokolwiek automatycznego procesu lub technologii do uzyskiwania dostępu, pozyskiwania, kopiowania lub monitorowania jakiejkolwiek części strony Amazon” bez pisemnej zgody. To nie teoria — Amazon pozwał Perplexity AI w listopadzie 2025 za nieautoryzowany automatyczny dostęp i uzyskał wstępny zakaz.
Precedens hiQ v. LinkedIn: W sprawie hiQ Labs v. LinkedIn (Dziewiąty Okręg, 2022) sąd uznał, że scraping publicznie dostępnych danych prawdopodobnie nie narusza Computer Fraud and Abuse Act. Ale hiQ ostatecznie zawarło ugodę i zgodziło się zaprzestać scrapowania — wygrana w zakresie CFAA nie chroni przed roszczeniami z tytułu naruszenia umowy.
Praktyczne wytyczne:
- Zbieraj tylko publicznie dostępne dane (ceny, BSR, tytuły produktów — nie PII)
- Szanuj limity i nie przeciążaj serwerów
- Używaj danych do legalnej analizy konkurencji
- Skonsultuj skalę scrapowania z własnym prawnikiem
- Pamiętaj, że ponad 20 stanów USA ma już rozbudowane przepisy prywatnościowe
Cloud scraping Thunderbit korzysta ze стандартowych wzorców żądań przypominających ruch przeglądarki, ale zawsze warto potwierdzić zgodność z własnym doradcą prawnym.
Tutaj nie potrzebujesz Pythona Jeśli celem jest arkusz kalkulacyjny, a nie pipeline, jedno kliknięcie wystarczy. Eksportuj od razu do Excel, Google Sheets, Airtable lub Notion. Get Started Free
Którą metodę wybrać? Krótki przewodnik decyzyjny
W skrócie:
- „Uczę się Pythona i chcę projekt na weekend.” → Metoda 1 (requests + BeautifulSoup). Nauczysz się sporo o żądaniach HTTP, parsowaniu HTML i zabezpieczeniach Amazona.
- „Muszę zeskrobywać strony z dużą ilością JavaScriptu albo sesje po zalogowaniu.” → Metoda 2 (Selenium). Jest cięższa, ale radzi sobie z dynamiczną treścią.
- „Prowadzę scrapowanie produkcyjne na dużą skalę.” → Metoda 3 (Scraping API). Niech ktoś inny zarządza proxy i renderowaniem. Całkowity koszt posiadania przemawia za API poniżej 500 tys. żądań miesięcznie.
- „Nie jestem developerem i chcę dane za 2 minuty.” → Metoda 4 (Thunderbit). Bez kodu, bez selektorów, bez utrzymania.
- „Potrzebuję ciągłego monitoringu bez zarządzania serwerem.” → Thunderbit Scheduled Scraper. Ustawiasz i zapominasz.
Wypróbuj Thunderbit do Amazon Best Sellers Get Started Free
Podsumowanie i najważniejsze wnioski
Po weekendzie testów zostało mi z tego kilka konkretnych obserwacji:
requests + BeautifulSoup świetnie nadaje się do nauki, ale ograniczenie lazy loadingu (tylko około 30 z 50 produktów) i kruche selektory CSS czynią tę metodę niepraktyczną w produkcji.
Selenium rozwiązuje problem lazy loadingu i pobiera wszystkie 50 produktów z jednej strony, ale jest wolne, zasobożerne i nadal wykrywalne przez zabezpieczenia Amazona.
Scraping API oferują najlepszą niezawodność w scrapowaniu produkcyjnym — ok. 99% skuteczności na Amazonie — ale koszty rosną, a kod parsujący nadal trzeba napisać.
Thunderbit dał zdecydowanie najszybszy czas do danych. AI obsługuje zmiany układu strony, lazy loading, paginację i mechanizmy antybotowe bez żadnej konfiguracji. Dla osób nietechnicznych albo zespołów, które potrzebują cyklicznych danych bez narzutu DevOps, to najbardziej praktyczna opcja.
Najważniejsza lekcja? Zabezpieczenia Amazona i częste zmiany układu strony sprawiają, że rozwiązania bezobsługowe oszczędzają najwięcej czasu w długim terminie. Każda godzina spędzona na debugowaniu zepsutych selektorów i rotacji proxy to godzina, której nie poświęcasz na właściwą analizę.
Chcesz wypróbować podejście no-code? Darmowy plan Thunderbit daje Ci wystarczająco kredytów, by zeskrobać kilka kategorii Best Sellers i zobaczyć efekty samodzielnie. Wolisz ścieżkę Pythonową? Powyższe przykłady kodu powinny Cię dobrze wystartować. W obu przypadkach będziesz mieć dane Amazon Best Seller w arkuszu, zamiast patrzeć w zakładkę przeglądarki.
Więcej o podejściach do web scrapingu znajdziesz w naszych poradnikach: jak zeskrobać produkty i opinie z Amazona, jak wyciągać dane ze stron do Excela oraz najlepsze AI web scrapery. Możesz też obejrzeć krok po kroku materiały na kanale Thunderbit na YouTube.
Dowiedz się więcej


