The Problem
Google AI Overviews sometimes contain inaccuracies or outdated claims that propagate into LLM responses. Content teams need to verify whether their published facts align with what Google's AI Overview says. Manual checking does not scale when monitoring hundreds of queries.
The Scavio Solution
Use Scavio to extract AI Overviews programmatically, then compare claims against your source data. The pipeline flags discrepancies between your content and what Google's AI Overview states, letting content teams prioritize corrections and updates.
Before
Content team manually Googles 20 key queries per week, reads AI Overviews, compares with published content. Takes 4 hours. Misses discrepancies.
After
Pipeline checks 500 queries daily, extracts AI Overviews, flags content mismatches. Content team fixes only flagged items. 15 minutes/day.
Who It Is For
Content teams and SEO professionals who need to verify their published facts against Google AI Overviews at scale.
Key Benefits
- Programmatic AI Overview extraction at scale
- Automated discrepancy detection
- 500 queries/day for $2.50 in credits
- Priority-ranked content fixes
- Prevents LLM propagation of outdated facts
Python Example
import requests, os
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY, "Content-Type": "application/json"}
def extract_ai_overview(query: str) -> dict:
"""Extract AI Overview for fact-checking."""
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": query, "country_code": "us"},
timeout=10,
)
data = resp.json()
aio = data.get("ai_overview", {})
return {
"query": query,
"has_aio": bool(aio),
"text": aio.get("text", ""),
"sources": [s.get("link", "") for s in aio.get("sources", [])],
}
def fact_check_batch(queries: list, known_facts: dict) -> list:
"""Check AI Overviews against known facts."""
flags = []
for q in queries:
aio = extract_ai_overview(q)
if not aio["has_aio"]:
continue
for fact_key, expected in known_facts.get(q, {}).items():
if expected.lower() not in aio["text"].lower():
flags.append({"query": q, "missing_fact": fact_key, "expected": expected, "aio_text": aio["text"][:200]})
return flags
queries = ["scavio search api pricing"]
known = {"scavio search api pricing": {"free_tier": "250 credits", "paid": "$30/month"}}
flags = fact_check_batch(queries, known)
for f in flags:
print(f"MISMATCH: {f['query']} - missing '{f['missing_fact']}'")JavaScript Example
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function extractAiOverview(query) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query, country_code:'us'})});
const d = await r.json();
const aio = d.ai_overview || {};
return {query, hasAio:!!d.ai_overview, text:aio.text||'', sources:(aio.sources||[]).map(s=>s.link||'')};
}
async function factCheckBatch(queries, knownFacts) {
const flags = [];
for (const q of queries) {
const aio = await extractAiOverview(q);
if (!aio.hasAio) continue;
for (const [key, expected] of Object.entries(knownFacts[q]||{})) {
if (!aio.text.toLowerCase().includes(expected.toLowerCase())) {
flags.push({query:q, missingFact:key, expected, aioText:aio.text.slice(0,200)});
}
}
}
return flags;
}
const flags = await factCheckBatch(['scavio search api pricing'], {'scavio search api pricing':{free_tier:'250 credits', paid:'$30/month'}});
for (const f of flags) console.log('MISMATCH: '+f.query+' - missing '+f.missingFact);Platforms Used
Web search with knowledge graph, PAA, and AI overviews