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 el comercio electrónico ocurren rápido. Un competidor baja su precio un 5% y, en cuestión de horas, los clientes se dan cuenta. Las empresas que ganan son las que se dan cuenta primero.

Antes, construir un sistema de monitoreo de precios requería mantener una infraestructura de proxy, lidiar con sistemas antibot y escribir scrapers personalizados para cada sitio web objetivo. FourA reduce toda esa complejidad a una sola llamada a la API.

El problema

La verificación manual de precios no es escalable. Incluso un pequeño negocio de comercio electrónico con 50 competidores necesita rastrear cientos de páginas de productos. Con tres verificaciones al día, eso representa más de 1,000 requests diarios, cada uno potencialmente bloqueado, limitado por rate limit o roto debido al rediseño de un 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 URL 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: TLS fingerprinting, rotación de proxy y renderizado de JavaScript. Tu código solo envía una URL y recibe el 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. Seguimiento de cambios a lo largo del tiempo

Almacena los resultados en una base de datos o CSV. Marca los cambios significativos para enviar 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. Programación con Cron

Ejecuta el rastreador cada hora o cada pocas horas, dependiendo de la volatilidad de precios de tu mercado.

Por qué funciona

  • Sin infraestructura que mantener. Sin servidores proxy, sin granjas de navegadores, sin lógica de rotación de IP.
  • Se adapta a los cambios de protección. El tipo de proxy de FourA realiza reintentos automáticos a través de diferentes rutas cuando una se bloquea.
  • Escala linealmente. Agregar 100 productos más son solo 100 llamadas a la API adicionales, sin necesidad de cambios en la arquitectura.

Primeros pasos

Todo el pipeline anterior (menos 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 parseo sigue siendo el mismo y la programación sigue siendo la misma. Ese es el punto.

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.