ScavioScavio
ProductPricingDocs
Sign InGet Started
  1. Home
  2. Tutorials
  3. How to Track Products in Google AI Overview Results
Tutorial

How to Track Products in Google AI Overview Results

Check if your product appears in Google's AI Overview for target keywords using the Scavio search API. Includes daily tracking script and alert setup.

Get Free API KeyAPI Docs

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.

Python
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.

Python
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.

Python
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

Python
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

JavaScript
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

JSON
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

Related Tutorials

  • How to Track AI Overview Citations for Your Brand
  • How to Detect AI Overview Presence for a Keyword
  • How to Build an SEO Audit Agent in Claude Code

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

Python 3.9+. Scavio API key. requests, sqlite3 (stdlib). A Scavio API key gives you 50 free credits on signup.

Yes. The free tier includes 50 credits on signup, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Related Resources

Best Of

Best APIs That Return AI Overview Data in 2026

Read more
Use Case

AI Overview Citation Tracking

Read more
Best Of

Best Google Maps Business Data APIs (May 2026)

Read more
Use Case

GEO Citation Brand Tracking

Read more
Workflow

AI Overview Citation Trust Check Workflow

Read more
Glossary

AI Overview Citation Tracking

Read more

Start Building

Check if your product appears in Google's AI Overview for target keywords using the Scavio search API. Includes daily tracking script and alert setup.

Get Free API KeyRead the Docs
ScavioScavio

Real-time search API for AI agents. Search every platform, not just Google.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative

Tools

  • JSON Formatter
  • cURL to Code
  • Token Counter
  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy