The Problem
Prices change constantly across Amazon and Walmart, but there is no unified alerting system that watches both. Browser extensions only work when you have the tab open. Existing price tracking sites are consumer-focused and cannot integrate into your internal tools or agent workflows. For ecommerce teams managing competitive pricing, procurement teams watching vendor costs, or deal-finding agents serving users, missing a price change means missing margin or missing a deal. The change happened yesterday, but you found out next week.
The Scavio Solution
Scavio queries both Amazon and Walmart product listings in one pipeline and returns structured price data you can diff against stored baselines. A daily cron compares today's prices against yesterday's, computes percentage changes, and fires alerts through any webhook when thresholds are crossed. The same script handles both platforms with identical code paths because Scavio normalizes the response schema. You get unified cross-platform price monitoring without building two separate integrations.
Before
Before Scavio, monitoring prices across Amazon and Walmart meant two separate integrations, two browser extensions, or manual spot checks that missed changes between visits.
After
After Scavio, one daily script monitors prices across both platforms and alerts the team within hours of any significant change. No missed price drops, no stale competitive intelligence.
Who It Is For
Ecommerce teams tracking competitive pricing, procurement managers watching vendor costs, and deal-finding agents that need to alert users when prices drop below thresholds.
Key Benefits
- Unified price monitoring across Amazon and Walmart in one script
- Configurable threshold alerts for percentage or absolute changes
- Daily automated checks replace manual spot monitoring
- Webhook integration sends alerts to Slack, email, or internal tools
- Normalized price schema means identical code for both platforms
Python Example
import requests
import json
from pathlib import Path
API_KEY = "your_scavio_api_key"
THRESHOLD_PCT = 5.0
def get_price(product: str, platform: str) -> float | None:
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()
for item in res.json().get("organic", []):
if item.get("price"):
return item["price"]
return None
def check_prices(watchlist: list[dict]) -> list[dict]:
baseline_path = Path("price_baseline.json")
baseline = json.loads(baseline_path.read_text()) if baseline_path.exists() else {}
alerts = []
for item in watchlist:
for platform in item["platforms"]:
key = f"{item['slug']}_{platform}"
current = get_price(item["query"], platform)
previous = baseline.get(key)
if current and previous:
pct_change = ((current - previous) / previous) * 100
if abs(pct_change) >= THRESHOLD_PCT:
alerts.append({
"product": item["query"],
"platform": platform,
"previous": previous,
"current": current,
"change_pct": round(pct_change, 1),
})
if current:
baseline[key] = current
baseline_path.write_text(json.dumps(baseline, indent=2))
return alerts
watchlist = [
{"slug": "airpods-pro", "query": "airpods pro 2", "platforms": ["amazon", "walmart"]},
{"slug": "kindle-paperwhite", "query": "kindle paperwhite", "platforms": ["amazon", "walmart"]},
]
alerts = check_prices(watchlist)
for a in alerts:
print(f"{a['product']} on {a['platform']}: ${a['previous']} -> ${a['current']} ({a['change_pct']}%)")JavaScript Example
const API_KEY = "your_scavio_api_key";
const THRESHOLD_PCT = 5.0;
async function getPrice(product, platform) {
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 data = await res.json();
for (const item of data.organic ?? []) {
if (item.price) return item.price;
}
return null;
}
async function checkPrices(watchlist) {
const fs = await import("fs/promises");
let baseline = {};
try { baseline = JSON.parse(await fs.readFile("price_baseline.json", "utf8")); } catch {}
const alerts = [];
for (const item of watchlist) {
for (const platform of item.platforms) {
const key = `${item.slug}_${platform}`;
const current = await getPrice(item.query, platform);
const previous = baseline[key];
if (current && previous) {
const pctChange = ((current - previous) / previous) * 100;
if (Math.abs(pctChange) >= THRESHOLD_PCT) {
alerts.push({ product: item.query, platform, previous, current, changePct: Math.round(pctChange * 10) / 10 });
}
}
if (current) baseline[key] = current;
}
}
await fs.writeFile("price_baseline.json", JSON.stringify(baseline, null, 2));
return alerts;
}
const watchlist = [
{ slug: "airpods-pro", query: "airpods pro 2", platforms: ["amazon", "walmart"] },
{ slug: "kindle-paperwhite", query: "kindle paperwhite", platforms: ["amazon", "walmart"] },
];
const alerts = await checkPrices(watchlist);
for (const a of alerts) console.log(`${a.product} on ${a.platform}: $${a.previous} -> $${a.current} (${a.changePct}%)`);Platforms Used
Amazon
Product search with prices, ratings, and reviews
Walmart
Product search with pricing and fulfillment data