You can check if your product appears in Google AI Overview by sending a search request with include_ai_overview set to true and inspecting the ai_overview field in the response.
Prerequisites
- Python 3.9+
- Scavio API key
- requests, sqlite3 (stdlib)
Walkthrough
Step 1: Run a search with AI Overview enabled
Add include_ai_overview:true to your search payload. The response includes an ai_overview object when Google shows one for that query.
import requests
API_KEY = "your-scavio-api-key"
response = requests.post(
"https://api.scavio.dev/api/v1/search",
json={
"query": "best project management software",
"include_ai_overview": True,
"num_results": 10
},
headers={"x-api-key": API_KEY}
)
data = response.json()
print(data.get("ai_overview"))Step 2: Check if your domain is cited
AI Overview responses include a list of source links. Search those for your domain.
def is_cited_in_ai_overview(data: dict, your_domain: str) -> bool:
ai_overview = data.get("ai_overview")
if not ai_overview:
return False
sources = ai_overview.get("sources", [])
return any(your_domain in s.get("link", "") for s in sources)
cited = is_cited_in_ai_overview(data, "yourproduct.com")
print("Cited in AI Overview:", cited)Step 3: Store results in SQLite for daily tracking
Run this daily via cron to build a historical record of AI Overview citations.
import sqlite3
from datetime import date
def init_db(path="ai_overview_tracker.db"):
conn = sqlite3.connect(path)
conn.execute("""
CREATE TABLE IF NOT EXISTS citations (
date TEXT,
keyword TEXT,
has_ai_overview INTEGER,
is_cited INTEGER,
PRIMARY KEY (date, keyword)
)
""")
conn.commit()
return conn
def track_keyword(conn, keyword: str, your_domain: str, api_key: str):
r = requests.post(
"https://api.scavio.dev/api/v1/search",
json={"query": keyword, "include_ai_overview": True, "num_results": 5},
headers={"x-api-key": api_key}
)
data = r.json()
ai_overview = data.get("ai_overview")
has_ai_overview = 1 if ai_overview else 0
is_cited = 1 if is_cited_in_ai_overview(data, your_domain) else 0
conn.execute(
"INSERT OR REPLACE INTO citations VALUES (?, ?, ?, ?)",
(str(date.today()), keyword, has_ai_overview, is_cited)
)
conn.commit()
return {"keyword": keyword, "has_ai_overview": bool(has_ai_overview), "is_cited": bool(is_cited)}
conn = init_db()
keywords = ["best project management software", "project management tools", "asana alternative"]
for kw in keywords:
result = track_keyword(conn, kw, "yourproduct.com", API_KEY)
print(result)Python Example
import requests
import sqlite3
from datetime import date
API_KEY = "your-scavio-api-key"
YOUR_DOMAIN = "yourproduct.com"
def search_with_ai_overview(query: str) -> dict:
r = requests.post(
"https://api.scavio.dev/api/v1/search",
json={"query": query, "include_ai_overview": True, "num_results": 10},
headers={"x-api-key": API_KEY},
timeout=20
)
r.raise_for_status()
return r.json()
def check_citation(data: dict, domain: str) -> dict:
ao = data.get("ai_overview")
if not ao:
return {"has_ai_overview": False, "is_cited": False, "sources": []}
sources = ao.get("sources", [])
cited = any(domain in s.get("link", "") for s in sources)
return {"has_ai_overview": True, "is_cited": cited, "sources": [s["link"] for s in sources]}
def run_daily_tracker(keywords: list, domain: str):
today = str(date.today())
conn = sqlite3.connect("ai_overview_tracker.db")
conn.execute("""
CREATE TABLE IF NOT EXISTS citations (
date TEXT, keyword TEXT, has_ai_overview INTEGER, is_cited INTEGER,
PRIMARY KEY (date, keyword)
)
""")
conn.commit()
for kw in keywords:
data = search_with_ai_overview(kw)
result = check_citation(data, domain)
conn.execute(
"INSERT OR REPLACE INTO citations VALUES (?, ?, ?, ?)",
(today, kw, int(result["has_ai_overview"]), int(result["is_cited"]))
)
conn.commit()
status = "CITED" if result["is_cited"] else ("AIO present" if result["has_ai_overview"] else "no AIO")
print(f"{today} | {kw[:50]:<50} | {status}")
conn.close()
if __name__ == "__main__":
KEYWORDS = [
"best project management software",
"project management tools for teams",
"asana alternative 2026",
"free project tracker online"
]
run_daily_tracker(KEYWORDS, YOUR_DOMAIN)JavaScript Example
const API_KEY = 'your-scavio-api-key';
const YOUR_DOMAIN = 'yourproduct.com';
async function searchWithAiOverview(query) {
const res = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': API_KEY },
body: JSON.stringify({ query, include_ai_overview: true, num_results: 10 })
});
if (!res.ok) throw new Error(`Search failed: ${res.status}`);
return res.json();
}
function checkCitation(data, domain) {
const ao = data.ai_overview;
if (!ao) return { hasAiOverview: false, isCited: false };
const sources = ao.sources ?? [];
const isCited = sources.some(s => s.link?.includes(domain));
return { hasAiOverview: true, isCited, sources: sources.map(s => s.link) };
}
const keywords = ['best project management software', 'asana alternative 2026'];
for (const kw of keywords) {
const data = await searchWithAiOverview(kw);
const result = checkCitation(data, YOUR_DOMAIN);
const status = result.isCited ? 'CITED' : (result.hasAiOverview ? 'AIO present' : 'no AIO');
console.log(`${kw} | ${status}`);
}Expected Output
2026-05-22 | best project management software | AIO present
2026-05-22 | project management tools for teams | CITED
2026-05-22 | asana alternative 2026 | no AIO
2026-05-22 | free project tracker online | AIO present