← Todos os posts

Construindo um Monitor de Preços em Tempo Real com a FourA

Os preços dos concorrentes mudam a cada hora. Veja como construir um monitor de preços automatizado em centenas de páginas de produtos com uma única chamada de API e Python básico.

Decisões de preços no e-commerce acontecem rápido. Um concorrente reduz o preço em 5% e, em poucas horas, os clientes percebem. As empresas que vencem são as que percebem primeiro.

Construir um sistema de monitoramento de preços costumava exigir a manutenção de infraestrutura de proxy, lidar com detecção de bots e escrever scrapers customizados para cada site alvo. O FourA reduz essa complexidade a uma única chamada de API.

O Problema

A verificação manual de preços não escala. Mesmo uma pequena empresa de e-commerce com 50 concorrentes precisa rastrear centenas de páginas de produtos. Com três verificações por dia, são mais de 1.000 requests diários, cada um potencialmente bloqueado, limitado por rate limit ou quebrado por uma reformulação do site.

A Abordagem

Veja como é uma pipeline de monitoramento de preços pronta para produção com o FourA:

1. Defina Seu Catálogo de Produtos

Comece com uma lista estruturada de URLs de concorrentes e os seletores CSS onde os preços aparecem:

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. Buscar e processar

O FourA cuida das partes difíceis: fingerprinting de TLS, rotação de proxy e renderização de JavaScript. Seu código apenas envia uma URL e recebe HTML de volta:

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. Acompanhe alterações ao longo do tempo

Armazene os resultados em um banco de dados ou CSV. Sinalize alterações significativas 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. Agende com Cron

Execute o rastreador a cada hora ou a cada poucas horas, dependendo da volatilidade de preços do seu mercado.

Por que isso funciona

  • Sem infraestrutura para manter. Sem servidores proxy, sem farms de navegadores, sem lógica de rotação de IP.
  • Adapta-se a mudanças de proteção. O tipo de proxy do FourA tenta novamente de forma automática por meio de rotas diferentes quando uma é bloqueada.
  • Escala de forma linear. Adicionar mais 100 produtos significa apenas mais 100 chamadas de API, sem necessidade de alterações arquiteturais.

Como começar

Todo o pipeline acima (exceto a lógica de alertas) roda em menos de 50 linhas de Python. E quando estiver funcionando para 50 produtos, escalar para 500 é apenas uma lista maior. A chamada de API permanece a mesma, o parsing permanece o mesmo e o agendamento permanece o mesmo. Esse é o objetivo.

O código de exemplo completo está disponível no guia How-To, e a documentação da API cobre todos os parâmetros que você precisará para personalizá-lo.