The Problem
Ecommerce sellers manually check competitor prices on Amazon and Walmart. By the time they notice a competitor dropped their price, they have already lost the Buy Box or sales velocity for days. Manual checks do not scale past 20 products.
The Scavio Solution
Set up automated competitor price monitoring that checks pricing across Amazon, Walmart, and Google Shopping daily. Alert on changes above a threshold. At $0.005/query, monitoring 100 competitor products across 2 platforms costs $1/day.
Before
Manually checking 20 competitor products weekly. Missing price drops that cost Buy Box placement for 3-5 days before noticing.
After
Automated daily checks on 100 competitor products across 2 platforms for $1/day. Price drop alerts trigger within hours, not days.
Who It Is For
Ecommerce sellers and pricing analysts who need to react to competitor price changes within hours, not days.
Key Benefits
- Daily price monitoring for $1/day (100 products x 2 platforms)
- Automated alerts on price changes above threshold
- Cross-marketplace price comparison
- Historical price tracking for trend analysis
- React to competitor price changes within hours
Python Example
import requests, os, json
from pathlib import Path
API_KEY = os.environ["SCAVIO_API_KEY"]
THRESHOLD = 0.05 # 5% price change triggers alert
def check_competitor(query: str, platform: str) -> dict:
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY, "Content-Type": "application/json"},
json={"query": query, "platform": platform},
timeout=15,
)
data = resp.json()
top = data.get("organic_results", [{}])[0] if data.get("organic_results") else {}
return {"title": top.get("title", ""), "price": top.get("price"), "url": top.get("link", "")}
def run_monitor():
competitors = json.loads(Path("competitors.json").read_text())
baseline = json.loads(Path("baseline.json").read_text()) if Path("baseline.json").exists() else {}
alerts = []
for comp in competitors:
for platform in comp.get("platforms", ["amazon"]):
result = check_competitor(comp["query"], platform)
key = f"{comp['slug']}_{platform}"
current_price = result.get("price")
previous_price = baseline.get(key)
if current_price and previous_price:
change = abs(current_price - previous_price) / previous_price
if change >= THRESHOLD:
alerts.append({"product": comp["query"], "platform": platform, "old": previous_price, "new": current_price, "change_pct": round(change * 100, 1)})
if current_price:
baseline[key] = current_price
Path("baseline.json").write_text(json.dumps(baseline, indent=2))
if alerts:
print(f"{len(alerts)} price alerts:")
for a in alerts:
print(f" {a['product']} ({a['platform']}): {a['old']} -> {a['new']} ({a['change_pct']}%)")
run_monitor()JavaScript Example
const fs = require('fs');
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function checkCompetitor(query, platform) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query, platform})});
const d = await r.json();
const top = (d.organic_results||[])[0]||{};
return {title:top.title, price:top.price, url:top.link};
}
const competitors = JSON.parse(fs.readFileSync('competitors.json','utf8'));
const baseline = fs.existsSync('baseline.json') ? JSON.parse(fs.readFileSync('baseline.json','utf8')) : {};
for (const c of competitors) {
for (const p of c.platforms||['amazon']) {
const r = await checkCompetitor(c.query, p);
const key = c.slug+'_'+p;
if (r.price && baseline[key] && Math.abs(r.price-baseline[key])/baseline[key] > 0.05) console.log('ALERT: '+c.query+' '+p+': '+baseline[key]+'->'+r.price);
if (r.price) baseline[key] = r.price;
}
}
fs.writeFileSync('baseline.json', JSON.stringify(baseline,null,2));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