API de Scraper de Amazon Rufus: Cómo Extraer Información sobre Compras Conversacionales de Amazon a Gran Escala
Specialist in Anti-Bot Strategies
API de Scraper de Amazon Rufus
Amazon Rufus es el asistente de compras conversacional que impulsa cada vez más la investigación previa a la compra en Amazon, respondiendo "¿Es este lavavajillas apto para lavavajillas?", "¿Cómo se compara esto con el modelo M2?", "Mejores zapatillas para correr por menos de 100 €" con respuestas fundamentadas y conscientes del producto. Para repricers, motores de comparación, monitores de marcas y tuberías de compras basadas en IA, las respuestas que Rufus proporciona son señales de alto leverage.
Rufus está disponible solo para sesiones de clientes autenticados y transmite sus respuestas como Eventos Enviados por el Servidor. Esto lo hace inaccesible a través de navegación anónima e impracticable de integrar mediante scraping DIY. La API de Scraper de Amazon Rufus de Scrapeless resuelve esto de extremo a extremo: la autenticación, tokens anti-bot, enrutamiento de mercado y análisis de flujo se manejan del lado del servidor, expuestos a través de un POST HTTP limpio. Esta guía abarca todo: por qué los equipos usan la API, cómo funcionan la solicitud y la respuesta, referencia de parámetros, integración en Python y Node.js, y problemas comunes con sus soluciones.
Parte 1: ¿Por qué usar la API de Scraper de Amazon Rufus de Scrapeless?
La API de Rufus convierte una superficie de Amazon autenticada y transmitida en una sola llamada HTTP en JSON estructurado.
- No se requiere inicio de sesión en Amazon. La autenticación se maneja en Scrapeless. Los llamadores nunca ven un formulario de inicio de sesión, un aviso de MFA o un frasco de cookies.
- Respuestas transmitidas, analizadas para ti. Una respuesta típica de Rufus es de 60 a 80 fragmentos de Eventos Enviados por el Servidor en siete tipos de eventos. La API une el flujo en un solo objeto
resultanalizado: siniter_lines, sin detección de límites\n\n, sin despacho de tipo de evento del lado del llamador. - Enrutamiento de mercado en un parámetro.
domain: "www.amazon.es","www.amazon.com","www.amazon.de": la API enruta a través de un proxy residencial coincidente con la localidad automáticamente. - Datos de producto estructurados sin necesidad de configuración.
result.productsdevuelve una lista de diccionarios conasin,title,rating,reviews,image_url,categoryy una etiqueta editorialfooter: el conjunto curado de Rufus para la consulta. - Minería de preguntas relacionadas. Cada respuesta también incluye de 3 a 5 preguntas de seguimiento generadas por Rufus. Son una fuente limpia de expansión de consultas para investigación SEO, planificación de contenido o llamadas encadenadas a Rufus.
- Misma cuenta de Scrapeless, mismo panel de control. La API de Rufus utiliza el mismo token API que el resto de la línea de productos de Scrapeless: APIs de Scraper, Scraping Browser, API Universal de Scraping. Una cuenta, muchas superficies.
La mejor solución de scraping de Amazon Rufus
La API de Scraper de Amazon Rufus de Scrapeless está construida para tuberías de producción que necesitan la salida conversacional de Rufus como datos estructurados, sin la carga de integración de ejecutar un navegador autenticado por cada consulta.
- Autenticación del lado del servidor. Scrapeless mantiene las sesiones autenticadas de Amazon y las rota. Los llamadores envían una consulta y reciben JSON analizado a cambio.
- Salida previamente analizada. La respuesta por defecto es un sobre JSON con un objeto
resultque ya está poblado conproducts,related_questions,interim_messagesy unrequest_context. No se requiere pegamento de cliente de transmisión para el caso común. - SSE crudo opcional. Configurar
is_sse_data: trueexpone el flujo de datos crudosevent:<type>\ndata:<json>\n\npara los llamadores que necesitan actualizaciones de interfaz de usuario progresivas o auditoría de eventos de plena fidelidad. - Multi-mercado.
www.amazon.esestá verificado de extremo a extremo; la misma estructura se aplica a otros dominios de mercado (.com,.co.uk,.de,.co.jp,.com.au,.in,.com.mx,.com.br).
Cómo raspar Amazon Rufus con la API de Scraper de Scrapeless
El flujo de trabajo de extremo a extremo consta de cuatro pasos: obtener un token API, construir el cuerpo de la solicitud, enviar el POST, analizar la respuesta. Regístrate en scrapeless.com, copia el token API del panel y guárdalo como una variable de entorno:
bash
export SCRAPELESS_API_TOKEN=sk_your_token_here
El endpoint es POST https://api.scrapeless.com/api/v1/scraper/request con el encabezado x-api-token: <YOUR_TOKEN> y un cuerpo en JSON. La respuesta es un sobre JSON donde result lleva la salida analizada de Rufus.
Cómo raspar Rufus mediante consulta de palabras clave
Este es el flujo canónico para hacerle una pregunta a Rufus y obtener respuestas estructuradas y fundamentadas en Amazon.
Paso 1: Construir el cuerpo de la solicitud
El cuerpo de la solicitud tiene tres campos requeridos bajo input: type (siempre "rufus"), keywords (la pregunta o intención de compra) y domain (el mercado de Amazon).
json
{
"actor": "scraper.amazon",
"input": {
"type": "rufus",
"keywords": "¿es bueno el MacBook Air M3 para la edición de video?",
"domain": "www.amazon.es"
}
}
Paso 2: Establecer parámetros
keywords acepta consultas de lenguaje natural en formato libre — preguntas directas ("¿Es impermeable?"), comparaciones ("M1 vs M3 para video"), o intenciones de compra ("mejor macbook para estudiantes"). domain selecciona el mercado de Amazon; alinealo con la localidad en la que deseas que Rufus base su respuesta. El booleano opcional is_sse_data tiene como valor predeterminado falso (envoltura JSON parseada); configúralo como verdadero para recibir la corriente SSE sin procesar.
Paso 3: Envía la solicitud
POSTea el cuerpo al punto final con el encabezado x-api-token. La respuesta predeterminada llega en 5–15 segundos de extremo a extremo como una respuesta HTTP fragmentada (alrededor de 130 KB para una consulta típica). Parse el JSON, lee result.products y result.related_questions.
Una respuesta exitosa típica:
json
{
"html": "id:CHUNK_0\nevent:context\ndata:{...}\n\nid:CHUNK_1\nevent:affordance\n...",
"metadata": {
"rawUrl": "https://api.scrapeless.com/storage/scrapeless.scraper.amazon/.../<id>.html",
"type": "rufus"
},
"result": {
"request_context": { "requestId": "TMWTVKB12QFTQEV9D2GJ", "sessionId": "257-9398007-5193547", "bsr": {...} },
"user_query": "¿es bueno el macbook air m3 para la edición de video?",
"interim_messages": ["Comprobando...", "Recopilando datos…"],
"products": [ { "asin": "B08N5TLVQ2", "title": "Apple MacBook Air...", "rating": "4.8", "reviews": "2.045", ... }, ... ],
"related_questions": ["MacBook Air vs MacBook Pro diferencias", "¿Qué MacBook es mejor para estudiantes?", ...],
"feedback_controls": { "groupId": "...", "text": "..." }
}
}
Parámetros de la API de Scraping de Scrapeless Amazon Rufus
| Parámetro | Requerido | Tipo | Descripción |
|---|---|---|---|
actor |
sí | cadena | Debe ser "scraper.amazon" |
input.type |
sí | cadena | Debe ser "rufus" |
input.keywords |
sí | cadena | Consulta en formato libre para Rufus — pregunta, comparación o intención de compra |
input.domain |
sí | cadena | Dominio del mercado de Amazon, p. ej. "www.amazon.es", "www.amazon.com", "www.amazon.de" |
input.is_sse_data |
opcional | booleano | Cuando true, la respuesta es la corriente SSE sin procesar. Cuando false (predeterminado), la respuesta es una envoltura JSON parseada con el objeto result pre-poblado. |
El objeto result parseado que la API devuelve:
| Campo | Tipo | Descripción |
|---|---|---|
request_context |
objeto | Identificadores del lado del servidor — requestId, sessionId, bsr (sugerencias de comportamiento de interfaz) |
user_query |
cadena | Eco de los keywords de entrada — útil para el retorno en canalizaciones asíncronas |
interim_messages |
arreglo de cadenas | Mensajes de estado de carga localizados al mercado (p. ej. "Comprobando...", "Recopilando datos…" para .es) |
products |
arreglo de objetos | Lista de productos selecta de Rufus — típicamente de 3 a 6 artículos con asin, url, title, rating, reviews, category, image_url, image_alt, footer |
related_questions |
arreglo de cadenas | 3–5 preguntas de seguimiento generadas por Rufus — utilizables para expansión de consultas o llamadas encadenadas |
feedback_controls |
objeto | Las cadenas de retroalimentación de pulgar arriba/abajo que Rufus muestra debajo de la respuesta |
Referencia completa de la API: apidocs.scrapeless.com/api-34218448.
Cómo integrar Scrapeless en tu proyecto
La integración es un único POST HTTP. A continuación se muestran ejemplos funcionales en Python y Node.js — ambos apuntan a la consulta canónica (keywords="¿es bueno el macbook air m3 para la edición de video?", domain="www.amazon.es").
Python
python
import os
import requests
URL = "https://api.scrapeless.com/api/v1/scraper/request"
HEADERS = {
"x-api-token": os.environ["SCRAPELESS_API_TOKEN"],
"Content-Type": "application/json",
}
BODY = {
"actor": "scraper.amazon",
"input": {
"type": "rufus",
"keywords": "¿es bueno el macbook air m3 para la edición de video?",
"domain": "www.amazon.es",
},
}
resp = requests.post(URL, headers=HEADERS, json=BODY, timeout=60)
resp.raise_for_status()
data = resp.json()
# Salida de Rufus parseada
for product in data["result"]["products"]:
print(f"{product['asin']} {product['rating']}★ {product['title'][:80]}")
print("\nPreguntas relacionadas:")
for q in data["result"]["related_questions"]:
print(f" - {q}")
Node.js (18+)
js
const URL = "https://api.scrapeless.com/api/v1/scraper/request";
const resp = await fetch(URL, {
method: "POST",
headers: {
"x-api-token": process.env.SCRAPELESS_API_TOKEN,
"Content-Type": "application/json",
},
body: JSON.stringify({
actor: "scraper.amazon",
input: {
type: "rufus",
keywords: "¿es bueno el macbook air m3 para la edición de video?",
domain: "www.amazon.es",
},
}),
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}: ${await resp.text()}`);
const data = await resp.json();
for (const p of data.result.products) {
console.log(`${p.asin} ${p.rating}★ ${p.title.slice(0, 80)}`);
}
console.log("\nPreguntas relacionadas:");
es
for (const q of data.result.related_questions) {
console.log(` - ${q}`);
}
Ambos clientes devuelven un objeto data.result analizado idéntico en forma: sin manejo de SSE, sin reensamblaje de fragmentos. Para el consumo de SSE en bruto (interfaces de usuario progresivas, auditorías de eventos de plena fidelidad), establece input.is_sse_data: true en el cuerpo y lee la respuesta como un flujo:
Python — modo SSE en bruto
python
import os, json, requests
resp = requests.post(URL, headers=HEADERS, json={
"actor": "scraper.amazon",
"input": {
"type": "rufus",
"keywords": "es el macbook air m3 bueno para la edición de video",
"domain": "www.amazon.es",
"is_sse_data": True,
},
}, stream=True, timeout=60)
event_type, data_buf = None, []
for line in resp.iter_lines(decode_unicode=True):
if line is None:
continue
if line.startswith("event:"):
event_type = line[len("event:"):].strip()
elif line.startswith("data:"):
data_buf.append(line[len("data:"):])
elif line == "":
if event_type and data_buf:
payload = json.loads("".join(data_buf))
print(event_type, "->", str(payload)[:120])
event_type, data_buf = None, []
Node.js — modo SSE en bruto
js
const resp = await fetch(URL, {
method: "POST",
headers: { "x-api-token": process.env.SCRAPELESS_API_TOKEN, "Content-Type": "application/json" },
body: JSON.stringify({
actor: "scraper.amazon",
input: {
type: "rufus", keywords: "es el macbook air m3 bueno para la edición de video",
domain: "www.amazon.es", is_sse_data: true,
},
}),
});
const reader = resp.body.getReader();
const decoder = new TextDecoder("utf-8");
let buf = "";
while (true) {
const { value, done } = await reader.read();
if (done) break;
buf += decoder.decode(value, { stream: true });
const frames = buf.split("\n\n");
buf = frames.pop();
for (const frame of frames) {
const lines = frame.split("\n");
const evtLine = lines.find(l => l.startsWith("event:"));
const dataLine = lines.find(l => l.startsWith("data:"));
if (evtLine && dataLine) {
const event = evtLine.slice("event:".length).trim();
const data = JSON.parse(dataLine.slice("data:".length));
console.log(event, "->", JSON.stringify(data).slice(0, 120));
}
}
}
En modo bruto, espera de 60 a 80 tramas a través de siete tipos de eventos: contexto, afordancia, interino, inferencia, retroalimentación, eliminar, cerrar. El evento inferencia lleva la respuesta consolidada; cerrar señala el final del flujo.
Cómo evitar problemas comunes encontrados en la recopilación de datos
Respuestas de error que podrías ver
La API devuelve JSON estructurado para cada caso de error: código es el código de error de Scrapeless, mensaje es la explicación comprensible. Respuestas reales capturadas de solicitudes intencionadamente inválidas:
| Escenario | HTTP | Cuerpo de respuesta |
|---|---|---|
| Token de API inválido | 401 |
{"code":14404,"message":"token de acceso inválido"} |
| Nombre de actor incorrecto | 400 |
{"code":14002,"message":"actor inválido: <nombre>"} |
Nombre de campo faltante o incorrecto (por ejemplo, página en lugar de tipo) |
400 |
{"code":20404,"message":"error al deserializar la entrada"} |
| Dominio faltante o inválido | 400 |
{"code":20500,"message":"Tipo: error de scraping de rufus: error rpc: código = Código(20500) descripción = el scraping de Rufus falló, si este error persiste, cambie de región"} |
| Fallo transitorio en el upstream (EOF inesperado de Amazon) | 400 |
{"code":20500,"message":"Tipo: error de scraping de rufus: [Amazon] la solicitud de rufusStreaming <url> falló: estado=599,msg=EOF inesperado"} |
| Palabras clave vacías o faltantes | 200 |
Sobre envoltura exitosa, pero el flujo de SSE contiene un fragmento event:softlanding_error y result.products está vacío. Verifica result.products.length === 0 y/o escanea html en busca de softlanding_error. |
Los códigos en el rango 144xx son errores de autenticación y validación de actores; 204xx son errores de forma de solicitud (campo de entrada); 205xx son errores de Amazon en upstream. Trata 205xx con EOF inesperado o cambia la región como transitorio: reintenta con un pequeño retroceso.
Conclusión
Amazon Rufus se está convirtiendo en una superficie clave para el descubrimiento de productos, comparación e investigación previa a la compra. Para los equipos que dependen de datos de intención de compra, ofrece señales valiosas, como recomendaciones de productos, contexto de comparación y preguntas de seguimiento que pueden alimentar flujos de trabajo de SEO, precios y compras con IA.
La API del Scraper de Amazon Rufus de Scrapeless elimina las partes más difíciles de trabajar con Rufus. En lugar de gestionar sesiones de inicio de sesión de Amazon, análisis de SSE, desafíos contra bots y enrutamiento de mercados tú mismo, envías una solicitud y obtienes una salida estructurada. Eso lo convierte en una opción práctica para los flujos de trabajo de producción que necesitan acceso fiable y escalable a la inteligencia de compra generada por Rufus.
Reclama tu plan gratis y comienza a raspar:
Únete a la vibrante comunidad de Scrapeless para reclamar un plan gratuito de $5-10 y conectarte con otros innovadores:
Comunidad Oficial de Discord de Scrapeless
Comunidad Oficial de Telegram de Scrapeless
FAQ sobre la API del Scraper de Amazon Rufus
P: ¿Necesito una cuenta de Amazon o MFA?
No. La autenticación se maneja del lado del servidor por Scrapeless. El código del llamador solo ve result.products y result.related_questions — nunca un formulario de inicio de sesión de Amazon, un desafío de MFA o una jarra de cookies.
P: ¿Para qué se utiliza Amazon Rufus?
Amazon Rufus es el asistente de compra conversacional de Amazon. Los compradores lo utilizan para hacer preguntas sobre productos, comparar opciones y obtener recomendaciones basadas en el caso de uso, el presupuesto y los atributos del producto.
P: ¿Por qué es importante Amazon Rufus para SEO y investigación de productos?
Rufus expone preguntas reales de compra y intenciones de seguimiento que reflejan cómo piensan los usuarios antes de comprar. Esas preguntas son útiles para la expansión de palabras clave, la planificación de contenido, el posicionamiento de productos y la comprensión de lo que más les interesa a los compradores.
P: ¿Se puede extraer directamente datos de Amazon a través de Rufus?
No de manera confiable a través de navegación anónima. Rufus está vinculado a sesiones de clientes que han iniciado sesión y transmite sus respuestas, lo que hace que la extracción manual sea frágil y difícil de escalar. Scrapeless maneja esa complejidad del lado del servidor.
P: ¿Qué hace que Scrapeless sea mejor que construir un scraper personalizado de Rufus?
Scrapeless maneja la autenticación, los tokens anti-bot, el análisis de transmisión y el enrutamiento del mercado por ti. Eso reduce la carga de mantenimiento y hace que la API sea mucho más fácil de usar en producción que un navegador de bricolaje o un pipeline SSE.
P: ¿Qué mercados soporta la API de Rufus?
La API está diseñada para dominios de mercado de Amazon como www.amazon.com, www.amazon.es y www.amazon.de. Eso la hace adecuada para flujos de trabajo de múltiples mercados donde las respuestas de Rufus deben ser localizadas por región. Actualmente, se admiten dominios de Europa y Estados Unidos, ¡y Scrapeless continúa expandiendo los dominios soportados!
P: ¿Qué tipo de datos devuelve la API de Rufus?
Normalmente devuelve un objeto JSON estructurado que contiene recomendaciones de productos, preguntas relacionadas y contexto de la solicitud. Dependiendo de la consulta, también puedes utilizar la salida transmitida en bruto si necesitas datos a nivel de evento completo.
P: ¿Cómo pueden las marcas utilizar los datos de Rufus?
Las marcas pueden utilizar los datos de Rufus para investigación de competidores, análisis de comparación de productos, estrategia de contenido, minería de intención de compra y comercialización asistida por IA. Es especialmente útil cuando deseas entender cuáles atributos de producto resalta Rufus con mayor frecuencia.
P: ¿Es útil la API de Rufus para agentes de IA y automatización?
Sí. Debido a que devuelve datos estructurados en lugar de una sesión de navegador, se integra perfectamente en agentes de IA, pipelines de enriquecimiento, sistemas de recomendación y otros flujos de trabajo automatizados.
En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.



