Probé 4 formas de extraer los más vendidos de Amazon con Python y ...

Última actualización: April 17, 2026

El fin de semana pasado me bebí una olla entera de café intentando extraer la página de Best Sellers de Amazon de cuatro maneras distintas. Dos funcionaron muy bien, una estuvo a punto de hacer que bloquearan mi IP, y otra se resolvía literalmente con dos clics. Aquí te cuento todo lo que aprendí.

Amazon es un monstruo del comercio electrónico: , y un sistema de Best Sellers Rank (BSR) que se actualiza cada hora. Si haces investigación de productos para FBA, análisis de precios de la competencia o simplemente intentas detectar tendencias antes que tu competencia, los datos de Best Sellers valen oro.

Pero sacar esos datos de Amazon y llevarlos a una hoja de cálculo, ahí es donde la cosa se pone interesante. Probé requests + BeautifulSoup, Selenium, una API de scraping y (nuestro propio AI web scraper sin código) para ver cuál de estos enfoques realmente entrega resultados, y cuáles te dejan mirando una página de CAPTCHA.

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

Amazon Best Sellers Rank (BSR) es el ranking en tiempo real de Amazon, que ordena productos por volumen de ventas dentro de cada categoría. Piensa en ello como un concurso de popularidad, actualizado cada hora y basado tanto en ventas recientes como históricas. Amazon lo describe así:

"The Amazon Best Sellers calculation is based on Amazon sales and is updated hourly to reflect recent and historical sales of every item sold on Amazon." —

La página de Best Sellers muestra los 100 productos principales de cada categoría, divididos en dos páginas de 50. La página 1 cubre los puestos #1–50, y la página 2 los #51–100. Amazon ha confirmado que las visitas a la página y las reseñas de clientes NO afectan al BSR: depende exclusivamente de las ventas.

¿A quién le interesa esta información? A vendedores de e-commerce que buscan productos para FBA, equipos de ventas que construyen inteligencia competitiva, equipos de operaciones que siguen tendencias de precios y analistas de mercado que monitorean el crecimiento de categorías. En mi 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 consume muchísimo tiempo. Un encontró que los empleados pasan 9.3 horas a la semana solo buscando y recopilando información. En 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, solo para repetir el proceso la semana siguiente.

Estas son algunas de las situaciones en las que vale la pena extraer Best Sellers:

Caso de usoQué obtienesA quién beneficia
Investigación de productos para FBAIdentificar productos con alta demanda y poca competencia por BSR y número de reseñasVendedores de Amazon, dropshippers
Análisis de precios de la competenciaSeguir cambios de precio en los productos principales de tu categoríaEquipos de e-commerce, analistas de pricing
Monitoreo de tendencias del mercadoDetectar categorías en crecimiento 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 competidoresComparar tus productos frente a los líderes de la categoríaBrand managers, equipos de estrategia

El retorno es real: una a 2,700 profesionales del comercio encontró que las herramientas de IA ahorran a los profesionales de e-commerce un promedio de . Y los vendedores que usan seguimiento automatizado de precios mantienen el Buy Box el , frente al 42% de los rastreadores manuales: un aumento del 37% en ventas impulsado por una reacción más rápida a los cambios de precio.

4 formas de extraer Amazon Best Sellers con Python: comparación 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 según 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 carga diferidaNoSí (simulación de scroll)Sí (HTML renderizado)Sí (la IA maneja el renderizado)
Resistencia anti-botBaja (bloqueos de IP)Media (detectable)Alta (proxies rotativos)Alta (modos cloud + navegador)
MantenimientoAlto (se rompen selectores)Alto (actualizaciones del driver + selectores)BajoMuy bajo (la IA se adapta a cambios de diseño)
CosteGratisGratisDe pago (por solicitud)Plan gratuito + planes de pago
Ideal paraExtracciones puntuales, aprendizajePáginas con mucho JS, acceso con loginEscala / producciónNo desarrolladores, investigación rápida, monitoreo recurrente

Si quieres aprender los fundamentos del scraping con Python, empieza por el método 1 o 2. Si necesitas fiabilidad a nivel producción, ve por el método 3. Si quieres resultados en dos clics 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 para Thunderbit, ~45 minutos para los métodos con Python
  • Lo que necesitarás: Python 3.8+ (para los métodos 1–3), navegador Chrome, (para el método 4) y una URL de categoría de Amazon Best Sellers

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

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

Paso 1: configura tu entorno

Instala los paquetes necesarios:

1pip install requests beautifulsoup4 pandas

Luego prepara los imports:

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

Paso 2: envía una solicitud con encabezados realistas

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

Si ves un código 200, vas por buen camino. Si ves un 503 o te redirige a una página CAPTCHA, Amazon ha marcado tu solicitud.

Paso 3: analiza los datos de productos con BeautifulSoup

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

Advertencia: las clases 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 siempre verifica los selectores con las DevTools antes de ejecutar tu scraper.

Paso 4: exporta a CSV

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

Qué esperar y qué puede salir mal

En mi prueba, este método devolvió unos 30 productos en lugar de 50. No es un fallo del código: es la carga diferida de Amazon. Solo se renderizan ~30 productos en la carga inicial de la página; el resto aparecen al hacer scroll, lo que requiere ejecución de JavaScript, algo que requests no puede manejar.

Otras limitaciones:

  • Los bloqueos de IP llegan rápido si no rotas proxies (me bloquearon después de unos 15 intentos seguidos)
  • Los selectores CSS se rompen cuando Amazon actualiza el diseño de la página, y eso pasa con frecuencia
  • No hay manejo de paginación de serie

Para aprender scraping con Python, este enfoque está muy bien. Para producción, es frágil.

Método 2: extraer Amazon Best Sellers con Selenium

Selenium resuelve el problema de la carga diferida ejecutando un navegador real: requiere más configuración, pero captura los 50 productos por página.

Paso 1: instala Selenium

1pip install selenium pandas

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

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)

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

Paso 2: haz scroll para superar la carga diferida

Este es el paso que hace que Selenium merezca la pena pese al esfuerzo de configuración. Amazon Best Sellers solo carga ~30 productos al inicio; el resto aparecen después de hacer scroll.

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)

Después de hacer scroll, los 50 productos deberían estar renderizados en el DOM. Descubrí que 5 scrolls con la tecla Page Down y una pausa de 2 segundos era suficiente, aunque puede que tengas que ajustarlo según la velocidad de tu conexión.

Paso 3: extrae los datos del producto

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

Encerrar cada extracción en try/except es importante: algunos productos pueden estar sin stock o no tener algún campo, y no quieres que un elemento defectuoso haga fallar todo el scraping.

Paso 4: maneja la paginación

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

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

Qué esperar

En mi prueba, Selenium capturó los 50 productos de cada página, una mejora clara frente a requests + BS4. La desventaja: tardó unos 45 segundos por página (incluyendo las pausas del scroll) y aun así me marcaron después de ejecutarlo demasiadas veces sin rotación de proxies. Selenium también es detectable por el sistema anti-bots de Amazon, incluso con las banderas anti-detección; para escalar en serio, necesitarás medidas adicionales (ver la sección Anti-Ban más abajo).

Otros problemas:

  • Todavía pueden producirse desajustes de versión del WebDriver, aunque Selenium Manager los ha reducido bastante
  • Los selectores CSS hay que actualizarlos cada vez que Amazon cambia su DOM
  • El consumo de memoria es alto: cada instancia del navegador usa 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 otro se encargue 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 objetivo al endpoint de la API. La API renderiza la página con un navegador real en su infraestructura, rota proxies, maneja CAPTCHAs y devuelve HTML limpio. Después, analizas el HTML recibido 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):

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

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 realista de precios

Esto es lo que cobran las principales APIs por cada 1,000 solicitudes a Amazon, según sus tarifas más favorables:

ProveedorCoste por 1,000 solicitudesNotas
Scrape.do~$0.19Tarifa plana, sin multiplicadores de crédito
Oxylabs~$1.80Multiplicador 5x para renderizado JS
ScrapingBee~$4.90Multiplicadores de 5–25x para funciones premium
Bright Data~$5.00+Datos más completos (686 campos/producto), pero más lento (~66 seg/solicitud)

Ventajas y desventajas

Ventajas: alta fiabilidad ( en Amazon para los proveedores líderes), sin mantenimiento de drivers, manejo automático de anti-bot y buena escalabilidad.

Desventajas: se paga por solicitud (el coste crece con el volumen), sigues necesitando escribir código de análisis y sigues siendo vulnerable a cambios en los selectores CSS. Para 100,000 páginas al mes, la comparación del coste total es muy clara: construirlo internamente cuesta aproximadamente , es decir, 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 suele compensar con creces el coste.

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

Transparencia total: trabajo en Thunderbit, así que toma esta sección con ese contexto. Dicho eso, realmente probé los cuatro métodos uno tras otro, y la diferencia en tiempo hasta obtener los datos fue muy llamativa.

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

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

Ve a la y haz clic en "Add to 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 "AI Suggest Fields"

Abre la barra lateral de Thunderbit y haz clic en "AI Suggest Fields". La IA analiza la estructura de la página y sugiere columnas: Nombre del producto, Precio, Valoración, URL de 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 renombrar, eliminar o añadir columnas. Incluso puedes añadir prompts de IA personalizados por campo, por ejemplo: "clasificar como Electronics/Apparel/Home" para agregar 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 de productos de la página. En modo cloud, procesa hasta 50 páginas a la vez en paralelo, manejando automáticamente la carga diferida y la paginación.

Paso 5: exporta gratis

Haz clic en "Export" y elige tu destino: Excel, Google Sheets, Airtable o Notion. 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 llevó unos 20 minutos (incluyendo depurar el problema de carga diferida), 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 lee la página desde cero cada vez, se adapta automáticamente a los cambios de diseño: no hay selectores CSS que mantener. Esto resuelve de forma directa la queja más común en foros de scraping: "un web scraper básico no basta, hay que añadir demasiados 'catches' para los cambios de elementos". Cuando Amazon cambia su DOM (algo que ocurre con frecuencia), 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 usuarios que quieren una solución que simplemente funcione, esto elimina por completo el dolor de cabeza de los bloqueos.

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

El sistema anti-bot de Amazon es agresivo. Durante las pruebas me bloquearon temporalmente la IP, y usuarios de foros reportan lo mismo: "errors everywhere, amazon even started redirecting me to the homepage." Si vas por la ruta de Python (métodos 1–3), esta sección es crítica.

Aquí tienes una estrategia por capas, de básica a avanzada:

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 elige una al azar en cada solicitud:

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

2. añade pausas aleatorias entre solicitudes

Los retrasos fijos se pueden detectar. Los aleatorios son más seguros:

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

Descubrí que esperar entre 2 y 5 segundos entre solicitudes me mantenía fuera del radar para 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 muestran que los proxies residenciales promedian ~94% de éxito en Amazon frente a ~59% de los proxies de centros de datos: una diferencia de 35 puntos porcentuales. La detección de Amazon incluye fingerprinting TLS, análisis de comportamiento y limitación por IP, así que las IPs estándar de datacenter se marcan en cuestión de segundos.

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

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. refuerza el fingerprint del navegador (Selenium)

1options.add_argument('--disable-blink-features=AutomationControlled')
2options.add_experimental_option("excludeSwitches", ["enable-automation"])
3options.add_experimental_option('useAutomationExtension', False)
4# Después de iniciar el driver, elimina la bandera navigator.webdriver
5driver.execute_cdp_command('Page.addScriptToEvaluateOnNewDocument', {
6    'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
7})

5. gestiona sesiones y cookies

Conservar cookies entre solicitudes hace que tu scraper parezca una sesión real de usuario:

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

6. cuándo saltarse el dolor de cabeza por completo

Para quienes no quieren gestionar nada de esto, el scraping en la nube de Thunderbit maneja rotación de proxies, renderizado y anti-bot de forma transparente. Las APIs de scraping también se encargan de la mayoría de estas cuestiones desde el principio. En mi experiencia, el tiempo que se va resolviendo problemas anti-bloqueo suele superar el tiempo que lleva escribir el código de scraping, así que la opción "simplemente funciona" tiene un ROI real.

Enriquecimiento de subpáginas: extraer páginas de detalle de producto 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 individuales de 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
Dueño del Buy Box

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

Enfoque con Python: recorrer las URLs de los productos

Después de recopilar las URLs de los productos desde la página de listado, recórrelas una por una con una pausa:

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    # Extraer marca
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    # Extraer ASIN del código fuente o de la URL
9    # Extraer la fecha de primera disponibilidad de la tabla de detalles del producto
10    # ... campos adicionales ...

Advertencia justa: visitar 100 páginas individuales de producto aumenta bastante el riesgo de bloqueo. Reserva margen para rotación de proxies y pausas más largas.

Enfoque con Thunderbit: scraping de subpáginas con un clic

Después de extraer la página de listado en 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 extra, sin selectores y sin configuración adicional. Esto es especialmente útil para equipos de e-commerce que necesitan una visión completa para tomar decisiones de abastecimiento, pero no quieren escribir ni mantener un parser para páginas de detalle.

Automatizar extracciones recurrentes: monitorear los Best Sellers a lo largo del tiempo

Una extracción puntual es útil, pero el verdadero valor competitivo está en el monitoreo continuo. Seguir qué productos suben y bajan, detectar tendencias temprano y vigilar 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 con Python: programarlo con cron

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

10 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 a. m.:

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

En Windows, puedes usar Task Scheduler para lograr lo mismo. Si quieres una programación siempre activa sin dejar el portátil encendido, despliega el script en un VPS o en AWS Lambda, aunque eso añade complejidad de infraestructura.

Añade registros 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 con 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 cloud de Thunderbit (no hace falta que el navegador o el ordenador estén encendidos) y los datos se exportan automáticamente a Google Sheets o Airtable. Esto crea un panel de monitoreo en vivo sin gestión de servidores, ideal para equipos de operaciones que quieren visibilidad continua sin la 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: en los foros los usuarios 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 en Disallow, pero /gp/bestsellers/ NO está bloqueada explícitamente para 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. Que no exista una prohibición concreta no significa que Amazon apruebe el scraping.

Términos de Servicio de Amazon: Las de Amazon (actualizadas en mayo de 2025) prohíben explícitamente "using any automated process or technology to access, acquire, copy, or monitor any part of the Amazon Website" sin permiso por escrito. Esto no es teórico: Amazon en noviembre de 2025 por acceso automatizado no autorizado y obtuvo una orden judicial preliminar.

El precedente hiQ v. LinkedIn: En (Noveno Circuito, 2022), el tribunal sostuvo que extraer datos públicamente disponibles probablemente no viola la Computer Fraud and Abuse Act. Pero hiQ finalmente llegó a un acuerdo y aceptó dejar de extraer datos: 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 frecuencia y no sobrecargues los servidores
  • Usa los datos para inteligencia competitiva legítima
  • Consulta a tu asesor legal antes de extraer datos a gran escala
  • Ten en cuenta que ya tienen legislación integral de privacidad

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

¿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 solicitudes HTTP, análisis de HTML y defensas anti-bot de Amazon.
  • "Necesito extraer páginas con mucho JavaScript o sesiones con login." → Método 2 (Selenium). Es más pesado, pero maneja contenido dinámico.
  • "Estoy ejecutando scraping en producción y a gran escala." → Método 3 (API de scraping). Deja que otro gestione proxies y renderizado. El favorece a las APIs por debajo de 500K solicitudes al mes.
  • "No soy desarrollador y quiero datos en 2 minutos." → Método 4 (). Sin código, sin selectores, sin mantenimiento.
  • "Necesito monitoreo continuo sin gestionar servidores." → Thunderbit Scheduled Scraper. Configúralo y olvídate.

Conclusión y aprendizajes clave

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

requests + BeautifulSoup es excelente para aprender, pero la limitación de carga diferida (solo ~30 de 50 productos) y los selectores CSS frágiles lo hacen poco práctico para producción.

Selenium resuelve el problema de la carga diferida 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 — en Amazon—, pero el coste se acumula y todavía necesitas escribir código de análisis.

Thunderbit fue, con mucha diferencia, la forma más rápida de obtener datos. La IA maneja cambios de diseño, carga diferida, paginación y medidas anti-bot sin configuración. Para usuarios no técnicos o equipos que necesitan datos recurrentes sin la carga de DevOps, es la opción más práctica.

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

¿Quieres probar el enfoque sin código? El te da suficientes créditos para extraer unas cuantas categorías de Best Sellers y ver los resultados por ti mismo. ¿Prefieres Python? Los ejemplos de código anteriores deberían servirte para empezar. En cualquier caso, terminarás con datos de Amazon Best Seller en una hoja de cálculo en lugar de quedarte mirando una pestaña del navegador.

Para más información sobre enfoques de scraping web, consulta nuestras guías sobre , y . También puedes ver tutoriales paso a paso en el .

Más información

Fawad Khan
Fawad Khan
Fawad writes for a living, and honestly, he kind of loves it. He's spent years figuring out what makes a line of copy stick — and what makes readers scroll past. Ask him about marketing, and he'll talk for hours. Ask him about carbonara, and he'll talk longer.
Tabla de contenidos

Prueba Thunderbit

Extrae leads y otros datos en solo 2 clics. Impulsado por IA.

Consigue Thunderbit Es gratis
Extrae datos usando IA
Transfiere datos fácilmente a Google Sheets, Airtable o Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week