ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo crear un monitor de productos de Amazon a través de API
Tutorial

Cómo crear un monitor de productos de Amazon a través de API

Cree un monitor de productos de Amazon que rastree los precios, el BSR y el recuento de reseñas mediante una API de búsqueda. Incluye programación, alertas y almacenamiento de tendencias históricas.

Obtener clave API gratisDocumentacion API

La creación de un monitor de productos de Amazon que rastrea los precios, la clasificación de los más vendidos y el recuento de reseñas brinda a los vendedores y analistas un pulso continuo sobre el rendimiento del producto sin verificaciones manuales. El scraping directo de Amazon no es confiable a escala debido a la detección agresiva de bots y a los diseños de página en constante cambio. La API de búsqueda de Scavio devuelve datos estructurados de productos de Amazon, incluido el precio actual, BSR, calificación y recuento de reseñas para cualquier consulta de ASIN. Este tutorial crea un monitor completo que sondea los ASIN según un cronograma, almacena puntos de datos históricos en una base de datos JSON local e imprime alertas cuando las métricas clave cruzan umbrales.

Requisitos previos

  • Python 3.8 o superior instalado
  • solicita biblioteca instalada (solicitudes de instalación de pip)
  • Una clave API de Scavio de scavio.dev
  • Uno o más ASIN de Amazon para rastrear

Guia paso a paso

Paso 1: Configurar ASIN y umbrales de alerta

Defina los ASIN para monitorear junto con los umbrales de caídas de precios, saltos de BSR y revisar los hitos del recuento. Estos umbrales controlan cuándo el monitor imprime alertas.

Python
ASINS = {
    'B09G9FPHY6': {
        'name': 'Echo Dot 5th Gen',
        'price_floor': 30.00,
        'bsr_alert_jump': 5000,
        'review_milestone': 1000
    },
    'B07FZ8S74R': {
        'name': 'Fire TV Stick 4K',
        'price_floor': 25.00,
        'bsr_alert_jump': 3000,
        'review_milestone': 5000
    }
}

Paso 2: Obtenga datos de productos de Amazon de Scavio

PUBLICAR en el punto final de Scavio con la plataforma de Amazon y ASIN como consulta. Extraiga el objeto del producto que contiene precio, BSR, calificación y recuento de reseñas.

Python
import requests
import os

API_KEY = os.environ.get('SCAVIO_API_KEY', 'your_scavio_api_key')

def fetch_product(asin: str) -> dict:
    response = requests.post(
        'https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': API_KEY},
        json={'platform': 'amazon', 'query': asin, 'marketplace': 'US'}
    )
    response.raise_for_status()
    data = response.json()
    product = data.get('product', {})
    return {
        'asin': asin,
        'title': product.get('title', ''),
        'price': product.get('price', ''),
        'bsr': product.get('best_sellers_rank', 0),
        'rating': product.get('rating', 0),
        'reviews': product.get('reviews_count', 0)
    }

Paso 3: Almacenar puntos de datos históricos

Adjunte cada recuperación de datos a un archivo histórico basado en JSON con clave ASIN y marca de tiempo. Esto crea una serie de tiempo que se puede utilizar para análisis de tendencias o gráficos.

Python
import json
from pathlib import Path
from datetime import datetime

HISTORY_FILE = Path('amazon_monitor_history.json')

def append_history(asin: str, data_point: dict) -> None:
    history = json.loads(HISTORY_FILE.read_text()) if HISTORY_FILE.exists() else {}
    if asin not in history:
        history[asin] = []
    data_point['timestamp'] = datetime.now().isoformat()
    history[asin].append(data_point)
    HISTORY_FILE.write_text(json.dumps(history, indent=2))

Paso 4: Verificar umbrales y generar alertas

Compare el punto de datos actual con los umbrales y el punto de datos anterior. Genere alertas de caídas de precios por debajo del nivel mínimo, grandes saltos de BSR y revise los hitos.

Python
def check_alerts(asin: str, current: dict, config: dict, history: list) -> None:
    price_val = current.get('price', '')
    if price_val:
        price_num = float(str(price_val).replace('$', '').replace(',', ''))
        if price_num <= config['price_floor']:
            print(f'  PRICE ALERT: {config["name"]} at ${price_num:.2f} (floor: ${config["price_floor"]})')
    if len(history) >= 2:
        prev_bsr = history[-2].get('bsr', 0)
        curr_bsr = current.get('bsr', 0)
        if prev_bsr and curr_bsr and abs(curr_bsr - prev_bsr) > config['bsr_alert_jump']:
            direction = 'dropped' if curr_bsr > prev_bsr else 'improved'
            print(f'  BSR ALERT: {config["name"]} {direction} from {prev_bsr} to {curr_bsr}')
    if current.get('reviews', 0) >= config['review_milestone']:
        print(f'  MILESTONE: {config["name"]} has {current["reviews"]} reviews')

Paso 5: Ejecute el monitor e imprima una tabla resumen

Itere todos los ASIN, obtenga datos, almacene el historial, verifique alertas e imprima una tabla de resumen. Programe este script con cron para ejecuciones horarias o diarias.

Python
def run_monitor():
    history = json.loads(HISTORY_FILE.read_text()) if HISTORY_FILE.exists() else {}
    print(f'Amazon Product Monitor - {datetime.now().strftime("%Y-%m-%d %H:%M")}')
    print(f'{"ASIN":<14} {"Product":<25} {"Price":<10} {"BSR":<10} {"Reviews"}')
    print('-' * 70)
    for asin, config in ASINS.items():
        product = fetch_product(asin)
        append_history(asin, product)
        updated_history = json.loads(HISTORY_FILE.read_text())
        check_alerts(asin, product, config, updated_history.get(asin, []))
        print(f'{asin:<14} {config["name"]:<25} {product["price"]:<10} {product["bsr"]:<10} {product["reviews"]}')

run_monitor()

Ejemplo en Python

Python
import os
import json
import requests
from pathlib import Path
from datetime import datetime

API_KEY = os.environ.get('SCAVIO_API_KEY', 'your_scavio_api_key')
ENDPOINT = 'https://api.scavio.dev/api/v1/search'
HISTORY_FILE = Path('amazon_monitor_history.json')

ASINS = {
    'B09G9FPHY6': {'name': 'Echo Dot 5th Gen', 'price_floor': 30.00, 'bsr_alert_jump': 5000, 'review_milestone': 1000},
    'B07FZ8S74R': {'name': 'Fire TV Stick 4K', 'price_floor': 25.00, 'bsr_alert_jump': 3000, 'review_milestone': 5000}
}

def fetch_product(asin: str) -> dict:
    response = requests.post(
        ENDPOINT,
        headers={'x-api-key': API_KEY},
        json={'platform': 'amazon', 'query': asin, 'marketplace': 'US'}
    )
    response.raise_for_status()
    product = response.json().get('product', {})
    return {
        'asin': asin,
        'title': product.get('title', ''),
        'price': product.get('price', ''),
        'bsr': product.get('best_sellers_rank', 0),
        'rating': product.get('rating', 0),
        'reviews': product.get('reviews_count', 0)
    }

def append_history(asin: str, data_point: dict) -> None:
    history = json.loads(HISTORY_FILE.read_text()) if HISTORY_FILE.exists() else {}
    if asin not in history:
        history[asin] = []
    data_point['timestamp'] = datetime.now().isoformat()
    history[asin].append(data_point)
    HISTORY_FILE.write_text(json.dumps(history, indent=2))

def check_alerts(asin: str, current: dict, config: dict, history: list) -> None:
    price_val = current.get('price', '')
    if price_val:
        price_num = float(str(price_val).replace('$', '').replace(',', ''))
        if price_num <= config['price_floor']:
            print(f'  PRICE ALERT: {config["name"]} at ${price_num:.2f} (floor: ${config["price_floor"]})')
    if len(history) >= 2:
        prev_bsr = history[-2].get('bsr', 0)
        curr_bsr = current.get('bsr', 0)
        if prev_bsr and curr_bsr and abs(curr_bsr - prev_bsr) > config['bsr_alert_jump']:
            direction = 'dropped' if curr_bsr > prev_bsr else 'improved'
            print(f'  BSR ALERT: {config["name"]} {direction} from {prev_bsr} to {curr_bsr}')
    if current.get('reviews', 0) >= config['review_milestone']:
        print(f'  MILESTONE: {config["name"]} has {current["reviews"]} reviews')

def run_monitor():
    history = json.loads(HISTORY_FILE.read_text()) if HISTORY_FILE.exists() else {}
    print(f'Amazon Product Monitor - {datetime.now().strftime("%Y-%m-%d %H:%M")}')
    print(f'{"ASIN":<14} {"Product":<25} {"Price":<10} {"BSR":<10} {"Reviews"}')
    print('-' * 70)
    for asin, config in ASINS.items():
        product = fetch_product(asin)
        append_history(asin, product)
        updated = json.loads(HISTORY_FILE.read_text())
        check_alerts(asin, product, config, updated.get(asin, []))
        print(f'{asin:<14} {config["name"]:<25} {product["price"]:<10} {product["bsr"]:<10} {product["reviews"]}')

if __name__ == '__main__':
    run_monitor()

Ejemplo en JavaScript

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || 'your_scavio_api_key';
const ENDPOINT = 'https://api.scavio.dev/api/v1/search';
const fs = require('fs');
const HISTORY_FILE = 'amazon_monitor_history.json';

const ASINS = {
  B09G9FPHY6: { name: 'Echo Dot 5th Gen', priceFloor: 30.0, bsrAlertJump: 5000 },
  B07FZ8S74R: { name: 'Fire TV Stick 4K', priceFloor: 25.0, bsrAlertJump: 3000 }
};

async function fetchProduct(asin) {
  const response = await fetch(ENDPOINT, {
    method: 'POST',
    headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ platform: 'amazon', query: asin, marketplace: 'US' })
  });
  if (!response.ok) throw new Error('HTTP ' + response.status);
  const data = await response.json();
  const product = data.product || {};
  return {
    asin,
    title: product.title || '',
    price: product.price || '',
    bsr: product.best_sellers_rank || 0,
    rating: product.rating || 0,
    reviews: product.reviews_count || 0
  };
}

async function main() {
  const history = fs.existsSync(HISTORY_FILE) ? JSON.parse(fs.readFileSync(HISTORY_FILE, 'utf-8')) : {};
  console.log('Amazon Product Monitor - ' + new Date().toISOString().slice(0, 16));
  for (const [asin, config] of Object.entries(ASINS)) {
    const product = await fetchProduct(asin);
    if (!history[asin]) history[asin] = [];
    product.timestamp = new Date().toISOString();
    history[asin].push(product);
    const priceNum = parseFloat(String(product.price).replace(/[$,]/g, ''));
    if (priceNum && priceNum <= config.priceFloor) {
      console.log('  PRICE ALERT: ' + config.name + ' at $' + priceNum.toFixed(2));
    }
    console.log(asin + ' | ' + config.name + ' | ' + product.price + ' | BSR: ' + product.bsr + ' | Reviews: ' + product.reviews);
  }
  fs.writeFileSync(HISTORY_FILE, JSON.stringify(history, null, 2));
  console.log('History saved');
}

main().catch(console.error);

Salida esperada

JSON
Amazon Product Monitor - 2026-05-12 14:30
ASIN           Product                   Price      BSR        Reviews
----------------------------------------------------------------------
B09G9FPHY6     Echo Dot 5th Gen          $29.99     1234       45678
  PRICE ALERT: Echo Dot 5th Gen at $29.99 (floor: $30.0)
  MILESTONE: Echo Dot 5th Gen has 45678 reviews
B07FZ8S74R     Fire TV Stick 4K          $34.99     892        98321
  MILESTONE: Fire TV Stick 4K has 98321 reviews
History saved

Tutoriales relacionados

  • Cómo monitorear los productos de comercio electrónico en todas las plataformas
  • Cómo crear un panel de operaciones con datos de búsqueda

Preguntas frecuentes

La mayoria de los desarrolladores completan este tutorial en 15 a 30 minutos. Necesitaras una clave API de Scavio (el plan gratuito funciona) y un entorno de Python o JavaScript.

Python 3.8 o superior instalado. solicita biblioteca instalada (solicitudes de instalación de pip). Una clave API de Scavio de scavio.dev. Uno o más ASIN de Amazon para rastrear. Una clave API de Scavio te da 50 creditos gratuitos al registrarte.

Si. El plan gratuito incluye 50 creditos al registrarte, mas que suficiente para completar este tutorial y crear un prototipo funcional.

Scavio tiene un paquete nativo de LangChain (langchain-scavio), un servidor MCP y una API REST simple que funciona con cualquier cliente HTTP. Este tutorial usa the raw REST API, pero puedes adaptarlo al framework que prefieras.

Recursos relacionados

Best Of

Las mejores API de productos de Amazon para reemplazar raspadores (2026)

Read more
Best Of

La mejor API de raspado de Amazon en 2026

Read more
Glossary

Panorama de proveedores de API de búsqueda (2026)

Read more
Glossary

API de datos de productos de Amazon

Read more
Solution

Datos de Productos de Amazon Sin Mantenimiento

Read more
Solution

Reemplaza Scrapers de Amazon con API de Busqueda de Productos

Read more

Empieza a construir

Cree un monitor de productos de Amazon que rastree los precios, el BSR y el recuento de reseñas mediante una API de búsqueda. Incluye programación, alertas y almacenamiento de tendencias históricas.

Obtener clave API gratuitaLeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad