The Problem
SEO agencies need to show clients whether their content appears in Google AI Overviews. No mainstream rank tracker surfaces AI Overview citation data. Agencies manually check important keywords and screenshot results, which does not scale past 20 keywords.
The Scavio Solution
Build an automated pipeline that checks target keywords for AI Overview presence and extracts citation sources. Run daily or weekly to track changes. At $0.005/query, monitoring 100 keywords daily costs $0.50/day ($15/month).
Before
Agency intern manually Googles 20 keywords weekly and screenshots AI Overview results. Takes 2 hours. Client gets a static PDF with no trend data.
After
Automated pipeline checks 100 keywords daily for $15/month. Client dashboard shows AIO presence trends, citation sources, and competitors cited.
Who It Is For
SEO agencies that need to report AI Overview citation data to clients without manual keyword-by-keyword checking.
Key Benefits
- Track AI Overview citations for $0.005/keyword
- Daily monitoring of 100 keywords for $15/month
- Extract citation sources and competitor presence
- Trend data shows AIO appearance over time
- White-label dashboard for client reporting
Python Example
import requests, os, json
from datetime import date
API_KEY = os.environ["SCAVIO_API_KEY"]
def check_aio_citation(keyword: str, target_domain: str) -> dict:
"""Check if a domain appears in Google AI Overview for a keyword."""
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY, "Content-Type": "application/json"},
json={"query": keyword, "country_code": "us"},
timeout=15,
)
data = resp.json()
aio = data.get("ai_overview")
result = {
"keyword": keyword,
"date": str(date.today()),
"has_aio": aio is not None,
"target_cited": False,
"cited_domains": [],
}
if aio:
sources = aio.get("sources", [])
result["cited_domains"] = [s.get("domain", "") for s in sources]
result["target_cited"] = target_domain in result["cited_domains"]
return result
keywords = ["best crm for small business", "how to track seo rankings", "what is AEO"]
for kw in keywords:
result = check_aio_citation(kw, "example.com")
status = "CITED" if result["target_cited"] else ("AIO present" if result["has_aio"] else "No AIO")
print(f"[{status}] {kw} -> {result['cited_domains'][:3]}")JavaScript Example
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function checkAioCitation(keyword, targetDomain) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query:keyword, country_code:'us'})});
const d = await r.json();
const aio = d.ai_overview;
const citedDomains = (aio?.sources||[]).map(s=>s.domain||'');
return {keyword, hasAio:!!aio, targetCited:citedDomains.includes(targetDomain), citedDomains};
}
for (const kw of ['best crm for small business','how to track seo rankings']) {
const r = await checkAioCitation(kw, 'example.com');
console.log((r.targetCited?'CITED':'miss')+' '+kw+' -> '+r.citedDomains.slice(0,3).join(', '));
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews