Lo scorso weekend ho bruciato un intero barattolo di caffè cercando di estrarre i dati dalla pagina Best Sellers di Amazon in quattro modi diversi. Due hanno funzionato alla grande, uno mi ha quasi fatto bloccare l’IP e uno, letteralmente, ha richiesto un solo clic. Ecco tutto quello che ho imparato.
Amazon è un colosso del commercio online: 600 milioni di schede prodotto, oltre 310 milioni di account cliente attivi e un sistema Best Sellers Rank (BSR) che si aggiorna ogni ora. Se fai ricerche di prodotto per FBA, analisi dei prezzi della concorrenza o vuoi intercettare i trend prima dei competitor, i dati dei Best Seller valgono oro.
Ma tirare fuori quei dati da Amazon e portarli in un foglio di calcolo? È lì che la faccenda si complica. Ho provato requests + BeautifulSoup, Selenium, una scraping API e Thunderbit (il nostro AI web scraper no-code) per capire quale approccio funzioni davvero — e quali, invece, ti lascino davanti a una pagina CAPTCHA.
Cosa sono i Best Sellers di Amazon (e perché dovrebbero interessarti)?
Amazon Best Sellers Rank (BSR) è la classifica in tempo reale di Amazon che ordina i prodotti in base al volume di vendite all’interno di ogni categoria. Pensalo come una gara di popolarità aggiornata ogni ora, basata sia sui dati di vendita recenti sia su quelli storici. Amazon lo descrive così:
"Il calcolo Amazon Best Sellers si basa sulle vendite Amazon ed è aggiornato ogni ora per riflettere le vendite recenti e storiche di ogni articolo venduto su Amazon." — Amazon Seller Central
La pagina Best Sellers mostra i primi 100 prodotti per categoria, divisi in due pagine da 50 elementi ciascuna. La pagina 1 copre le posizioni #1–50, la pagina 2 le posizioni #51–100. Amazon ha confermato che visualizzazioni e recensioni non influenzano il BSR — conta solo il dato di vendita.
Chi utilizza questi dati? Venditori e-commerce alla ricerca di prodotti per FBA, team sales che costruiscono intelligence competitiva, team operations che monitorano l’andamento dei prezzi e market researcher che seguono la crescita delle categorie. Per esperienza, chi vende su Amazon o compete con Amazon finisce prima o poi per aver bisogno di questi dati in un foglio di calcolo.
Perché estrarre i Best Sellers di Amazon con Python?
La ricerca manuale dei prodotti è una perdita di tempo. Uno studio McKinsey ha rilevato che i dipendenti passano 9,3 ore a settimana solo a cercare e raccogliere informazioni. Per i team e-commerce significa ore passate a cliccare pagine Amazon, copiare nomi e prezzi e incollarli nei fogli di calcolo — per poi rifare tutto la settimana successiva.
Ecco uno sguardo rapido ai casi d’uso che rendono utile l’estrazione dei Best Sellers:
| Caso d'uso | Cosa ottieni | Chi ne beneficia |
|---|---|---|
| Ricerca prodotti FBA | Individua prodotti ad alta domanda e bassa concorrenza grazie al BSR e al numero di recensioni | Venditori Amazon, dropshipper |
| Analisi prezzi competitivi | Monitora le variazioni di prezzo dei prodotti principali della tua categoria | Team e-commerce, analisti pricing |
| Monitoraggio dei trend di mercato | Individua categorie in crescita e cambi stagionali | Product manager, market researcher |
| Lead generation | Crea liste di brand best seller e delle loro linee prodotto | Team sales, outreach B2B |
| Analisi competitor | Confronta i tuoi prodotti con i leader di categoria | Brand manager, team strategy |
Il ritorno sull’investimento è concreto: un sondaggio Salesforce su 2.700 professionisti del commercio ha rilevato che gli strumenti AI fanno risparmiare in media 6,4 ore a settimana ai professionisti e-commerce. Inoltre, i venditori che usano il monitoraggio automatico dei prezzi conquistano la Buy Box il 67% delle volte contro il 42% di chi lo fa manualmente — un aumento delle vendite del 37% grazie a reazioni più rapide alle variazioni di prezzo.
4 modi per estrarre i Best Sellers di Amazon con Python: confronto rapido
Prima di entrare nei tutorial passo per passo, ecco il confronto affiancato che avrei voluto avere prima di iniziare i test. Questa tabella ti aiuta a scegliere il metodo giusto in base al tuo caso:
| Criterio | requests + BS4 | Selenium | Scraping API (es. Scrape.do) | Thunderbit (No-Code) |
|---|---|---|---|---|
| Difficoltà di configurazione | Media | Alta (driver, browser) | Bassa (API key) | Molto bassa (estensione Chrome) |
| Gestione del lazy loading | No | Sì (simulazione scroll) | Sì (HTML renderizzato) | Sì (l'AI gestisce il rendering) |
| Resistenza anti-bot | Bassa (ban IP) | Media (rilevabile) | Alta (proxy rotanti) | Alta (cloud + browser mode) |
| Manutenzione | Alta (i selettori si rompono) | Alta (aggiornamenti driver + selettori) | Bassa | Molto bassa (l'AI si adatta ai cambiamenti di layout) |
| Costo | Gratis | Gratis | A pagamento (per richiesta) | Piano free + piani a pagamento |
| Ideale per | Estrazioni una tantum, apprendimento | Pagine ricche di JS, accesso con login | Scalabilità / produzione | Non sviluppatori, ricerche rapide, monitoraggio ricorrente |
Se vuoi imparare le basi dello scraping in Python, parti dal Metodo 1 o 2. Se ti serve affidabilità in produzione e su larga scala, scegli il Metodo 3. Se vuoi ottenere risultati con un solo clic senza scrivere codice, vai direttamente al Metodo 4.
Prima di iniziare
- Difficoltà: Da principiante a intermedio (a seconda del metodo)
- Tempo richiesto: Circa 15 minuti per Thunderbit, circa 45 minuti per i metodi Python
- Cosa ti serve: Python 3.8+ (per i Metodi 1–3), browser Chrome, estensione Thunderbit per Chrome (per il Metodo 4) e l’URL di una categoria Best Sellers di Amazon
Metodo 1: estrarre i Best Sellers di Amazon con requests + BeautifulSoup
Questo è l’approccio leggero e adatto ai principianti: niente automazione del browser, solo richieste HTTP e parsing dell’HTML. Ed è anche quello che mi ha insegnato di più sulle difese anti-scraping di Amazon.
Passo 1: prepara l’ambiente
Installa i pacchetti necessari:
pip install requests beautifulsoup4 pandas
Poi importa le librerie:
import requests
from bs4 import BeautifulSoup
import pandas as pd
import random
import time
Passo 2: invia una richiesta con header realistici
Amazon blocca le richieste che sembrano provenire da bot. La difesa più semplice è impostare un header User-Agent che imiti un browser reale. Ecco uno snippet con un pool di User-Agent aggiornati e credibili (fonte Geekflare, marzo 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) # Dovrebbe essere 200
Se vedi uno status code 200, è andata. Se compare 503 o vieni reindirizzato a una pagina CAPTCHA, Amazon ha segnalato la tua richiesta.
Passo 3: analizza i dati dei prodotti con BeautifulSoup
Ispeziona l’HTML della pagina Amazon con gli strumenti per sviluppatori del browser (clic destro → Ispeziona). I contenitori dei prodotti usano l’ID gridItemRoot. Dentro ogni contenitore trovi nome prodotto, prezzo, valutazione e 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})
Attenzione: i nomi delle classi con prefisso
_cDEzb_sono hash generati dai CSS module che Amazon rigenera periodicamente. L’IDgridItemRoote la classea-link-normalsono più stabili, ma verifica sempre i selettori con DevTools prima di lanciare lo scraper.
Passo 4: esporta in CSV
df = pd.DataFrame(products)
df.to_csv("amazon_best_sellers.csv", index=False)
print(f"Estratti {len(products)} prodotti")
Cosa aspettarsi — e cosa va storto
Nel mio test questo metodo ha restituito circa 30 prodotti invece di 50. Non è un bug del codice: è il lazy loading di Amazon. Solo circa 30 prodotti vengono renderizzati al caricamento iniziale della pagina; gli altri compaiono dopo lo scroll, cosa che richiede l’esecuzione di JavaScript che requests non può gestire.
Altri limiti:
- I ban IP arrivano in fretta senza rotazione dei proxy (mi hanno bloccato dopo circa 15 richieste consecutive)
- I selettori CSS si rompono quando Amazon aggiorna il layout della pagina — e lo fa spesso
- Nessuna gestione della paginazione pronta all’uso
Per imparare lo scraping in Python, questo approccio è ottimo. Per un uso in produzione, però, è fragile.
Metodo 2: estrarre i Best Sellers di Amazon con Selenium
Selenium risolve il problema del lazy loading eseguendo un browser reale — più pesante da configurare, ma cattura tutti e 50 i prodotti per pagina.
Passo 1: installa Selenium
pip install selenium pandas
Buone notizie: da Selenium 4.6 in poi non serve più webdriver-manager. Selenium Manager gestisce automaticamente il download dei driver.
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)
Il flag --headless=new (introdotto in Chrome 109+) usa la stessa pipeline di rendering di Chrome con interfaccia, rendendo più difficile per Amazon rilevare l’automazione.
Passo 2: scorri oltre il lazy loading
Questo è il passaggio che rende Selenium utile nonostante il setup più complesso. I Best Sellers di Amazon caricano solo circa 30 prodotti all’inizio: il resto appare dopo lo 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)
Dopo lo scroll, tutti e 50 i prodotti dovrebbero essere presenti nel DOM. Nel mio caso, 5 scroll con un delay di 2 secondi sono stati sufficienti, ma potresti dover regolare i valori in base alla velocità della connessione.
Passo 3: estrai i dati dei prodotti
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})
Avvolgere ogni estrazione in un blocco try/except è importante: alcuni prodotti possono essere esauriti o avere campi mancanti, e non vuoi che un singolo elemento comprometta l’intera estrazione.
Passo 4: gestisci la paginazione
Amazon divide i 100 Best Sellers in due pagine con strutture URL diverse:
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)
# ... estrai i prodotti come sopra ...
all_products.extend(products)
driver.quit()
Cosa aspettarsi
Nel mio test, Selenium ha catturato tutti e 50 i prodotti per pagina — una chiara vittoria rispetto a requests + BS4. Il rovescio della medaglia: ci sono voluti circa 45 secondi per pagina (compresi i ritardi dello scroll) e sono stato comunque segnalato dopo averlo eseguito troppe volte senza rotazione dei proxy. Selenium è inoltre rilevabile dai sistemi anti-bot di Amazon anche con i flag di anti-detection — per operazioni serie su larga scala servono ulteriori misure (vedi il playbook anti-ban più sotto).
Altri punti critici:
- I mismatch tra versioni di WebDriver capitano ancora ogni tanto, anche se Selenium Manager li ha resi molto meno frequenti
- I selettori CSS vanno aggiornati ogni volta che Amazon modifica il DOM
- L’uso di memoria è elevato: ogni istanza del browser consuma circa 200–400MB di RAM
Metodo 3: estrarre i Best Sellers di Amazon con una Scraping API
Le scraping API sono l’approccio “lascia fare a qualcun altro il lavoro pesante”. Servizi come Scrape.do, Oxylabs e ScrapingBee gestiscono rotazione dei proxy, rendering JavaScript e protezioni anti-bot: tu invii un URL e ricevi HTML o JSON.
Come funziona
Invii l’URL target all’endpoint API. L’API renderizza la pagina usando un browser reale sulla propria infrastruttura, ruota i proxy, gestisce i CAPTCHA e restituisce HTML pulito. Poi analizzi l’HTML ricevuto con BeautifulSoup, come al solito.
Passo 1: invia una richiesta tramite API
Ecco un esempio con Scrape.do (i prezzi partono da 29$/mese per 150.000 crediti; 1 credito = 1 richiesta, indipendentemente dal rendering):
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")
Da qui in poi il parsing è identico al Metodo 1: stessi selettori, stessa logica di estrazione.
Controllo reale sui prezzi
Ecco cosa addebitano le principali API per 1.000 richieste Amazon, al miglior prezzo disponibile:
| Provider | Costo per 1.000 richieste | Note |
|---|---|---|
| Scrape.do | ~0,19$ | Tariffa fissa, nessun moltiplicatore di crediti |
| Oxylabs | ~1,80$ | Moltiplicatore x5 per il rendering JS |
| ScrapingBee | ~4,90$ | Moltiplicatori da x5 a x25 per le funzioni premium |
| Bright Data | 5,00$+ | Dati più completi (686 campi/prodotto) ma anche il più lento (~66 sec/richiesta) |
Pro e contro
Pro: affidabilità elevata (~99% di successo su Amazon per i provider migliori), niente manutenzione dei driver, gestione automatica dell’anti-bot, buona scalabilità.
Contro: costo per richiesta (che cresce rapidamente su larga scala), serve comunque scrivere il codice di parsing, e resti vulnerabile ai cambiamenti dei selettori CSS. Per 100.000 pagine al mese, il confronto dei costi diventa molto evidente: sviluppare internamente costa circa $1,98M in tre anni contro $332K con un provider API — un risparmio del 71%.
Il punto di pareggio è in genere tra 500K e 1M richieste al mese. Sotto quella soglia, il risparmio di tempo offerto dalle API supera di gran lunga il costo.
Metodo 4: estrarre i Best Sellers di Amazon con Thunderbit (senza Python)
Dichiarazione trasparente: lavoro in Thunderbit, quindi prendi questa sezione con questo contesto. Detto ciò, ho davvero testato tutti e quattro i metodi uno dopo l’altro, e la differenza nel time-to-data è stata impressionante.
Thunderbit è un AI web scraper che funziona come estensione Chrome. L’idea di base: invece di scrivere selettori CSS o codice Python, l’AI legge la pagina e capisce quali dati estrarre. Per i Best Sellers di Amazon, Thunderbit ha template già pronti che funzionano con un solo clic.
Passo 1: installa l’estensione Thunderbit per Chrome
Vai al Chrome Web Store e fai clic su “Aggiungi a Chrome”. Crea un account gratuito: il piano free offre crediti sufficienti per fare una prova.
Passo 2: apri la pagina Best Sellers di Amazon
Apri in Chrome qualsiasi pagina di categoria Best Sellers di Amazon. Per esempio:
https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/
Passo 3: fai clic su “One Click Extract”
Apri la sidebar di Thunderbit e fai clic su “One Click Extract”. L’AI analizza la struttura della pagina e individua le colonne: nome prodotto, prezzo, valutazione, URL immagine, venditore, URL prodotto e posizione in classifica. Nel mio test ha identificato correttamente tutti i campi rilevanti in circa 3 secondi.

Puoi rinominare, rimuovere o aggiungere colonne. Puoi anche aggiungere prompt AI personalizzati per ogni campo — per esempio, “classifica come Electronics/Apparel/Home” per inserire un tag categoria in ogni prodotto.
Passo 4: fai clic su “Scrape”
Premi il pulsante “Scrape”. Thunderbit compila una tabella strutturata con tutti i dati dei prodotti presenti nella pagina. In modalità cloud, può elaborare fino a 50 pagine in parallelo, gestendo automaticamente lazy loading e paginazione.
Passo 5: esporta gratis
Fai clic su “Export” e scegli la destinazione: Excel, Google Sheets, Airtable o Notion. Le esportazioni sono gratuite su tutti i piani — nessun costo nascosto.

L’intero processo mi ha richiesto circa 90 secondi, dall’apertura della pagina al foglio di calcolo completo. Per confronto, il Metodo 1 ha richiesto circa 20 minuti (incluso il debug del lazy loading), il Metodo 2 circa 35 minuti (inclusa la configurazione di Selenium) e il Metodo 3 circa 15 minuti (inclusa la creazione dell’account API).
Perché Thunderbit funziona bene con Amazon
Poiché l’AI rilegge la pagina ogni volta da zero, si adatta automaticamente ai cambiamenti di layout — niente selettori CSS da mantenere. Questo risolve direttamente la lamentela più comune nei forum sullo scraping: “un web scraper base non basta, devi aggiungere mille controlli per i cambi degli elementi”. Quando Amazon modifica il DOM (cosa che accade spesso), non devi aggiornare nulla.
La modalità di scraping cloud gestisce in modo trasparente rotazione dei proxy, rendering e protezioni anti-bot. Per chi cerca una soluzione che “funzioni e basta”, questo elimina completamente il problema dei ban.
Evita la manutenzione dei selettori Quando Amazon cambia il markup, i selettori BeautifulSoup si rompono. L'AI di Thunderbit rilegge la pagina a ogni esecuzione e reidentifica i campi. Get Started Free
Il playbook anti-ban: come evitare di essere bloccati da Amazon
Il sistema anti-bot di Amazon è aggressivo. Durante i test il mio IP è stato temporaneamente bloccato, e gli utenti dei forum riportano la stessa cosa: “errori ovunque, Amazon ha persino iniziato a reindirizzarmi alla homepage”. Se scegli la strada Python (Metodi 1–3), questa sezione è fondamentale.
Ecco una strategia a più livelli, dalla più semplice alla più avanzata:
1. Ruota gli User-Agent
Inviare ripetutamente lo stesso User-Agent è un segnale sospetto. Usa il pool di 5+ stringhe dell’esempio nel Metodo 1 e selezionane una in modo casuale per ogni richiesta:
headers = {"User-Agent": random.choice(USER_AGENTS)}
2. Aggiungi ritardi casuali tra le richieste
I ritardi fissi sono individuabili (creano pattern). Quelli casuali sono più sicuri:
time.sleep(random.uniform(2, 5))
Ho visto che intervalli casuali tra 2 e 5 secondi mi tenevano sotto il radar per piccoli batch (meno di 50 richieste). Per esecuzioni più grandi, meglio salire a 3–7 secondi.
3. Usa la rotazione dei proxy
Questo è il punto chiave. I benchmark di Proxyway mostrano che i proxy residential raggiungono in media un successo di circa il 94% su Amazon, contro il 59% dei datacenter proxy — una differenza di 35 punti percentuali. Lo stack di rilevamento di Amazon include fingerprinting TLS, analisi comportamentale e limiti per IP, quindi gli IP standard dei datacenter vengono segnalati in pochi secondi.
I proxy residential costano di più (2–12$ per GB a seconda del provider), ma sono molto più affidabili. Esempio di codice:
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. Rafforza il fingerprint del browser (Selenium)
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
# Dopo l'inizializzazione del driver, rimuovi il flag navigator.webdriver
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
})
5. Gestisci sessioni e cookie
Mantenere i cookie tra le richieste fa sembrare il tuo scraper una vera sessione utente:
session = requests.Session()
# Visita prima la homepage per ottenere cookie realistici
session.get("https://www.amazon.com", headers=headers)
time.sleep(2)
# Poi estrai la pagina target
response = session.get(target_url, headers=headers)
6. Quando saltare del tutto il problema
Per chi non vuole gestire nulla di tutto questo, lo scraping cloud di Thunderbit si occupa in modo trasparente di rotazione proxy, rendering e protezioni anti-bot. Anche le scraping API gestiscono gran parte di queste complessità già pronte. Per esperienza, il tempo speso a risolvere problemi anti-ban supera spesso quello richiesto per scrivere il codice di scraping vero e proprio — quindi l’approccio “funziona e basta” ha un ROI concreto.
Arricchimento delle subpage: estrarre le pagine dettaglio prodotto per dati più ricchi
La pagina listing dei Best Sellers mostra solo informazioni di base — titolo, prezzo, valutazione, rank. Ma il vero valore per la ricerca FBA è nelle singole pagine dettaglio prodotto. Ecco cosa ti perdi se estrai solo la listing:
| Campo | Pagina listing | Pagina dettaglio prodotto |
|---|---|---|
| Nome prodotto | ✅ | ✅ |
| Prezzo | ✅ | ✅ |
| Valutazione | ✅ | ✅ |
| Rank BSR | ✅ | ✅ (con ranking per sotto-categoria) |
| Brand | ❌ | ✅ |
| ASIN | ❌ | ✅ |
| Data di prima disponibilità | ❌ | ✅ |
| Dimensioni/Peso | ❌ | ✅ |
| Numero di venditori | ❌ | ✅ |
| Caratteristiche in bullet point | ❌ | ✅ |
| Proprietario della Buy Box | ❌ | ✅ |
Il campo “Data di prima disponibilità” è particolarmente prezioso: ti dice da quanto tempo il prodotto è sul mercato, un segnale chiave per l’analisi della concorrenza. E sapere quanti venditori ci sono e chi possiede la Buy Box aiuta a valutare se valga la pena entrare in una nicchia (se Amazon detiene oltre il 30% della Buy Box, competere è estremamente difficile).
Approccio Python: iterare sugli URL dei prodotti
Dopo aver raccolto gli URL dei prodotti dalla pagina listing, cicla su ciascuno con una pausa:
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")
# Estrai il brand
brand_tag = detail_soup.find("a", id="bylineInfo")
product["Brand"] = brand_tag.get_text(strip=True) if brand_tag else "N/A"
# Estrai ASIN dal sorgente pagina o dall'URL
# Estrai la data di prima disponibilità dalla tabella dei dettagli prodotto
# ... campi aggiuntivi ...
Avviso importante: visitare 100 pagine prodotto singole aumenta molto il rischio di ban. Metti in conto rotazione proxy e pause più lunghe.
Approccio Thunderbit: scraping delle subpage con un clic
Dopo aver estratto la pagina listing in una tabella, fai clic su “Scrape Subpages” in Thunderbit. L’AI visita ogni URL prodotto e arricchisce automaticamente la tabella con colonne aggiuntive — brand, ASIN, specifiche, caratteristiche. Nessun codice extra, nessun selettore, nessuna configurazione. È particolarmente utile per i team e-commerce che hanno bisogno di una visione completa per decisioni di sourcing ma non vogliono scrivere e mantenere un parser per le pagine dettaglio.
Automatizzare estrazioni ricorrenti: monitorare i Best Sellers nel tempo
Una singola estrazione è utile, ma il vero vantaggio competitivo arriva dal monitoraggio continuativo. Seguire quali prodotti salgono o scendono, cogliere i trend in anticipo e osservare le variazioni di prezzo nel corso di settimane o mesi: è questo che distingue una ricerca occasionale da una decisione davvero data-driven.
Approccio Python: pianificazione con cron
Su Linux/Mac puoi pianificare lo script Python con cron. Ecco la riga crontab per un’estrazione giornaliera alle 8:00:
0 8 * * * /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1
Per un’estrazione settimanale ogni lunedì alle 9:00:
0 9 * * 1 /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1
Su Windows puoi usare Task Scheduler per ottenere lo stesso risultato. Se vuoi una pianificazione sempre attiva senza tenere il laptop acceso, puoi deployare su un VPS o su AWS Lambda — ma questo aggiunge complessità infrastrutturale.
Aggiungi logging e notifiche di errore per intercettare eventuali run fallite. Non c’è niente di peggio che scoprire due settimane dopo che lo scraper si era rotto in silenzio.
Approccio Thunderbit: Scheduled Scraper in linguaggio naturale
Lo Scheduled Scraper di Thunderbit ti permette di descrivere l’intervallo in linguaggio naturale: scrivi “ogni lunedì alle 9” o “ogni giorno alle 8” e l’AI interpreta la pianificazione. Le estrazioni vengono eseguite sui server cloud di Thunderbit (non serve tenere aperto browser o computer) e i dati vengono esportati automaticamente su Google Sheets o Airtable. Il risultato è una dashboard di monitoraggio live senza gestione server: ideale per i team operations che vogliono visibilità continua senza il peso del DevOps.
Aspetti legali ed etici dello scraping su Amazon
Non sono un avvocato, e questo non è un consiglio legale. Ma ignorare il quadro normativo in un tutorial di scraping sarebbe irresponsabile — gli utenti dei forum sollevano esplicitamente dubbi sui Termini di servizio, e a ragione.
robots.txt di Amazon: al 2026, il robots.txt di Amazon contiene oltre 80 percorsi specifici Disallow, ma /gp/bestsellers/ NON è esplicitamente bloccato per gli user agent standard. Tuttavia, oltre 35 user agent dedicati all’AI (ClaudeBot, GPTBot, Scrapy, ecc.) ricevono un Disallow: / generalizzato. L’assenza di un blocco specifico non significa che Amazon approvi lo scraping.
Termini di servizio di Amazon: le Conditions of Use di Amazon (aggiornate a maggio 2025) vietano esplicitamente “l’uso di qualsiasi processo o tecnologia automatizzata per accedere, acquisire, copiare o monitorare qualsiasi parte del sito Amazon” senza autorizzazione scritta. Non è teoria: nel novembre 2025 Amazon ha citato in giudizio Perplexity AI per accesso automatizzato non autorizzato e ha ottenuto un’ingiunzione preliminare.
Il precedente hiQ v. LinkedIn: in hiQ Labs v. LinkedIn (Nono Circuito, 2022), la corte ha stabilito che lo scraping di dati pubblicamente disponibili probabilmente non viola il Computer Fraud and Abuse Act. Ma hiQ ha poi raggiunto un accordo e smesso di fare scraping: vincere sul CFAA non protegge da azioni per violazione contrattuale.
Linee guida pratiche:
- Estrarre solo dati pubblicamente disponibili (prezzi, BSR, titoli prodotto — non dati personali)
- Rispettare i rate limit e non sovraccaricare i server
- Usare i dati per finalità lecite di intelligence competitiva
- Consultare il proprio legale prima di fare scraping su larga scala
- Tenere presente che oltre 20 stati USA hanno oggi una normativa completa sulla privacy
Lo scraping cloud di Thunderbit usa pattern di richieste standard simili a quelli di un browser, ma è sempre bene verificare la conformità con il proprio consulente legale.
Per questo non serve Python Se il tuo obiettivo è un foglio di calcolo e non una pipeline, bastano un clic e il gioco è fatto. Esporta direttamente in Excel, Google Sheets, Airtable o Notion. Get Started Free
Quale metodo dovresti usare? Guida rapida alla scelta
In breve:
- “Sto imparando Python e voglio un progetto per il weekend.” → Metodo 1 (requests + BeautifulSoup). Imparerai tantissimo su richieste HTTP, parsing HTML e difese anti-bot di Amazon.
- “Devo estrarre pagine ricche di JavaScript o sessioni con login.” → Metodo 2 (Selenium). È più pesante, ma gestisce i contenuti dinamici.
- “Sto eseguendo scraping di produzione su larga scala.” → Metodo 3 (Scraping API). Lascia a qualcun altro la gestione di proxy e rendering. Il costo totale di proprietà favorisce le API sotto le 500K richieste/mese.
- “Non sono uno sviluppatore e voglio i dati in 2 minuti.” → Metodo 4 (Thunderbit). Nessun codice, nessun selettore, nessuna manutenzione.
- “Mi serve monitoraggio continuo senza gestire server.” → Thunderbit Scheduled Scraper. Impostalo una volta e poi dimenticatene.
Prova Thunderbit per i Best Sellers di Amazon Get Started Free
Conclusione e takeaway principali
Dopo un weekend di test, ecco cosa è emerso davvero:
requests + BeautifulSoup è perfetto per imparare, ma il limite del lazy loading (solo circa 30 prodotti su 50) e i selettori CSS fragili lo rendono poco pratico per la produzione.
Selenium risolve il problema del lazy loading e cattura tutti e 50 i prodotti per pagina, ma è lento, consuma molta memoria ed è ancora rilevabile dalle difese anti-bot di Amazon.
Le scraping API offrono la migliore affidabilità per lo scraping su scala produttiva — circa 99% di successo su Amazon — ma i costi crescono e il codice di parsing serve comunque.
Thunderbit è stato nettamente il più veloce in termini di time-to-data. L’AI gestisce cambiamenti di layout, lazy loading, paginazione e misure anti-bot senza alcuna configurazione. Per utenti non tecnici o team che hanno bisogno di dati ricorrenti senza il peso del DevOps, è l’opzione più pratica.
La lezione più grande? Le difese anti-bot di Amazon e i frequenti cambi di layout fanno sì che le soluzioni senza manutenzione facciano risparmiare più tempo nel lungo periodo. Ogni ora spesa a debuggare selettori rotti e ruotare proxy è un’ora sottratta all’analisi vera.
Vuoi provare l’approccio no-code? Il piano gratuito di Thunderbit ti offre crediti sufficienti per estrarre alcune categorie Best Sellers e vedere i risultati con i tuoi occhi. Preferisci la strada Python? Gli esempi di codice sopra ti permettono di partire subito. In ogni caso, avrai i dati dei Best Seller di Amazon in un foglio di calcolo invece di fissare una scheda del browser.
Per approfondire altri approcci allo scraping, consulta le nostre guide su come estrarre prodotti e recensioni da Amazon, come estrarre dati da un sito web in Excel e i migliori AI web scraper. Puoi anche guardare le guide passo per passo sul canale YouTube di Thunderbit.
Scopri di più


