La investigación de productos para decisiones de compra, enriquecimiento de catálogos o análisis competitivo requiere recopilar datos de múltiples fuentes. Un agente de investigación de productos automatiza esto consultando a Google para obtener reseñas y opiniones de expertos, a Amazon para obtener precios y comentarios de los clientes, y a Walmart para obtener precios alternativos, y luego sintetiza todo en un informe estructurado. Este tutorial crea un agente de este tipo utilizando el punto final unificado de la API de Scavio, sin necesidad de administrar múltiples claves de API o límites de velocidad.
Requisitos previos
- Python 3.10 o superior
- solicitudes y futuros concurrentes disponibles
- Una clave API de Scavio
- Comprensión básica de la combinación y el formato de datos
Guia paso a paso
Paso 1: Consulta las tres plataformas simultáneamente
Utilice ThreadPoolExecutor para consultar simultáneamente en Google, Amazon y Walmart el nombre de un producto.
from concurrent.futures import ThreadPoolExecutor
def fetch_all(product: str) -> dict:
queries = {
"google": lambda: search_google(product + " review"),
"amazon": lambda: search_amazon(product),
"walmart": lambda: search_walmart(product),
}
with ThreadPoolExecutor(max_workers=3) as ex:
futures = {name: ex.submit(fn) for name, fn in queries.items()}
return {name: fut.result() for name, fut in futures.items()}Paso 2: Extraer rango de precios de Amazon y Walmart
Recopile precios de ambas plataformas de comercio electrónico y calcule el mínimo y el máximo.
def price_range(data: dict) -> dict:
prices = []
for platform in ["amazon", "walmart"]:
for p in data[platform].get("products", [])[:5]:
ps = p.get("price", "")
if ps:
prices.append(float(ps.replace("$", "").replace(",", "")))
return {"min": min(prices) if prices else None, "max": max(prices) if prices else None}Paso 3: Extraer opinión de reseñas de Google
Recopile fragmentos de resultados orgánicos de Google que contengan señales de revisión, como calificaciones o recomendaciones.
def extract_review_signals(google_data: dict) -> list[str]:
signals = []
for r in google_data.get("organic_results", [])[:5]:
snippet = r.get("snippet", "")
if any(word in snippet.lower() for word in ["recommend", "rating", "review", "best", "worth"]):
signals.append(snippet)
return signalsPaso 4: Armar e imprimir el informe de investigación
Combine rango de precios, señales de revisión y recuento de productos en un informe de investigación formateado.
def research_product(product: str) -> str:
data = fetch_all(product)
pr = price_range(data)
signals = extract_review_signals(data["google"])
lines = [f"Product Research: {product}"]
lines.append(f"Price range: ${pr['min']} — ${pr['max']}")
lines.append("Review signals:")
for s in signals[:3]:
lines.append(f" - {s[:100]}")
return "\n".join(lines)Ejemplo en Python
import os
import requests
from concurrent.futures import ThreadPoolExecutor
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
def call(body: dict) -> dict:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY}, json=body)
r.raise_for_status()
return r.json()
def research(product: str) -> dict:
with ThreadPoolExecutor(max_workers=3) as ex:
g = ex.submit(call, {"query": f"{product} review", "country_code": "us"})
a = ex.submit(call, {"platform": "amazon", "query": product, "marketplace": "US"})
w = ex.submit(call, {"platform": "walmart", "query": product})
return {"google": g.result(), "amazon": a.result(), "walmart": w.result()}
if __name__ == "__main__":
data = research("Sony WH-1000XM5")
amazon_products = data["amazon"].get("products", [])
print(f"Amazon listings: {len(amazon_products)}")
if amazon_products:
print(f"Top Amazon price: {amazon_products[0].get('price')}")
google_count = len(data["google"].get("organic_results", []))
print(f"Google results: {google_count}")Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
async function call(body) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify(body)
});
return res.json();
}
async function research(product) {
const [google, amazon, walmart] = await Promise.all([
call({ query: `${product} review`, country_code: "us" }),
call({ platform: "amazon", query: product, marketplace: "US" }),
call({ platform: "walmart", query: product })
]);
return { google, amazon, walmart };
}
async function main() {
const data = await research("Sony WH-1000XM5");
console.log(`Amazon listings: ${data.amazon.products?.length || 0}`);
console.log(`Google results: ${data.google.organic_results?.length || 0}`);
}
main().catch(console.error);Salida esperada
Product Research: Sony WH-1000XM5
Price range: $249.99 — $349.00
Review signals:
- The WH-1000XM5 remains our top recommendation for noise-canceling headphones...
- Rated 4.8/5 stars across 50,000+ verified reviews on Amazon...
- Best premium wireless headphones in 2026 according to our testing...