← Todos los artículos

Cómo crear un rastreador de precios en tiempo real con FourA

Los precios de la competencia cambian cada hora. Descubre cómo crear un rastreador de precios automatizado para cientos de páginas de productos con una sola llamada a la API y Python básico.

Las decisiones de precios en e-commerce ocurren rápido. Un competidor baja su precio un 5% y, en cuestión de horas, los clientes lo notan. Las empresas que ganan son las que se dan cuenta primero.

Antes, construir un sistema de monitoreo de precios requería mantener infraestructura de proxies, lidiar con la detección de bots y escribir scrapers personalizados para cada sitio objetivo. FourA reduce toda esa complejidad a una sola llamada a la API.

El problema

La verificación manual de precios no escala. Incluso un negocio pequeño de e-commerce con 50 competidores necesita rastrear cientos de páginas de productos. Con tres comprobaciones al día, eso suma más de 1.000 requests diarias, y cada una puede ser bloqueada, sufrir rate limit o romperse por un rediseño del sitio.

El enfoque

Así es como se ve un pipeline de monitoreo de precios listo para producción con FourA:

1. Define tu catálogo de productos

Comienza con una lista estructurada de URLs de competidores y los selectores CSS donde aparecen los precios:

products = [
    {"sku": "WDG-001", "competitor": "Store A", "url": "https://store-a.com/widget", "selector": ".price-current"},
    {"sku": "WDG-001", "competitor": "Store B", "url": "https://store-b.com/products/widget", "selector": "[data-price]"},
]

2. Fetch y Parseo

FourA se encarga de las partes difíciles: huella TLS, rotación de proxy y renderizado de JavaScript. Tu código solo envía una URL y recibe HTML de vuelta:

import requests
from bs4 import BeautifulSoup

def get_price(product):
    resp = requests.post("https://eu.api.foura.ai/api/v1/tasks", headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    }, json={"url": product["url"], "type": "proxy"})
    
    html = resp.json()["content"]
    soup = BeautifulSoup(html, "html.parser")
    el = soup.select_one(product["selector"])
    return float(el.text.strip().replace("$", "").replace(",", "")) if el else None

3. Rastrea cambios a lo largo del tiempo

Almacena los resultados en una base de datos o CSV. Marca cambios significativos para alertas:

if abs(new_price - last_price) / last_price > 0.03:  # 3% threshold
    send_alert(f"{product['competitor']} changed {product['sku']} from ${last_price} to ${new_price}")

4. Programa con Cron

Ejecuta el rastreador cada hora o cada pocas horas según la volatilidad de precios de tu mercado.

Por qué funciona

  • Sin infraestructura que mantener. Sin servidores proxy, sin granjas de navegadores y sin lógica de rotación de IP.
  • Se adapta a los cambios de protección. El tipo de proxy de FourA reintenta automáticamente a través de diferentes rutas cuando una se bloquea.
  • Escala de forma lineal. Añadir 100 productos más son simplemente 100 llamadas a la API adicionales, sin necesidad de cambios en la arquitectura.

Primeros pasos

Todo el pipeline anterior (sin contar la lógica de alertas) se ejecuta en menos de 50 líneas de Python. Y una vez que funciona para 50 productos, escalar a 500 es solo cuestión de tener una lista más larga. La llamada a la API sigue siendo la misma, el parsing sigue siendo el mismo y la programación sigue siendo la misma. De eso se trata.

El código de ejemplo completo está disponible en la guía práctica, y la documentación de la API cubre cada parámetro que necesitarás para personalizarlo.