El seguimiento de precios de los productos de Google Shopping es útil para decisiones de compra personales, inteligencia competitiva y arbitraje de comercio electrónico. Crear su propio sistema de alerta de precios le permite realizar un seguimiento de productos específicos y recibir notificaciones cuando los precios caen por debajo de su umbral. Este tutorial muestra cómo consultar Google Shopping a través de la API de Scavio, almacenar el historial de precios, detectar cambios de precios y activar alertas. Construirá un canal que se ejecutará según un cronograma y le notificará sobre movimientos de precios significativos.
Requisitos previos
- Python 3.8+ instalado
- solicita biblioteca instalada
- Una clave API de Scavio de scavio.dev
- Una lista de productos a monitorear
Guia paso a paso
Paso 1: Definir productos a monitorear
Configure los productos y los precios objetivo que desea rastrear.
import os, requests, json
from datetime import date
API_KEY = os.environ["SCAVIO_API_KEY"]
WATCHLIST = [
{"query": "Sony WH-1000XM5", "target_price": 250.00},
{"query": "Apple AirPods Pro 2", "target_price": 180.00},
{"query": "Samsung Galaxy Buds 3", "target_price": 120.00},
]
HISTORY_FILE = "price_history.json"Paso 2: Obtener precios actuales
Consulta Google Shopping para cada producto y extrae el precio actual más bajo.
def get_prices(product_query):
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": product_query, "type": "shopping"})
results = resp.json().get("shopping_results", [])[:10]
prices = []
for r in results:
price_str = r.get("price", "").replace("$", "").replace(",", "")
try:
prices.append({"title": r["title"], "price": float(price_str),
"seller": r.get("source", ""), "link": r.get("link", "")})
except ValueError:
continue
return sorted(prices, key=lambda x: x["price"])Paso 3: Seguimiento del historial de precios
Almacene los precios a lo largo del tiempo para detectar tendencias y caídas.
def load_history():
try:
with open(HISTORY_FILE) as f:
return json.load(f)
except FileNotFoundError:
return {}
def save_price(query, prices):
history = load_history()
if query not in history:
history[query] = []
if prices:
history[query].append({
"date": date.today().isoformat(),
"lowest": prices[0]["price"],
"seller": prices[0]["seller"],
})
with open(HISTORY_FILE, "w") as f:
json.dump(history, f, indent=2)Paso 4: Consultar alertas y notificar
Compare los precios actuales con los precios objetivo y los precios anteriores para detectar caídas.
def check_alerts(watchlist):
alerts = []
for item in watchlist:
prices = get_prices(item["query"])
if not prices: continue
lowest = prices[0]["price"]
save_price(item["query"], prices)
if lowest <= item["target_price"]:
alerts.append({
"product": item["query"],
"price": lowest,
"target": item["target_price"],
"seller": prices[0]["seller"],
"link": prices[0]["link"],
})
print(f"ALERT: {item['query']} at ${lowest} (target: ${item['target_price']})")
else:
print(f"{item['query']}: ${lowest} (target: ${item['target_price']})")
return alerts
alerts = check_alerts(WATCHLIST)Ejemplo en Python
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
def lowest_price(query):
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": query, "type": "shopping"})
results = resp.json().get("shopping_results", [])[:5]
prices = []
for r in results:
try: prices.append(float(r.get("price","0").replace("$","").replace(",","")))
except: pass
return min(prices) if prices else None
print(f"Lowest: ${lowest_price('Sony WH-1000XM5')}")Ejemplo en JavaScript
const H = {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"};
async function lowestPrice(query) {
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H,
body: JSON.stringify({platform: "google", query, type: "shopping"})
});
const items = (await r.json()).shopping_results || [];
const prices = items.map(i => parseFloat((i.price||"0").replace(/[$,]/g,""))).filter(Boolean);
return Math.min(...prices);
}
lowestPrice("Sony WH-1000XM5").then(p => console.log("Lowest: $" + p));Salida esperada
A price monitoring pipeline that tracks Google Shopping prices, stores history, detects drops, and alerts when products hit target price thresholds.