Cómo extraer Amazon Best Sellers con Python: 4 métodos que probé

Última actualización: August 21, 2026
Cómo extraer Amazon Best Sellers con Python: 4 métodos que probé

El fin de semana pasado me tomé una cafetera entera intentando extraer la página de Best Sellers de Amazon de cuatro formas distintas. Dos me salieron muy bien, una casi me hace perder la IP y otra, literalmente, me tomó un solo clic. Aquí te cuento todo lo que aprendí.

Amazon es un monstruo del e-commerce: 600 millones de fichas de producto, más de 310 millones de cuentas activas de clientes y un sistema de Best Sellers Rank (BSR) que se actualiza cada hora. Si haces research de productos para FBA, análisis de precios de la competencia o simplemente quieres pillar tendencias antes que tus rivales, los datos de Best Sellers son oro puro.

Pero sacar esos datos de Amazon y llevarlos a una hoja de cálculo, ¿cómo se hace? Ahí es donde la cosa se pone interesante. Probé requests + BeautifulSoup, Selenium, una API de scraping y Thunderbit (nuestro AI web scraper sin código) para ver qué método realmente funciona y cuál te deja mirando una página de CAPTCHA.

¿Qué son los Amazon Best Sellers y por qué deberían importarte?

Amazon Best Sellers Rank (BSR) es el ranking en tiempo real de Amazon que ordena productos según su volumen de ventas dentro de cada categoría. Piensa en ello como una competición de popularidad, actualizada cada hora, basada tanto en datos de ventas recientes como históricos. Amazon lo describe así:

"El cálculo de Amazon Best Sellers se basa en las ventas de Amazon y se actualiza cada hora para reflejar las ventas recientes e históricas de cada artículo vendido en Amazon." — Amazon Seller Central

La página de Best Sellers muestra los 100 productos más vendidos por categoría, repartidos en dos páginas de 50 cada una. La página 1 cubre del puesto #1 al #50, y la página 2 del #51 al #100. Amazon ha confirmado que las visitas a la página y las reseñas de clientes NO afectan al BSR: depende únicamente de las ventas.

¿A quién le sirve este dato? A vendedores de e-commerce que buscan productos para FBA, a equipos comerciales que montan inteligencia competitiva, a equipos de operaciones que vigilan tendencias de precios y a analistas de mercado que siguen el crecimiento de categorías. Por experiencia, cualquiera que venda en Amazon o compita con Amazon termina necesitando estos datos en una hoja de cálculo.

¿Por qué extraer Amazon Best Sellers con Python?

La investigación manual de productos te hace perder un montón de tiempo. Un estudio de McKinsey encontró que los empleados pasan 9,3 horas por semana solo buscando y reuniendo información. Para los equipos de e-commerce, eso se traduce en horas haciendo clic por páginas de Amazon, copiando nombres y precios, y pegándolos en hojas de cálculo, para luego repetir todo la semana siguiente.

Aquí tienes un vistazo rápido a los casos de uso que hacen que extraer Best Sellers valga la pena:

Caso de usoQué obtienesQuién se beneficia
Investigación de productos FBAIdentificar productos con alta demanda y baja competencia mediante el BSR y el número de reseñasVendedores de Amazon, dropshippers
Precios competitivosSeguir los cambios de precio de los productos principales de tu categoríaEquipos de e-commerce, analistas de precios
Monitoreo de tendencias de mercadoDetectar categorías en alza y cambios estacionalesProduct managers, analistas de mercado
Generación de leadsCrear listas de marcas más vendidas y sus líneas de productosEquipos de ventas, prospección B2B
Análisis de la competenciaComparar tus productos con los líderes de la categoríaBrand managers, equipos de estrategia

El ROI es real: una encuesta de Salesforce a 2.700 profesionales del comercio encontró que las herramientas de IA ahorran a los profesionales de e-commerce un promedio de 6,4 horas por semana. Y los vendedores que usan seguimiento automatizado de precios mantienen el Buy Box el 67% del tiempo, frente al 42% de quienes lo hacen manualmente: un aumento de ventas del 37% impulsado por reaccionar más rápido a los cambios de precio.

4 formas de extraer Amazon Best Sellers con Python: comparativa rápida

Antes de entrar en los tutoriales paso a paso, aquí tienes la comparación lado a lado que me habría encantado tener antes de empezar a probar. Esta tabla te ayudará a elegir el método adecuado para tu caso:

Criteriorequests + BS4SeleniumAPI de scraping (p. ej., Scrape.do)Thunderbit (sin código)
Dificultad de configuraciónMediaAlta (driver, navegador)Baja (API key)Muy baja (extensión de Chrome)
Maneja lazy loadingNoSí (simulación de scroll)Sí (HTML renderizado)Sí (la IA se encarga del renderizado)
Resistencia anti-botBaja (bloqueos de IP)Media (detectable)Alta (proxies rotativos)Alta (modo nube + navegador)
MantenimientoAlto (se rompen selectores)Alto (actualizaciones del driver + selectores)BajoMuy bajo (la IA se adapta a cambios de layout)
CosteGratisGratisDe pago (por solicitud)Plan gratuito + planes de pago
Ideal paraExtracciones puntuales, aprendizajePáginas con mucho JS, inicio de sesiónEscala / producciónNo técnicos, investigación rápida, monitorización recurrente

Si quieres aprender los fundamentos del scraping con Python, empieza con el método 1 o 2. Si necesitas fiabilidad a escala de producción, ve con el método 3. Si quieres resultados con un solo clic sin escribir código, salta directamente al método 4.

Antes de empezar

  • Dificultad: Principiante a intermedio (según el método)
  • Tiempo necesario: ~15 minutos con Thunderbit, ~45 minutos con métodos en Python
  • Lo que necesitas: Python 3.8+ (para los métodos 1–3), navegador Chrome, extensión de Chrome de Thunderbit (para el método 4) y la URL de una categoría de Amazon Best Sellers

Método 1: extraer Amazon Best Sellers con requests + BeautifulSoup

Este es el enfoque ligero y apto para principiantes: sin automatización de navegador, solo peticiones HTTP y análisis de HTML. También fue el método que más me enseñó sobre las defensas anti-scraping de Amazon.

Paso 1: prepara tu entorno

Instala los paquetes necesarios:

pip install requests beautifulsoup4 pandas

Luego configura los imports:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import random
import time

Paso 2: envía una solicitud con headers realistas

Amazon bloquea las solicitudes que parecen venir de bots. La defensa más básica es un header User-Agent que imita a un navegador real. Aquí tienes un snippet con un conjunto de cadenas User-Agent actuales y realistas (tomadas de Geekflare, marzo de 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)  # Debería ser 200

Si ves un código de estado 200, vas bien. Si ves 503 o te redirige a una página CAPTCHA, Amazon ha detectado tu solicitud.

Paso 3: analiza los datos de producto con BeautifulSoup

Inspecciona el HTML de la página de Amazon con las herramientas de desarrollo de tu navegador (clic derecho → Inspeccionar). Los contenedores de producto usan el ID gridItemRoot. Dentro de cada contenedor encontrarás el nombre del producto, el precio, la valoración y la 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})

Advertencia: Los nombres de clase con prefijo _cDEzb_ son hashes de módulos CSS que Amazon regenera periódicamente. El ID gridItemRoot y la clase a-link-normal son más estables, pero conviene comprobar siempre los selectores con DevTools antes de ejecutar tu scraper.

Paso 4: exporta a CSV

df = pd.DataFrame(products)
df.to_csv("amazon_best_sellers.csv", index=False)
print(f"Se extrajeron {len(products)} productos")

Qué esperar — y qué sale mal

En mi prueba, este método devolvió unos 30 productos en lugar de 50. No es un fallo del código: es el lazy loading de Amazon. Solo se renderizan inicialmente unos 30 productos; el resto aparece al hacer scroll, algo que requests no puede manejar porque no ejecuta JavaScript.

Otras limitaciones:

  • Los bloqueos de IP llegan rápido si no usas rotación de proxies (me bloquearon después de unas 15 solicitudes en rápida sucesión)
  • Los selectores CSS se rompen cuando Amazon actualiza el diseño de la página, y lo hacen con frecuencia
  • No hay manejo de paginación listo para usar

Para aprender scraping en Python, este enfoque es genial. Para uso en producción, es frágil.

Método 2: extraer Amazon Best Sellers con Selenium

Selenium resuelve el problema del lazy loading ejecutando un navegador real: requiere más configuración, pero captura los 50 productos completos por página.

Paso 1: instala Selenium

pip install selenium pandas

Buena noticia: desde Selenium 4.6+, ya no necesitas webdriver-manager. Selenium Manager se encarga automáticamente de descargar los drivers.

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)

La bandera --headless=new (introducida en Chrome 109+) usa la misma canalización de renderizado que Chrome con interfaz, lo que hace que Amazon lo detecte con más dificultad.

Paso 2: desplázate más allá del lazy loading

Este es el paso que hace que Selenium merezca la pena. Amazon Best Sellers solo carga inicialmente unos 30 productos; el resto aparece después de hacer 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)

Después de desplazarte, los 50 productos deberían estar renderizados en el DOM. Encontré que 5 desplazamientos con tecla Page Down y una pausa de 2 segundos eran suficientes, aunque quizá tengas que ajustarlo según la velocidad de tu conexión.

Paso 3: extrae los datos del producto

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})

Es importante envolver cada extracción en try/except: algunos productos pueden no tener stock o carecer de ciertos campos, y no querrás que un solo elemento defectuoso rompa toda la extracción.

Paso 4: maneja la paginación

Amazon divide los 100 Best Sellers en dos páginas con estructuras de URL distintas:

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)
    # ... extrae los productos como arriba ...
    all_products.extend(products)

driver.quit()

Qué esperar

En mi prueba, Selenium capturó los 50 productos por página: una victoria clara frente a requests + BS4. La desventaja: tardó unos 45 segundos por página (incluyendo las pausas de scroll) y aun así me marcaron después de ejecutarlo demasiadas veces sin rotación de proxies. Amazon también puede detectar Selenium con sus defensas anti-bot, incluso usando banderas anti-detección; para una escala seria, necesitarás medidas adicionales (mira el playbook anti-bloqueo más abajo).

Otros problemas:

  • Aún pueden darse desajustes entre versiones de WebDriver, aunque Selenium Manager lo ha reducido mucho
  • Los selectores CSS necesitan actualizarse cada vez que Amazon cambia el DOM
  • El consumo de memoria es alto: cada instancia del navegador consume entre 200 y 400 MB de RAM

Método 3: extraer Amazon Best Sellers con una API de scraping

Las APIs de scraping son el enfoque de "que se encargue otro de lo difícil". Servicios como Scrape.do, Oxylabs y ScrapingBee gestionan la rotación de proxies, el renderizado de JavaScript y las medidas anti-bot; tú solo envías una URL y recibes HTML o JSON.

Cómo funciona

Envías la URL de destino al endpoint de la API. La API renderiza la página usando un navegador real en su infraestructura, rota proxies, gestiona CAPTCHA y devuelve HTML limpio. Después analizas ese HTML devuelto con BeautifulSoup como siempre.

Paso 1: envía una solicitud a través de la API

Aquí tienes un ejemplo usando Scrape.do (los precios empiezan en $29/mes por 150.000 créditos, 1 crédito = 1 solicitud independientemente del renderizado):

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")

A partir de aquí, el análisis es idéntico al del Método 1: mismos selectores, misma lógica de extracción.

Revisión de precios realista

Esto es lo que cobran las principales APIs por cada 1.000 solicitudes a Amazon en su mejor tarifa disponible:

ProveedorCoste por 1.000 solicitudesNotas
Scrape.do~$0,19Tarifa fija, sin multiplicadores de créditos
Oxylabs~$1,80Multiplicador x5 para renderizado JS
ScrapingBee~$4,90Multiplicadores x5 a x25 para funciones premium
Bright Data~$5,00+Datos más completos (686 campos/producto) pero más lento (~66 s/solicitud)

Pros y contras

Pros: Alta fiabilidad (~99% de tasa de éxito en Amazon para los proveedores principales), sin mantenimiento de drivers, maneja el anti-bot automáticamente y escala bien.

Contras: Pagas por solicitud y los costes se disparan a gran escala, sigues necesitando escribir código de parsing y aún eres vulnerable a cambios en los selectores CSS. Para 100.000 páginas al mes, la comparación total de costes es contundente: construirlo internamente cuesta aproximadamente $1,98M en tres años frente a $332K con un proveedor de API, un ahorro del 71%.

El punto de equilibrio suele estar entre 500K y 1M solicitudes al mes. Por debajo de eso, el ahorro de tiempo de una API compensa con creces el coste.

Método 4: extraer Amazon Best Sellers con Thunderbit (sin Python)

Transparencia total: trabajo en Thunderbit, así que toma esta sección con ese contexto. Dicho esto, probé de verdad los cuatro métodos uno detrás de otro, y la diferencia en velocidad para obtener los datos fue enorme.

Thunderbit es un AI web scraper que funciona como extensión de Chrome. La idea central es simple: en lugar de escribir selectores CSS o código Python, la IA lee la página y decide qué datos extraer. En el caso concreto de Amazon Best Sellers, Thunderbit tiene plantillas preconstruidas que funcionan con un solo clic.

Paso 1: instala la extensión de Chrome de Thunderbit

Ve a la Chrome Web Store y haz clic en "Añadir a Chrome". Crea una cuenta gratuita: el plan gratis te da suficientes créditos para probarlo.

Paso 2: abre la página de Amazon Best Sellers

Abre cualquier página de categoría de Amazon Best Sellers en Chrome. Por ejemplo: https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/

Paso 3: haz clic en "One Click Extract"

Abre la barra lateral de Thunderbit y haz clic en "One Click Extract". La IA analiza la estructura de la página y detecta las columnas: nombre del producto, precio, valoración, URL de la imagen, vendedor, URL del producto y ranking. En mi prueba, identificó correctamente todos los campos relevantes en unos 3 segundos.

amazon-thunderbit-product-data.webp

Puedes cambiar el nombre de las columnas, eliminarlas o añadir nuevas. Incluso puedes añadir prompts personalizados de IA por campo; por ejemplo, "clasificar como Electronics/Apparel/Home" para añadir una etiqueta de categoría a cada producto.

Paso 4: haz clic en "Scrape"

Pulsa el botón "Scrape". Thunderbit rellena una tabla estructurada con todos los datos del producto de la página. En modo cloud, procesa hasta 50 páginas a la vez en paralelo, gestionando automáticamente el lazy loading y la paginación.

Paso 5: exporta gratis

Haz clic en "Export" y elige tu destino: Excel, Google Sheets, Airtable o Notion. Todas las exportaciones son gratis en todos los planes, sin cargos ocultos.

product-data-export.webp

Todo el proceso me llevó unos 90 segundos desde abrir la página hasta tener una hoja de cálculo completa. Para comparar, el método 1 me tomó unos 20 minutos (incluida la depuración del problema de lazy loading), el método 2 unos 35 minutos (incluida la configuración de Selenium) y el método 3 unos 15 minutos (incluida la creación de la cuenta en la API).

Por qué Thunderbit funciona bien con Amazon

Como la IA relee la página desde cero cada vez, se adapta automáticamente a los cambios de diseño: no hay selectores CSS que mantener. Esto responde directamente a la queja más común en los foros de scraping: "un scraper web básico no basta, hay que añadir un montón de ‘capturas’ para los cambios de elementos". Cuando Amazon cambia su DOM, no tienes que actualizar nada.

El modo de scraping en la nube gestiona de forma transparente la rotación de proxies, el renderizado y las medidas anti-bot. Para quienes quieren una solución de "simplemente funciona", esto elimina por completo el dolor de cabeza de los bloqueos.

Olvídate del mantenimiento de selectores Cuando Amazon cambia su marcado, tus selectores de BeautifulSoup se rompen. La IA de Thunderbit vuelve a leer la página en cada ejecución y detecta los campos de nuevo. Get Started Free

El playbook anti-bloqueo: cómo evitar que Amazon te bloquee

La detección de bots de Amazon es agresiva. Durante las pruebas me bloquearon temporalmente la IP, y los usuarios de foros reportan lo mismo: "errores por todas partes, Amazon incluso empezó a redirigirme a la página principal". Si vas por la ruta de Python (métodos 1–3), esta sección es fundamental.

Aquí tienes una estrategia por capas, de lo básico a lo avanzado:

1. Rota las cadenas User-Agent

Enviar siempre el mismo User-Agent es una señal de alerta. Usa el grupo de 5+ cadenas del ejemplo del Método 1 y selecciona una aleatoria en cada solicitud:

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

2. añade pausas aleatorias entre solicitudes

Las pausas fijas son detectables por patrón. Las aleatorias son más seguras:

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

Descubrí que entre 2 y 5 segundos entre solicitudes me mantenían fuera del radar en lotes pequeños (menos de 50 solicitudes). Para ejecuciones más grandes, súbelo a 3–7 segundos.

3. usa rotación de proxies

Este es el punto clave. Los benchmarks de Proxyway muestran que los proxies residenciales tienen una media de éxito de ~94% en Amazon frente a ~59% para proxies de centros de datos: una diferencia de 35 puntos porcentuales. El sistema de detección de Amazon incluye fingerprinting TLS, análisis de comportamiento y limitación por IP, así que las IP estándar de datacenter se marcan en segundos.

Los proxies residenciales son más caros ($2–$12 por GB según el proveedor), pero mucho más fiables. Ejemplo de código:

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. refuerza la huella del navegador (Selenium)

options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

# Después de iniciar el driver, elimina la marca navigator.webdriver
driver.execute_cdp_command('Page.addScriptToEvaluateOnNewDocument', {
    'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
})

5. gestiona sesiones y cookies

Persistir cookies entre solicitudes hace que tu scraper parezca más una sesión de usuario real:

session = requests.Session()
# Visita primero la página principal para obtener cookies realistas
session.get("https://www.amazon.com", headers=headers)
time.sleep(2)
# Luego extrae la página objetivo
response = session.get(target_url, headers=headers)

6. cuándo saltarte todo el dolor de cabeza

Para quienes no quieren gestionar nada de esto, el scraping en la nube de Thunderbit maneja la rotación de proxies, el renderizado y las medidas anti-bot de forma transparente. Las APIs de scraping también cubren la mayoría de estas preocupaciones de serie. En mi experiencia, el tiempo que se invierte depurando problemas anti-bloqueo suele superar al tiempo invertido en escribir el código de scraping; por eso la opción de "simplemente funciona" tiene un ROI real.

Enriquecimiento de subpáginas: extraer las páginas de detalle para obtener más datos

La página de listado de Best Sellers solo muestra información básica: título, precio, valoración y ranking. Pero el verdadero valor para la investigación FBA está en las páginas de detalle de cada producto. Esto es lo que te pierdes si solo extraes el listado:

CampoPágina de listadoPágina de detalle del producto
Nombre del producto
Precio
Valoración
Ranking BSR✅ (con rankings por subcategoría)
Marca
ASIN
Fecha de primera disponibilidad
Dimensiones/Peso
Número de vendedores
Características en viñetas
Propietario del Buy Box

Ese campo de "Fecha de primera disponibilidad" es especialmente valioso: te dice cuánto tiempo lleva un producto en el mercado, una señal clave para el análisis de competencia. Y conocer el número de vendedores y el propietario del Buy Box ayuda a evaluar si merece la pena entrar en un nicho (si Amazon mismo tiene más del 30% de cuota del Buy Box, competir es extremadamente difícil).

Enfoque Python: recorrer las URLs de producto

Después de recopilar las URLs de producto desde la página de listado, recorre cada una 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")
    
    # Extraer marca
    brand_tag = detail_soup.find("a", id="bylineInfo")
    product["Brand"] = brand_tag.get_text(strip=True) if brand_tag else "N/A"
    
    # Extraer ASIN del código fuente o de la URL
    # Extraer fecha de primera disponibilidad de la tabla de detalles
    # ... campos adicionales ...

Aviso: visitar 100 páginas de producto individuales aumenta mucho el riesgo de bloqueo. Debes presupuestar rotación de proxies y pausas más largas.

Enfoque Thunderbit: scraping de subpáginas con un clic

Después de extraer la página de listado a una tabla, haz clic en "Scrape Subpages" en Thunderbit. La IA visita cada URL de producto y enriquece la tabla con columnas adicionales —marca, ASIN, especificaciones, características— automáticamente. Sin código adicional, sin selectores y sin configuración. Esto es especialmente útil para equipos de e-commerce que necesitan la imagen completa para tomar decisiones de sourcing, pero no quieren escribir ni mantener un parser de páginas de detalle.

Automatizar extracciones recurrentes: monitorizar Best Sellers a lo largo del tiempo

Una extracción puntual es útil, pero el seguimiento continuo es donde aparece la verdadera ventaja competitiva. Vigilar qué productos suben y bajan, detectar tendencias temprano y seguir los cambios de precio durante semanas o meses: eso es lo que separa una investigación casual de una toma de decisiones basada en datos.

Enfoque Python: programar con Cron

En Linux/Mac, puedes programar tu script de Python con cron. Aquí tienes la entrada crontab para una extracción diaria a las 8:00:

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

Para una extracción semanal los lunes a las 9:00:

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

En Windows, usa el Programador de tareas para hacer lo mismo. Si quieres una programación siempre activa sin dejar el portátil encendido, despliega en una VPS o en AWS Lambda, aunque eso añade complejidad de infraestructura.

Añade registro de logs y notificaciones de errores para detectar ejecuciones fallidas. No hay nada peor que descubrir que tu scraper se rompió en silencio hace dos semanas.

Enfoque Thunderbit: Scheduled Scraper en lenguaje natural

El Scheduled Scraper de Thunderbit te permite describir el intervalo en lenguaje natural: escribe "cada lunes a las 9am" o "todos los días a las 8am" y la IA interpreta la programación. Las extracciones se ejecutan en los servidores en la nube de Thunderbit (no hace falta que haya navegador ni ordenador encendido), y los datos se exportan automáticamente a Google Sheets o Airtable. Esto crea un panel de monitorización en vivo sin gestionar servidores, ideal para equipos de operaciones que quieren visibilidad continua sin carga de DevOps.

Consideraciones legales y éticas al extraer datos de Amazon

No soy abogado y esto no es asesoramiento legal. Pero ignorar el panorama legal en un tutorial de scraping sería irresponsable: los usuarios de foros plantean explícitamente dudas sobre los Términos de Servicio, y con razón.

robots.txt de Amazon: A fecha de 2026, el robots.txt de Amazon contiene más de 80 rutas específicas prohibidas, pero /gp/bestsellers/ NO está bloqueada explícitamente para los agentes de usuario estándar. Sin embargo, más de 35 agentes de usuario específicos de IA (ClaudeBot, GPTBot, Scrapy, etc.) reciben un Disallow: / general. La ausencia de una prohibición concreta no significa que Amazon apruebe el scraping.

Términos de servicio de Amazon: Las Conditions of Use de Amazon (actualizadas en mayo de 2025) prohíben explícitamente "usar cualquier proceso o tecnología automatizada para acceder, adquirir, copiar o monitorizar cualquier parte del sitio web de Amazon" sin permiso por escrito. No es algo teórico: Amazon demandó a Perplexity AI en noviembre de 2025 por acceso automatizado no autorizado y obtuvo una orden judicial preliminar.

El precedente hiQ v. LinkedIn: En hiQ Labs v. LinkedIn (Noveno Circuito, 2022), el tribunal sostuvo que extraer datos disponibles públicamente probablemente no viola la Computer Fraud and Abuse Act. Pero hiQ acabó llegando a un acuerdo y aceptó dejar de hacer scraping: ganar bajo la CFAA no te protege de reclamaciones por incumplimiento contractual.

Pautas prácticas:

  • Extrae solo datos públicamente disponibles (precios, BSR, títulos de producto, no datos personales)
  • Respeta los límites de tasa y no satures los servidores
  • Usa los datos para inteligencia competitiva legítima
  • Consulta a tu propio asesor legal antes de extraer datos a gran escala
  • Ten en cuenta que más de 20 estados de EE. UU. ya tienen legislación integral de privacidad

El scraping en la nube de Thunderbit utiliza patrones de solicitud estándar similares a los de un navegador, pero siempre debes verificar el cumplimiento con tu propio asesor legal.

Para esto no necesitas Python Si el objetivo es una hoja de cálculo y no una tubería de datos, un clic te lleva allí. Exporta directamente a Excel, Google Sheets, Airtable o Notion. Get Started Free

¿Qué método deberías usar? Guía rápida de decisión

La versión corta:

  • "Estoy aprendiendo Python y quiero un proyecto de fin de semana." → Método 1 (requests + BeautifulSoup). Aprenderás muchísimo sobre peticiones HTTP, análisis de HTML y defensas anti-bot de Amazon.
  • "Necesito extraer páginas con mucho JavaScript o sesiones iniciadas." → Método 2 (Selenium). Es más pesado, pero maneja contenido dinámico.
  • "Estoy ejecutando extracciones de producción a gran escala." → Método 3 (API de scraping). Deja que otro gestione proxies y renderizado. El coste total de propiedad favorece a las APIs por debajo de 500K solicitudes al mes.
  • "No soy desarrollador y quiero los datos en 2 minutos." → Método 4 (Thunderbit). Sin código, sin selectores, sin mantenimiento.
  • "Necesito monitorización continua sin gestionar servidores." → Scheduled Scraper de Thunderbit. Configúralo y olvídate.

Prueba Thunderbit para Amazon Best Sellers Get Started Free

Conclusión y aprendizajes clave

Después de un fin de semana de pruebas, esto fue lo que realmente me quedó claro:

requests + BeautifulSoup es genial para aprender, pero la limitación del lazy loading (solo unos 30 de 50 productos) y unos selectores CSS frágiles lo hacen poco práctico para producción.

Selenium soluciona el problema del lazy loading y captura los 50 productos por página, pero es lento, consume mucha memoria y Amazon aún puede detectarlo.

Las APIs de scraping ofrecen la mejor fiabilidad para scraping a escala de producción —~99% de éxito en Amazon—, pero el coste aumenta y todavía tienes que escribir el código de parsing.

Thunderbit ofreció, con mucha diferencia, el tiempo más rápido para obtener datos. La IA gestiona cambios de layout, lazy loading, paginación y medidas anti-bot sin necesidad de configuración. Para usuarios no técnicos o equipos que necesitan datos recurrentes sin carga de DevOps, es la opción más práctica.

¿La mayor lección? Las defensas anti-bot de Amazon y sus frecuentes cambios de diseño hacen que, a largo plazo, las soluciones sin mantenimiento ahorren más tiempo. Cada hora que pasas depurando selectores rotos y rotando proxies es una hora que no estás dedicando al análisis real.

¿Quieres probar el enfoque sin código? El plan gratuito de Thunderbit te da suficientes créditos para extraer unas cuantas categorías de Best Sellers y ver los resultados por ti mismo. ¿Prefieres la ruta de Python? Los ejemplos de código de arriba deberían servirte como punto de partida. En cualquier caso, tendrás los datos de Amazon Best Sellers en una hoja de cálculo en lugar de estar mirando una pestaña del navegador.

Para saber más sobre enfoques de web scraping, consulta nuestras guías sobre extraer productos y reseñas de Amazon, extraer datos de sitios web a Excel y los mejores AI web scrapers. También puedes ver tutoriales paso a paso en el canal de YouTube de Thunderbit.

Más información

Fawad Khan
Fawad Khan
Fawad escribe para ganarse la vida y, siendo sinceros, le encanta. Ha pasado años descubriendo qué hace que un texto se quede en la cabeza de la gente y qué hace que los lectores pasen de largo. Si le preguntas por marketing, puede hablar durante horas. Si le preguntas por carbonara, hablará todavía más.
Tabla de contenidos
Thunderbit · Agente de datos web con IA

Extrae datos de cualquier página en 1 clic

Con la confianza de más de 250.000 usuarios
plan gratuito disponible
De la página web a la hoja de cálculo
Describe lo que necesitas — el agente de IA de Thunderbit lo extrae y lo exporta a Excel, Google Sheets, Airtable o Notion. Empieza gratis.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week