Przetestowałem 4 sposoby na scrapowanie Amazon Best Sellers w Pythonie i ...

Ostatnia aktualizacja: April 17, 2026

W miniony weekend wypiłem cały dzbanek kawy, testując cztery różne sposoby na pobranie danych z strony Amazon Best Sellers. Dwa działały świetnie, jeden prawie doprowadził do bana na moje IP, a jeden wymagał dosłownie dwóch kliknięć. Oto wszystko, czego się nauczyłem.

Amazon to prawdziwy kolos w e-commerce — , oraz system Best Sellers Rank (BSR), który aktualizuje się co godzinę. Jeśli robisz research produktów FBA, analizujesz ceny konkurencji albo po prostu chcesz wyłapać trendy, zanim zrobią to rywale, dane Best Sellers są na wagę złota.

Ale wyciągnięcie tych danych z Amazona do arkusza kalkulacyjnego? Tu zaczyna się robić ciekawie. Przetestowałem requests + BeautifulSoup, Selenium, scraping API oraz (nasz no-code AI web scraper), żeby sprawdzić, które podejście naprawdę daje efekt — a które kończy się wpatrywaniem w stronę CAPTCHA.

Czym są Amazon Best Sellers i dlaczego warto się nimi interesować?

Amazon Best Sellers Rank (BSR) to ranking Amazona tworzony w czasie rzeczywistym, który porządkuje produkty według sprzedaży w danej kategorii. Można go traktować jak listę popularności, aktualizowaną co godzinę na podstawie zarówno świeżych, jak i historycznych danych sprzedażowych. Sam Amazon opisuje to tak:

„Obliczanie Amazon Best Sellers opiera się na sprzedaży na Amazon i jest aktualizowane co godzinę, aby odzwierciedlać bieżącą oraz historyczną sprzedaż każdego produktu sprzedawanego na Amazon.” —

Strona Best Sellers pokazuje 100 najlepszych produktów w każdej kategorii, podzielonych na dwie strony po 50 pozycji. Strona 1 obejmuje miejsca #1–50, a strona 2 #51–100. Amazon potwierdził, że liczba wyświetleń i recenzje 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 analizę konkurencji, działy operacyjne śledzące trendy cenowe oraz analitycy rynku monitorują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 scrapować Amazon Best Sellers w Pythonie?

Ręczny research produktów to czysta strata czasu. Według pracownicy spędzają 9,3 godziny tygodniowo tylko na szukaniu i zbieraniu informacji. W przypadku zespołów e-commerce oznacza to godziny klikania po stronach Amazona, kopiowania nazw i cen produktów oraz wklejania ich do arkuszy — po czym cały proces trzeba powtórzyć tydzień później.

Poniżej szybki przegląd zastosowań, które sprawiają, że scrapowanie Best Sellers ma sens:

ZastosowanieCo otrzymujeszKto na tym korzysta
Research produktów FBAIdentyfikacja produktów o wysokim popycie i niskiej konkurencji na podstawie BSR i liczby opiniiSprzedawcy Amazon, dropshipperzy
Analiza cen konkurencjiŚledzenie zmian cen w topowych produktach w Twojej kategoriiZespoły e-commerce, analitycy cen
Monitorowanie trendów rynkowychWykrywanie rosnących kategorii i sezonowych zmianProduct managerowie, badacze rynku
Generowanie leadówTworzenie list najlepiej sprzedających się marek i ich linii produktowychZespoły sprzedaży, outreach B2B
Analiza konkurencjiPorównanie własnych produktów z liderami kategoriiBrand managerowie, zespoły strategiczne

Zwrot z inwestycji jest realny: w obejmującym 2700 specjalistów e-commerce wykazano, że narzędzia AI oszczędzają im średnio . Z kolei sprzedawcy korzystający z automatycznego monitoringu cen utrzymują Buy Box wobec 42% przy ręcznym śledzeniu — to wzrost sprzedaży o 37% dzięki szybszej reakcji na zmiany cen.

4 sposoby na scrapowanie Amazon Best Sellers w Pythonie: szybkie porównanie

Zanim przejdziemy do instrukcji krok po kroku, poniżej zamieszczam porównanie, które sam chciałbym mieć pod ręką, zanim zacząłem testy. Ta tabela pomoże Ci dobrać metodę do sytuacji:

Kryteriumrequests + BS4SeleniumScraping API (np. Scrape.do)Thunderbit (no-code)
Trudność konfiguracjiŚredniaWysoka (driver, przeglądarka)Niska (klucz API)Bardzo niska (rozszerzenie Chrome)
Obsługa lazy loadingNieTak (symulacja przewijania)Tak (wyrenderowany HTML)Tak (AI obsługuje renderowanie)
Odporność na anty-botNiska (blokady IP)Średnia (wykrywalne)Wysoka (rotujące proxy)Wysoka (tryb cloud + browser)
Koszt utrzymaniaWysoki (selector się psują)Wysoki (aktualizacje drivera + selektory)NiskiBardzo niski (AI dostosowuje się do zmian układu)
KosztDarmoweDarmowePłatne (za żądanie)Darmowy plan + płatne pakiety
Najlepsze doJednorazowych zadań, naukiStron z dużą ilością JS, logowaniemSkali / produkcjiOsób nietechnicznych, szybkiego researchu, cyklicznego monitoringu

Jeśli chcesz poznać podstawy scrapowania w Pythonie, zacznij od metody 1 lub 2. Jeśli potrzebujesz niezawodności w skali produkcyjnej, wybierz metodę 3. Jeśli zależy Ci na wynikach w dwa kliknięcia, bez pisania kodu, przejdź od razu do metody 4.

Zanim zaczniesz

  • Poziom trudności: początkujący do średnio zaawansowanego (w zależności od metody)
  • Czas potrzebny: ok. 15 minut dla Thunderbit, ok. 45 minut dla metod Python
  • Czego potrzebujesz: Python 3.8+ (dla metod 1–3), przeglądarka Chrome, (dla metody 4) oraz adres URL kategorii Amazon Best Sellers

Metoda 1: Scrapowanie Amazon Best Sellers za pomocą requests + BeautifulSoup

To lekkie i przyjazne dla początkujących podejście — bez automatyzacji przeglądarki, tylko żądania HTTP i parsowanie HTML. To ono też najwięcej mnie nauczyło o zabezpieczeniach Amazona przed scrapingiem.

Krok 1: Przygotuj środowisko

Zainstaluj wymagane pakiety:

1pip install requests beautifulsoup4 pandas

Następnie przygotuj importy:

1import requests
2from bs4 import BeautifulSoup
3import pandas as pd
4import random
5import time

Krok 2: Wyślij żądanie z realistycznymi nagłówkami

Amazon blokuje żądania wyglądające jak boty. Najprostsza obrona to nagłówek User-Agent imitujący prawdziwą przeglądarkę. Oto przykład z pulą aktualnych, realistycznych stringów User-Agent (źródło: , marzec 2026):

1USER_AGENTS = [
2    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
3    "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",
4    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0",
5    "Mozilla/5.0 (Macintosh; Intel Mac OS X 15.7; rv:149.0) Gecko/20100101 Firefox/149.0",
6    "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",
7]
8headers = {"User-Agent": random.choice(USER_AGENTS)}
9url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
10response = requests.get(url, headers=headers)
11print(response.status_code)  # Should be 200

Jeśli widzisz kod 200, wszystko działa. Jeśli pojawi się 503 albo zostaniesz przekierowany na stronę CAPTCHA, Amazon oznaczył Twoje żądanie jako podejrzane.

Krok 3: Sparsuj dane produktów za pomocą BeautifulSoup

Sprawdź HTML strony Amazon w DevTools przeglądarki (kliknij prawym przyciskiem → Inspect). Kontenery produktów korzystają z identyfikatora gridItemRoot. W każdym z nich znajdziesz nazwę produktu, cenę, ocenę i link URL.

1soup = BeautifulSoup(response.text, "html.parser")
2products = []
3for item in soup.find_all("div", id="gridItemRoot"):
4    title_tag = item.find("div", class_="_cDEzb_p13n-sc-css-line-clamp-3_g3dy1")
5    price_tag = item.find("span", class_="_cDEzb_p13n-sc-price_3mJ9Z")
6    link_tag = item.find("a", class_="a-link-normal")
7    title = title_tag.get_text(strip=True) if title_tag else "N/A"
8    price = price_tag.get_text(strip=True) if price_tag else "N/A"
9    url = "https://www.amazon.com" + link_tag["href"] if link_tag else "N/A"
10    products.append({"Title": title, "Price": price, "URL": url})

Uwaga: klasy z prefiksem _cDEzb_ to hashe CSS module, które Amazon okresowo generuje od nowa. Id gridItemRoot i klasa a-link-normal są stabilniejsze, ale zawsze warto sprawdzić selektory w DevTools przed uruchomieniem scrapera.

Krok 4: Eksport do CSV

1df = pd.DataFrame(products)
2df.to_csv("amazon_best_sellers.csv", index=False)
3print(f"Scraped {len(products)} products")

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. Przy pierwszym załadowaniu strony renderuje się tylko około 30 produktów; reszta pojawia się po przewinięciu, a tego requests nie obsługuje, bo nie wykonuje JavaScriptu.

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 dzieje się to regularnie
  • Brak obsługi paginacji out of the box

Do nauki scrapowania w Pythonie to świetna metoda. Do produkcji jest jednak zbyt krucha.

Metoda 2: Scrapowanie Amazon Best Sellers za pomocą Selenium

Selenium rozwiązuje problem lazy loadingu, uruchamiając prawdziwą przeglądarkę — konfiguracja jest cięższa, ale dzięki temu pobierzesz pełne 50 produktów z jednej strony.

Krok 1: Zainstaluj Selenium

1pip install selenium pandas

Dobra wiadomość: od Selenium 4.6+ nie potrzebujesz już webdriver-manager. Selenium Manager automatycznie pobiera odpowiedni driver.

1from selenium import webdriver
2from selenium.webdriver.chrome.options import Options
3from selenium.webdriver.common.by import By
4from selenium.webdriver.common.keys import Keys
5import time
6import pandas as pd
7options = Options()
8options.add_argument("--headless=new")
9options.add_argument("--window-size=1920,1080")
10options.add_argument("--disable-blink-features=AutomationControlled")
11driver = webdriver.Chrome(options=options)

Flaga --headless=new (wprowadzona w Chrome 109+) korzysta z tego samego silnika renderującego co zwykły 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 początkowo ładuje tylko około 30 produktów — reszta pojawia się po przewijaniu.

1def scroll_page(driver, scrolls=5, delay=2):
2    for _ in range(scrolls):
3        driver.find_element(By.TAG_NAME, "body").send_keys(Keys.PAGE_DOWN)
4        time.sleep(delay)
5driver.get("https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/")
6time.sleep(3)
7scroll_page(driver)

Po przewinięciu wszystkie 50 produktów powinny znaleźć się w DOM. U mnie wystarczyło 5 przewinięć Page Down z 2-sekundową przerwą, ale w zależności od szybkości połączenia może być potrzebna korekta.

Krok 3: Wyciągnij dane produktów

1items = driver.find_elements(By.ID, "gridItemRoot")
2products = []
3for item in items:
4    try:
5        title = item.find_element(By.CSS_SELECTOR, "div._cDEzb_p13n-sc-css-line-clamp-3_g3dy1").text
6    except:
7        title = "N/A"
8    try:
9        price = item.find_element(By.CSS_SELECTOR, "span._cDEzb_p13n-sc-price_3mJ9Z").text
10    except:
11        price = "N/A"
12    try:
13        url = item.find_element(By.CSS_SELECTOR, "a.a-link-normal").get_attribute("href")
14    except:
15        url = "N/A"
16    products.append({"Title": title, "Price": price, "URL": url})

Obsługa każdego pola w blokach try/except jest ważna — niektóre produkty mogą być niedostępne albo mieć brakujące dane, a jeden problematyczny element nie powinien zatrzymać całego scrapowania.

Krok 4: Obsłuż paginację

Amazon dzieli 100 pozycji Best Sellers na dwie strony o różnych strukturach URL:

1urls = [
2    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
3    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/ref=zg_bs_pg_2_electronics?_encoding=UTF8&pg=2"
4]
5all_products = []
6for url in urls:
7    driver.get(url)
8    time.sleep(3)
9    scroll_page(driver)
10    # ... extract products as above ...
11    all_products.extend(products)
12driver.quit()

Czego się spodziewać

W moim teście Selenium zebrało wszystkie 50 produktów z każdej strony — wyraźne zwycięstwo nad requests + BS4. Minusem było to, że jedna strona trwała około 45 sekund do przetworzenia (łącznie z przewijaniem), a przy zbyt częstych uruchomieniach i bez rotacji proxy i tak zostałem oznaczony jako podejrzany. Amazon potrafi też wykryć Selenium mimo flag antydetekcyjnych — przy poważniejszej skali potrzebne są dodatkowe zabezpieczenia (patrz Anti-Ban Playbook poniżej).

Inne problemy:

  • Zdarzają się niezgodności wersji WebDrivera, choć Selenium Manager mocno ograniczył ten problem
  • Selektory CSS trzeba aktualizować za każdym razem, gdy Amazon zmienia DOM
  • Zużycie pamięci jest spore — każda instancja przeglądarki pochłania około 200–400 MB RAM

Metoda 3: Scrapowanie Amazon Best Sellers przez Scraping API

Scraping API to podejście typu „niech ktoś inny ogarnie trudne rzeczy”. Usługi takie jak Scrape.do, Oxylabs czy ScrapingBee zajmują się rotacją proxy, renderowaniem JavaScriptu i ochroną przed botami — Ty wysyłasz tylko URL i dostajesz 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. Następnie parsujesz go standardowo za pomocą BeautifulSoup.

Krok 1: Wyślij żądanie przez API

Przykład z użyciem Scrape.do (ceny zaczynają się od 29 USD miesięcznie za 150 000 kredytów, 1 kredyt = 1 żądanie niezależnie od renderowania):

1import requests
2from bs4 import BeautifulSoup
3api_token = "YOUR_API_TOKEN"
4target_url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
5api_url = f"https://api.scrape.do?token={api_token}&url={target_url}&render=true&geoCode=us"
6response = requests.get(api_url)
7soup = BeautifulSoup(response.text, "html.parser")

Dalej parsowanie wygląda tak samo jak w metodzie 1 — te same selektory, ta sama logika ekstrakcji.

Sprawdzenie cen

Oto, ile pobierają główne API za 1000 żądań do Amazona przy najlepszym dostępnym cenniku:

DostawcaKoszt za 1000 żądańUwagi
Scrape.do~0,19 USDStała stawka, bez mnożników kredytów
Oxylabs~1,80 USDMnożnik 5x za renderowanie JS
ScrapingBee~4,90 USDMnożniki 5–25x za funkcje premium
Bright Data5,00+ USDNajbardziej rozbudowane dane (686 pól na produkt), ale najwolniejsze (~66 s/żądanie)

Plusy i minusy

Plusy: wysoka niezawodność ( na Amazonie u najlepszych dostawców), brak konieczności utrzymywania driverów, automatyczna obsługa anty-botów, dobra skalowalność.

Minusy: płatność za każde żądanie (koszty rosną wraz ze skalą), nadal musisz napisać kod parsujący, nadal podatne na zmiany selektorów CSS. Przy 100 000 stron miesięcznie różnica w całkowitym koszcie robi się ogromna: budowa własnego rozwiązania to około — oszczędność na poziomie 71%.

Próg opłacalności zwykle wypada przy 500 tys.–1 mln żądań miesięcznie. Poniżej tego poziomu oszczędność czasu zwykle przewyższa koszt API.

Metoda 4: Scrapowanie Amazon Best Sellers za pomocą Thunderbit (bez Pythona)

Pełna transparentność: pracuję w Thunderbit, więc potraktuj tę sekcję z tym kontekstem. Mimo to naprawdę przetestowałem wszystkie cztery metody jedna po drugiej i różnica w czasie dojścia do danych była ogromna.

to AI web scraper działający jako rozszerzenie do Chrome. Główna idea jest prosta: zamiast pisać selektory CSS albo kod w Pythonie, AI czyta stronę i samo rozpoznaje, jakie dane należy pobrać. W przypadku Amazon Best Sellers Thunderbit ma gotowe szablony, które działają po jednym kliknięciu.

Krok 1: Zainstaluj rozszerzenie Thunderbit Chrome

Wejdź do i kliknij „Add to 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 „AI Suggest Fields”

Otwórz panel boczny Thunderbit i kliknij „AI Suggest Fields”. AI analizuje strukturę strony i proponuje kolumny: nazwa produktu, cena, ocena, URL obrazu, sprzedawca, URL produktu oraz pozycja w rankingu. W moim teście poprawnie rozpoznało wszystkie istotne pola w około 3 sekundy.

amazon-thunderbit-product-data.webp

Możesz zmieniać nazwy kolumn, usuwać je lub dodawać nowe. Da się też dodać własne prompty AI dla każdej kolumny — na przykład „skategoryzuj jako Electronics/Apparel/Home”, aby dodać tag kategorii do każdego produktu.

Krok 4: Kliknij „Scrape”

Naciśnij przycisk „Scrape”. Thunderbit wypełni uporządkowaną tabelę wszystkimi danymi produktowymi ze strony. W trybie cloud potrafi przetwarzać nawet 50 stron jednocześnie równolegle, automatycznie obsługując lazy loading i paginację.

Krok 5: Wyeksportuj za darmo

Kliknij „Export” i wybierz miejsce docelowe: Excel, Google Sheets, Airtable lub Notion. Eksporty są darmowe w każdym planie — bez ukrytych opłat.

product-data-export.webp

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 lazy loadingu), metoda 2 około 35 minut (w tym konfiguracja Selenium), a metoda 3 około 15 minut (w tym założenie konta API).

Dlaczego Thunderbit dobrze radzi sobie z Amazonem

Ponieważ AI za każdym razem czyta stronę od nowa, automatycznie dostosowuje się do zmian w układzie — nie trzeba utrzymywać selektorów CSS. To bezpośrednio odpowiada na najczęstszą skargę z forów o scrapingu: „zwykły web scraper nie wystarczy, trzeba dodać mnóstwo zabezpieczeń na zmiany elementów”. Gdy Amazon zmienia DOM (co dzieje się regularnie), nie musisz nic aktualizować.

Tryb scrapowania w chmurze w przejrzysty sposób obsługuje rotację proxy, renderowanie i mechanizmy anty-bot. Dla osób, które chcą rozwiązania „po prostu działa”, eliminuje to cały ból związany z banami.

Plan antybana: jak nie dać się zablokować przez Amazona

System wykrywania botów Amazona jest agresywny. W trakcie testów mój adres IP został tymczasowo zablokowany, a użytkownicy forów opisują podobne sytuacje: „wszędzie błędy, Amazon zaczął mnie nawet przekierowywać na stronę główną”. Jeśli wybierasz ścieżkę Pythonową (metody 1–3), ta sekcja jest kluczowa.

Poniżej strategia warstwowa, od podstawowej do zaawansowanej:

1. Rotuj stringi User-Agent

Wysyłanie w kółko tego samego User-Agent to sygnał ostrzegawczy. Użyj puli 5+ stringów z przykładu kodu w metodzie 1 i wybieraj losowo jeden przy każdym żądaniu:

1headers = {"User-Agent": random.choice(USER_AGENTS)}

2. Dodawaj losowe opóźnienia między żądaniami

Stałe opóźnienia są łatwe do wykrycia. Losowe są bezpieczniejsze:

1time.sleep(random.uniform(2, 5))

Zauważyłem, że przerwy 2–5 sekund między żądaniami pozwalały mi działać bez problemu przy małych paczkach (poniżej 50 żądań). Przy większych przebiegach lepiej zwiększyć je do 3–7 sekund.

3. Używaj rotacji proxy

To najważniejszy element. 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 Amazona obejmuje fingerprinting TLS, analizę zachowań i limity per IP, więc standardowe adresy datacenter są wykrywane w kilka sekund.

Proxy residential są droższe (2–12 USD za GB, zależnie od dostawcy), ale są znacznie pewniejsze. Przykład:

1proxies = {
2    "http": "http://user:pass@residential-proxy.example.com:8080",
3    "https": "http://user:pass@residential-proxy.example.com:8080"
4}
5response = requests.get(url, headers=headers, proxies=proxies)

4. Wzmocnij fingerprint przeglądarki (Selenium)

1options.add_argument('--disable-blink-features=AutomationControlled')
2options.add_experimental_option("excludeSwitches", ["enable-automation"])
3options.add_experimental_option('useAutomationExtension', False)
4# Po inicjalizacji drivera usuń flagę navigator.webdriver
5driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
6    'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
7})

5. Zarządzaj sesjami i ciasteczkami

Zachowanie cookies między żądaniami sprawia, że scraper wygląda bardziej jak prawdziwa sesja użytkownika:

1session = requests.Session()
2# Najpierw odwiedź stronę główną, aby uzyskać realistyczne cookies
3session.get("https://www.amazon.com", headers=headers)
4time.sleep(2)
5# Następnie pobierz docelową stronę
6response = session.get(target_url, headers=headers)

6. Kiedy po prostu ominąć cały problem

Jeśli nie chcesz nic z tego ogarniać ręcznie, cloud scraping w Thunderbit obsługuje rotację proxy, renderowanie i zabezpieczenia anty-bot w sposób niewidoczny dla użytkownika. Scraping API również załatwiają większość tych kwestii od razu. Z mojego doświadczenia wynika, że czas spędzony na debugowaniu problemów z banami często przewyższa czas potrzebny na napisanie samego scrapera — więc podejście „po prostu działa” naprawdę ma ROI.

Wzbogacanie danych z podstron: scrapowanie kart produktów dla bogatszych informacji

Strona listy Best Sellers pokazuje tylko podstawowe informacje — tytuł, cenę, ocenę i pozycję. Ale prawdziwa wartość dla researchu FBA kryje się na indywidualnych kartach produktów. Oto czego Ci brakuje, jeśli scrapujesz tylko listę:

PoleStrona listyStrona szczegółów produktu
Nazwa produktu
Cena
Ocena
Ranking BSR✅ (z rankingami w podkategoriach)
Marka
ASIN
Data pierwszej dostępności
Wymiary / waga
Liczba sprzedawców
Cechy w punktach
Właściciel Buy Box

Pole „Data pierwszej dostępności” jest szczególnie wartościowe — 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 dany segment ma sens (jeśli sam Amazon trzyma ponad 30% udziału w Buy Box, wejście w ten niszowy rynek jest bardzo trudne).

Podejście Pythonowe: pętla po URL-ach produktów

Po zebraniu URL-i produktów ze strony listy, przechodzisz przez każdy z nich z opóźnieniem:

1for product in products:
2    time.sleep(random.uniform(3, 6))
3    detail_response = session.get(product["URL"], headers={"User-Agent": random.choice(USER_AGENTS)})
4    detail_soup = BeautifulSoup(detail_response.text, "html.parser")
5    # Wyodrębnij markę
6    brand_tag = detail_soup.find("a", id="bylineInfo")
7    product["Brand"] = brand_tag.get_text(strip=True) if brand_tag else "N/A"
8    # Wyodrębnij ASIN z kodu strony lub URL
9    # Wyodrębnij datę pierwszej dostępności z tabeli szczegółów produktu
10    # ... dodatkowe pola ...

Uwaga: wejście na 100 indywidualnych stron produktowych znacząco zwiększa ryzyko blokady. Warto zaplanować rotację proxy i dłuższe opóźnienia.

Podejście Thunderbit: scrapowanie podstron jednym kliknięciem

Po zebraniu listy produktów do tabeli kliknij w Thunderbit „Scrape Subpages”. AI odwiedzi każdy URL produktu i automatycznie wzbogaci tabelę o dodatkowe kolumny — markę, ASIN, specyfikacje, cechy — bez Twojej ingerencji. Bez dodatkowego kodu, selektorów i konfiguracji. To szczególnie przydatne dla zespołów e-commerce, które potrzebują pełnego obrazu do decyzji zakupowych, ale nie chcą pisać i utrzymywać parsera dla stron szczegółów.

Automatyzacja cyklicznych scrapów: monitorowanie Best Sellers w czasie

Jednorazowy scraping jest przydatny, ale prawdziwa przewaga pojawia się przy ciągłym monitorowaniu. Śledzenie, które produkty rosną i spadają, szybkie wyłapywanie trendów oraz obserwowanie zmian cen przez tygodnie czy miesiące — to właśnie oddziela zwykły research od decyzji opartych na danych.

Podejście Pythonowe: harmonogram przez cron

Na Linuxie lub Macu możesz zaplanować uruchamianie skryptu Python za pomocą crona. Oto wpis crontaba dla codziennego scrapingu o 8:00:

10 8 * * * /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1

Dla cotygodniowego uruchomienia w poniedziałek o 9:00:

10 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 włączonego laptopa, możesz wdrożyć skrypt na VPS albo AWS Lambda — choć to zwiększa złożoność infrastruktury.

Dodaj logowanie i powiadomienia o błędach, żeby wyłapywać nieudane uruchomienia. Nie ma nic gorszego niż odkrycie po dwóch tygodniach, że scraper po cichu przestał działać.

Podejście Thunderbit: Scheduled Scraper zwykłym językiem

Scheduled Scraper w Thunderbit pozwala opisać interwał naturalnym językiem — wpisz „każdy poniedziałek o 9 rano” albo „codziennie o 8 rano”, a AI zinterpretuje harmonogram. Scrapowanie działa na serwerach chmurowych Thunderbit (nie trzeba trzymać uruchomionej przeglądarki ani komputera), a dane automatycznie eksportują się do Google Sheets lub Airtable. To tworzy panel monitoringu na żywo bez żadnego zarządzania serwerem — idealne dla zespołów operacyjnych, które chcą bieżącej widoczności bez obciążenia DevOps.

Kwestie prawne i etyczne przy scrapowaniu Amazona

Nie jestem prawnikiem i nie jest to porada prawna. Ale ignorowanie aspektów prawnych w poradniku o scrapingu byłoby nieodpowiedzialne — użytkownicy forów regularnie podnoszą kwestie ToS i mają ku temu dobre powody.

robots.txt Amazona: Na 2026 rok robots.txt Amazona zawiera ponad 80 konkretnych ścieżek Disallow, ale /gp/bestsellers/ NIE jest jednoznacznie zablokowane dla standardowych User-Agentów. Jednak ponad 35 agentów AI (ClaudeBot, GPTBot, Scrapy itd.) otrzymuje zbiorcze Disallow: /. Brak konkretnego zakazu nie oznacza, że Amazon popiera scraping.

Regulamin Amazona: Amazona (zaktualizowany w maju 2025) jednoznacznie zabrania „używania jakichkolwiek zautomatyzowanych procesów lub technologii do uzyskiwania dostępu, pobierania, kopiowania lub monitorowania jakiejkolwiek części Amazon Website” bez pisemnej zgody. To nie jest teoria — Amazon w listopadzie 2025 r. za nieautoryzowany automatyczny dostęp i uzyskał wstępny nakaz sądowy.

Precedens hiQ v. LinkedIn: W sprawie (Dziewiąty Okręg, 2022) sąd uznał, że scrapowanie publicznie dostępnych danych prawdopodobnie nie narusza Computer Fraud and Abuse Act. Jednak hiQ ostatecznie zawarło ugodę i zgodziło się przestać scrapować — wygrana w sprawie CFAA nie chroni przed roszczeniami z tytułu naruszenia umowy.

Praktyczne wskazówki:

  • Scrapuj wyłącznie dane publicznie dostępne (ceny, BSR, tytuły produktów — nie PII)
  • Szanuj limity i nie przeciążaj serwerów
  • Wykorzystuj dane do legalnej analizy konkurencji
  • Skonsultuj się z własnym prawnikiem przed scrapowaniem na dużą skalę
  • Pamiętaj, że ma już kompleksowe przepisy o prywatności

Cloud scraping w Thunderbit używa standardowych wzorców żądań podobnych do przeglądarki, ale zawsze warto skonsultować zgodność z własnym doradcą prawnym.

Którą metodę wybrać? Krótki przewodnik decyzyjny

W skrócie:

  • „Uczę się Pythona i chcę weekendowy projekt.” → Metoda 1 (requests + BeautifulSoup). Nauczysz się mnóstwa o żądaniach HTTP, parsowaniu HTML i zabezpieczeniach Amazona.
  • „Muszę scrapować strony ciężkie od JavaScriptu albo sesje po zalogowaniu.” → Metoda 2 (Selenium). Jest cięższa, ale radzi sobie z dynamiczną zawartością.
  • „Uruchamiam scrapowanie produkcyjne na dużą skalę.” → Metoda 3 (Scraping API). Niech ktoś inny zarządza proxy i renderowaniem. przemawia za API poniżej 500 tys. żądań miesięcznie.
  • „Nie jestem deweloperem i chcę dane za 2 minuty.” → Metoda 4 (). Bez kodu, bez selektorów, bez utrzymania.
  • „Potrzebuję ciągłego monitoringu bez zarządzania serwerem.” → Thunderbit Scheduled Scraper. Ustaw i zapomnij.

Wnioski i najważniejsze obserwacje

Po weekendzie testów zostało mi to:

requests + BeautifulSoup świetnie nadaje się do nauki, ale ograniczenie lazy loadingu (tylko około 30 z 50 produktów) i kruche selektory CSS sprawiają, że to słaby wybór do produkcji.

Selenium rozwiązuje problem lazy loadingu i pobiera wszystkie 50 produktów ze strony, ale jest wolne, pamięciożerne i nadal wykrywalne przez botowe zabezpieczenia Amazona.

Scraping API oferują najlepszą niezawodność przy scrapowaniu na skalę produkcyjną — na Amazonie — ale koszty rosną, a kod parsujący i tak trzeba napisać.

Thunderbit zapewnił zdecydowanie najszybsze dojście do danych. AI obsługuje zmiany układu strony, lazy loading, paginację i zabezpieczenia anty-bot bez żadnej konfiguracji. Dla osób nietechnicznych lub zespołów potrzebujących cyklicznych danych bez obciążenia DevOps to najbardziej praktyczna opcja.

Najważniejsza lekcja? Zabezpieczenia Amazona przed botami i częste zmiany układu strony sprawiają, że rozwiązania bezobsługowe oszczędzają najwięcej czasu w dłuższej perspektywie. Każda godzina spędzona na debugowaniu zepsutych selectorów i rotacji proxy to godzina, której nie poświęcasz na właściwą analizę.

Chcesz wypróbować podejście no-code? daje Ci wystarczająco kredytów, aby zeskrapować kilka kategorii Best Sellers i zobaczyć efekt na własne oczy. Wolisz ścieżkę Pythonową? Powyższe przykłady kodu powinny pomóc Ci wystartować. Tak czy inaczej, będziesz mieć dane Amazon Best Sellers w arkuszu zamiast patrzeć w kartę przeglądarki.

Więcej o podejściach do web scrapingu znajdziesz w naszych poradnikach o , oraz . Możesz też obejrzeć instrukcje krok po kroku na .

Dowiedz się więcej

Spis treści

Wypróbuj Thunderbit

Pobieraj leady i inne dane w zaledwie 2 kliknięcia. Napędzane przez AI.

Pobierz Thunderbit To za darmo
Wyciągaj dane z pomocą AI
Łatwo przenieś dane do Google Sheets, Airtable lub Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week