The Problem
Sales and marketing teams maintain competitor pricing sheets that go stale within weeks. When a competitor changes their pricing, the internal docs are not updated. Sales reps use incorrect data in competitive situations.
The Scavio Solution
An automated SERP verification script searches each competitor's pricing page weekly, extracts price mentions from search snippets, and flags discrepancies against internally stored prices.
Before
Sales enablement doc lists Competitor X at '$29/month starter'. Competitor X changed to '$39/month' two months ago. Sales rep quotes '$29' in a competitive deal. Prospect checks the competitor's site during the call. Credibility damaged.
After
Weekly automated check searches 'site:competitorX.com pricing' via Scavio, extracts price strings from snippets, compares with stored values, and sends a Slack alert when prices appear to have changed. Sales doc is updated before the next rep uses it.
Who It Is For
Sales enablement teams, competitive intelligence analysts, and product marketers who maintain competitor pricing docs and need timely updates.
Key Benefits
- Weekly automated verification with Slack or email alerts
- Catches pricing changes within 7 days instead of months
- Works for any number of competitors
- No scraping — uses public SERP snippets
Python Example
import requests
import re
def verify_competitor_pricing(domain: str, known_prices: list, api_key: str) -> dict:
r = requests.post(
"https://api.scavio.dev/api/v1/search",
json={"query": f"site:{domain} pricing", "num_results": 5},
headers={"x-api-key": api_key}, timeout=15
)
r.raise_for_status()
results = r.json().get("organic_results", [])
price_pat = re.compile(r"\$[\d,]+(?:\.\d+)?(?:/(?:mo|month|year|user))?")
found = set()
for res in results:
found.update(price_pat.findall(res.get("snippet", "")))
new_prices = [p for p in found if p not in known_prices]
return {"domain": domain, "found": list(found), "new": new_prices, "status": "check" if new_prices else "ok"}
result = verify_competitor_pricing("competitor.com", ["$29/mo", "$99/mo"], "your-scavio-api-key")
print(result)JavaScript Example
async function verifyPricing(domain, knownPrices, apiKey) {
const res = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': apiKey },
body: JSON.stringify({ query: `site:${domain} pricing`, num_results: 5 })
});
const data = await res.json();
const pat = /\$[\d,]+(?:\.\d+)?(?:\/(?:mo|month|year))?/g;
const found = new Set((data.organic_results ?? []).flatMap(r => r.snippet?.match(pat) ?? []));
const newPrices = [...found].filter(p => !knownPrices.includes(p));
return { domain, found: [...found], newPrices, status: newPrices.length ? 'check' : 'ok' };
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews