The Problem
Ecommerce teams need price intelligence across Amazon, Walmart, and Google Shopping, but each platform requires a separate scraper or API integration. Maintaining three scrapers means three sets of proxy rotations, three HTML parsers, and three on-call rotations when layouts change. The data arrives in different formats with different field names, making cross-platform comparison a manual spreadsheet exercise. By the time the weekly comparison report is ready, the prices have already changed.
The Scavio Solution
Scavio queries Amazon, Walmart, and Google Shopping through the same endpoint with the same JSON schema. A single script fetches prices from all three platforms, normalizes them into a comparison table, and stores daily snapshots for trend analysis. The same field names (title, price, link) appear regardless of platform, so comparison logic writes once and works everywhere. At $0.005/credit, tracking 100 products daily across three platforms costs $45/mo.
Before
Before Scavio, cross-platform price tracking meant three separate scrapers, three maintenance burdens, and a weekly manual comparison spreadsheet that was outdated before it was finished.
After
After Scavio, one script tracks prices across all three platforms daily. Cross-platform comparison is automated, trends are visible in real time, and the cost is $45/mo for 100 products across three platforms.
Who It Is For
Ecommerce teams tracking competitive pricing, deal aggregators building cross-platform comparison tools, and procurement managers monitoring vendor costs across multiple retailers.
Key Benefits
- One API endpoint for Amazon, Walmart, and Google Shopping
- Normalized price schema eliminates manual data mapping
- Daily automated tracking replaces weekly manual comparisons
- Historical snapshots enable trend analysis over time
- 100 products across 3 platforms for $45/mo
Python Example
import requests
import json
from pathlib import Path
from datetime import datetime
API_KEY = "your_scavio_api_key"
PLATFORMS = ["amazon", "walmart"]
def get_prices(product: str) -> dict:
prices = {"product": product, "checked_at": datetime.utcnow().isoformat()}
for platform in PLATFORMS:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": platform, "query": product},
timeout=15,
)
res.raise_for_status()
results = res.json().get("organic", [])
best = None
for item in results:
if item.get("price"):
if best is None or item["price"] < best["price"]:
best = {
"price": item["price"],
"title": item.get("title", ""),
"link": item.get("link", ""),
"rating": item.get("rating"),
}
prices[platform] = best
return prices
def track_products(products: list[str]) -> list[dict]:
results = [get_prices(p) for p in products]
date = datetime.utcnow().strftime("%Y-%m-%d")
Path(f"price_tracker_{date}.json").write_text(json.dumps(results, indent=2))
return results
products = ["sony wh-1000xm5", "airpods pro 2", "samsung galaxy s25"]
tracked = track_products(products)
for item in tracked:
print(f"\n{item['product']}:")
for platform in PLATFORMS:
data = item.get(platform)
if data:
print(f" {platform}: ${data['price']} - {data['title'][:50]}")
else:
print(f" {platform}: not found")JavaScript Example
const API_KEY = "your_scavio_api_key";
const PLATFORMS = ["amazon", "walmart"];
async function getPrices(product) {
const prices = { product, checkedAt: new Date().toISOString() };
for (const platform of PLATFORMS) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform, query: product }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
const results = (await res.json()).organic ?? [];
const withPrice = results.filter((r) => r.price).sort((a, b) => a.price - b.price);
prices[platform] = withPrice[0] ? { price: withPrice[0].price, title: withPrice[0].title ?? "", link: withPrice[0].link ?? "" } : null;
}
return prices;
}
const products = ["sony wh-1000xm5", "airpods pro 2"];
for (const p of products) {
const data = await getPrices(p);
console.log(`\n${data.product}:`);
for (const pl of PLATFORMS) console.log(` ${pl}: ${data[pl] ? `$${data[pl].price}` : "not found"}`);
}Platforms Used
Amazon
Product search with prices, ratings, and reviews
Walmart
Product search with pricing and fulfillment data
Google Shopping
Shopping results with multi-retailer pricing