Google AI Overview Tracker API avatar

Google AI Overview Tracker API

Pricing

Pay per usage

Go to Apify Store
Google AI Overview Tracker API

Google AI Overview Tracker API

Track Google AI Overview visibility for search prompts. Extract AIO availability, answer text, cited source links, source domains, brand/domain citations, competitor mentions, and clean no-AIO status.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Tugelbay Konabayev

Tugelbay Konabayev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Google AI Overview Tracker API - AI Search Visibility Monitor

Track whether Google shows an AI Overview for your target searches, which external source links appear on the rendered SERP, and whether your brand or competitors appear in the generated answer.

This actor is intentionally narrow. It supports Google AI Overview only. It does not claim ChatGPT, Gemini, Perplexity, Claude, Copilot, Grok, or Meta AI coverage.

Fast first run

Start with one prompt. Each prompt opens a rendered Google SERP, so small runs are faster and more reliable.

{
"prompts": ["best CRM software for small business"],
"brandName": "HubSpot",
"domain": "hubspot.com",
"competitors": ["Zoho", "Pipedrive", "Salesforce"],
"country": "US",
"language": "en",
"maxPrompts": 1,
"timeoutSeconds": 30,
"maxConcurrency": 1
}

What it returns

For each prompt, the actor returns one dataset item with:

  • aiOverviewAvailable - whether Google displayed an AI Overview
  • answerText - extracted AI Overview text when available
  • sourceLinks and sourceDomains - external URLs found on the rendered SERP
  • targetBrandMentioned - whether your brand appears in the AI Overview text
  • targetDomainCited - whether your domain appears in source links
  • competitorMentions - which competitor names appeared
  • engineStatus - ok_aio, ok_no_aio, blocked, timeout, or error

If Google does not show an AI Overview for a prompt, the run still succeeds and returns aiOverviewAvailable=false.

Larger input example

{
"prompts": [
"best CRM software for small business",
"best email marketing platform for ecommerce",
"best SEO tools for startups"
],
"brandName": "HubSpot",
"domain": "hubspot.com",
"competitors": ["Zoho", "Pipedrive", "Salesforce"],
"country": "US",
"language": "en",
"maxPrompts": 3,
"timeoutSeconds": 30,
"maxConcurrency": 1
}

For first-run testing, keep maxPrompts at 1. Increase only after the sample output looks useful.

Output example

{
"prompt": "best CRM software for small business",
"engine": "google_ai_overview",
"country": "US",
"language": "en",
"aiOverviewAvailable": true,
"answerText": "AI Overview ...",
"sourceDomains": ["hubspot.com", "pcmag.com", "reddit.com"],
"targetBrand": "HubSpot",
"targetDomain": "hubspot.com",
"targetBrandMentioned": true,
"targetDomainCited": true,
"competitorMentions": ["Zoho", "Pipedrive"],
"engineStatus": "ok_aio",
"runtimeSeconds": 3.2
}

Output field reference

Each dataset item is one prompt check. The schema is intentionally flat enough for CSV, Google Sheets, webhooks, and BI dashboards, while still keeping source links and competitors as arrays for automation.

FieldTypeDescription
promptstringThe search prompt/query that was checked.
enginestringAlways google_ai_overview for this actor.
queryUrlstringRendered Google Search URL with country/language parameters.
answerUrlstringFinal browser URL after redirects or consent flows.
countrystringGoogle country code used for the check, for example US.
languagestringGoogle interface language, for example en.
aiOverviewAvailablebooleanWhether an AI Overview block was detected.
answerTextstringExtracted AI Overview text when present; empty when no AIO was shown.
sourceLinksarrayExternal links found on the rendered SERP after Google/link wrappers are filtered.
sourceDomainsarrayDeduplicated domains from sourceLinks.
targetBrandstringBrand name supplied in input.
targetDomainstringNormalized target domain supplied in input.
targetBrandMentionedbooleanWhether the brand name appears in the extracted AI Overview text.
targetDomainCitedbooleanWhether the target domain appears among extracted source domains.
competitorMentionsarrayCompetitor names found in the AI Overview text or fallback SERP text window.
engineStatusstringok_aio, ok_no_aio, blocked, timeout, or error.
errorstringShort error message when rendering or parsing fails.
blockMarkersarrayDetected block/CAPTCHA phrases when Google blocks the session.
checkedAtstringUTC timestamp for the check.
runtimeSecondsnumberRuntime for that prompt attempt.

Use cases

  • GEO / AEO monitoring for target prompts
  • AI Overview source tracking
  • Brand visibility checks
  • Competitor visibility checks
  • SEO source-gap research
  • Weekly prompt monitoring for marketing teams

Who should use it

This actor is useful when the question is not "what rank do I have in classic organic search?" but "does Google's AI answer show up, which brands are mentioned, and which external domains appear around that AI answer?"

Typical users:

  • SEO teams tracking AI Overview exposure for commercial prompts
  • content teams checking whether their domain appears near answer-style SERPs
  • agencies monitoring client and competitor visibility across prompt lists
  • SaaS teams watching category prompts such as "best CRM for small business"
  • affiliate teams checking which publisher domains are surfaced for buyer-intent queries
  • internal growth teams building weekly AEO/GEO dashboards

Suggested monitoring workflow

  1. Start with 5-20 high-intent prompts from Search Console, paid-search terms, sales calls, or competitor pages.
  2. Run the actor with maxConcurrency=1 and timeoutSeconds=30.
  3. Export the dataset to Google Sheets, BigQuery, or a webhook.
  4. Track these weekly fields: aiOverviewAvailable, targetBrandMentioned, targetDomainCited, sourceDomains, and competitorMentions.
  5. Split prompts into buckets:
    • AIO exists and your brand/domain appears: maintain and monitor.
    • AIO exists but competitors appear: improve topical coverage and citation-worthy pages.
    • AIO exists but only publishers/tools appear: identify source-gap opportunities.
    • No AIO: monitor less often or test related prompt variants.

Prompt list examples

For SaaS:

{
"prompts": [
"best CRM software for startups",
"best email marketing software for ecommerce",
"best customer support software for SaaS"
],
"brandName": "HubSpot",
"domain": "hubspot.com",
"competitors": ["Salesforce", "Zoho", "Pipedrive"],
"country": "US",
"language": "en",
"maxPrompts": 3,
"timeoutSeconds": 30,
"maxConcurrency": 1
}

For local services:

{
"prompts": [
"best emergency plumber in Austin",
"best HVAC repair company in Austin",
"how much does water heater repair cost in Austin"
],
"brandName": "Example Plumbing",
"domain": "exampleplumbing.com",
"competitors": ["Roto-Rooter", "Mr. Rooter"],
"country": "US",
"language": "en",
"maxPrompts": 3
}

For affiliate/content sites:

{
"prompts": [
"best standing desk for home office",
"best ergonomic chair for back pain",
"best monitor light bar"
],
"brandName": "Example Reviews",
"domain": "examplereviews.com",
"competitors": ["Wirecutter", "Tom's Guide", "PCMag"],
"country": "US",
"language": "en"
}

Comparison with classic SERP rank tracking

NeedClassic rank trackerGoogle AI Overview Tracker
Track organic positionYesNo
Detect whether AI Overview appearsNoYes
Extract answer textNoYes, when AIO is present
Track brand mention in AI answerNoYes
Track domains surfaced near AI answerLimitedYes
Monitor competitor mentions in generated answerNoYes
Best cadenceDaily/weekly rankingsWeekly prompt visibility checks

Use both when you need a complete search view: rank tracker for organic positions, this actor for AI Overview visibility.

API usage

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("tugelbay/google-ai-overview-tracker").call(run_input={
"prompts": ["best CRM software for small business"],
"brandName": "HubSpot",
"domain": "hubspot.com",
"competitors": ["Zoho", "Pipedrive", "Salesforce"],
"country": "US",
"language": "en",
"maxPrompts": 1,
"timeoutSeconds": 30,
"maxConcurrency": 1,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["prompt"], item["aiOverviewAvailable"], item["sourceDomains"])

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_APIFY_TOKEN" });
const run = await client.actor("tugelbay/google-ai-overview-tracker").call({
prompts: ["best CRM software for small business"],
brandName: "HubSpot",
domain: "hubspot.com",
competitors: ["Zoho", "Pipedrive", "Salesforce"],
country: "US",
language: "en",
maxPrompts: 1,
timeoutSeconds: 30,
maxConcurrency: 1,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Webhook / scheduled monitoring

Create an Apify Task with your prompt list, then schedule it weekly. Use a webhook on run success to send the dataset to:

  • Google Sheets
  • BigQuery
  • Slack
  • Make/Zapier
  • your internal dashboard

Validation

Validation snapshot from 2026-04-25. This actor was built only after a 20-prompt stability probe:

  • 20/20 clean headless Google SERP checks
  • 19/20 prompts showed an AI Overview
  • 1/20 prompts cleanly returned no AI Overview
  • Median local probe runtime: 3.0 seconds. Apify runtime varies with proxy/session state.

Related validation file:

docs/research/google-ai-overview-tracker-validation-results.md

Limitations

  • Google decides whether AI Overview appears. Some queries, countries, or sessions may return no AI Overview.
  • Google SERP layouts change. The actor returns engineStatus and error fields so monitoring jobs can detect layout or block changes.
  • Browser rendering is required; this is not a raw HTTP-only scraper.
  • Keep concurrency low. The default is 1, maximum is 3.
  • The default input checks one prompt to keep the Try-for-Free run short. Larger prompt lists cost more and can be more affected by Google blocking.

Pricing

Pay per event:

  • prompt-check - one event per prompt checked

Base price: $0.01 / prompt-check.

Cost examples

Run sizeInputPrompt-check eventsApprox. prompt cost
First test1 prompt1~$0.01
Small category monitor10 prompts10~$0.10
Weekly SaaS prompt set50 prompts50~$0.50
Four weekly 50-prompt checks200 prompts/month200~$2.00/month

Actual platform cost also depends on Apify compute/runtime and your account plan. Keep prompt batches small until you know how often AIO appears for your niche.

Troubleshooting

IssueLikely causeWhat to do
aiOverviewAvailable=falseGoogle did not show an AI Overview for that query/session/countryThis is a valid result. Try related prompts or another country/language.
engineStatus=blockedGoogle showed CAPTCHA, unusual-traffic, or block textKeep maxConcurrency=1, use residential proxy, retry later, or reduce batch size.
engineStatus=timeoutSERP or AIO did not finish rendering within timeoutIncrease timeoutSeconds to 45-60 for harder prompts.
Empty answerText with source linksClassic SERP links were available but no AIO text was detectedTreat as no-AIO or inspect the rendered SERP manually.
Competitor not detectedName spelling differs from inputAdd short brand variants to competitors, for example Salesforce and Salesforce CRM.
Target domain not citedDomain does not appear in extracted external source linksUse sourceDomains to identify which domains are currently surfaced.

FAQ

Does this track ChatGPT, Gemini, Perplexity, Claude, Copilot, Grok, or Meta AI?

No. This actor intentionally supports Google AI Overview only. Other engines require separate validation because login, browser mode, rendering behavior, and source extraction differ.

No. The actor returns external source links found on the rendered SERP after Google wrapper links are cleaned and Google-owned domains are filtered. This is useful for source-domain monitoring, but it should not be treated as a guaranteed one-to-one list of AIO citation cards.

Why does the same prompt sometimes return different results?

Google personalizes and experiments with SERP layouts. Country, language, time, browser session, proxy, and Google's own AIO rollout can change whether an AI Overview appears.

Should I run this daily?

For most teams, weekly is enough. AI Overview visibility can move, but daily checks may add noise and cost before you have a stable prompt set.

Can I use this for client reporting?

Yes, if you explain the metric correctly: it tracks AI Overview availability, answer text, brand/domain visibility, and extracted external source domains for specific prompts at a specific time.

What is a good first prompt set?

Start with 10-20 prompts that already matter to the business: high-impression Search Console queries, paid search terms, "best X" category searches, sales objections, and competitor-comparison prompts.

Data quality notes

  • No-AIO is a valid output, not a failed run.
  • engineStatus should be monitored; filter out blocked, timeout, and error before calculating visibility rates.
  • Use exact brand names and common short variants in competitors.
  • Keep prompt wording stable over time if you want trend charts.
  • Store raw datasets for repeatable historical reporting.

Reporting template

For a weekly report, group the dataset by prompt and track these columns:

MetricHow to calculate
AIO coverageCount rows where aiOverviewAvailable=true divided by total valid rows.
Brand visibilityCount rows where targetBrandMentioned=true divided by rows with AIO.
Domain visibilityCount rows where targetDomainCited=true divided by rows with source domains.
Competitor pressureCount prompts where competitorMentions is not empty.
Source diversityCount unique sourceDomains across the prompt set.
Block/error rateCount blocked, timeout, and error statuses divided by total rows.

Keep the report honest by separating visibility changes from collection quality. A week with many blocked or timeout rows should be marked as a data-quality issue, not as a real visibility drop.

Good prompt hygiene

  • Use searcher language, not internal product jargon.
  • Avoid changing prompt wording every week if you need trend lines.
  • Include buying-intent prompts, comparison prompts, and problem-aware prompts.
  • Keep country/language stable for each tracked prompt set.
  • Do not mix unrelated markets in one dashboard; separate SaaS, local, ecommerce, and affiliate prompts.
  • Add competitor aliases when brand names have common abbreviations.
  • Review no-AIO prompts monthly and replace prompts that never trigger useful AI Overview data.

Operational guardrails

Large prompt lists are supported, but small batches are easier to debug. A practical operating pattern is:

  1. validate 1 prompt;
  2. run 10 prompts;
  3. inspect engineStatus distribution;
  4. expand to 25-50 prompts;
  5. schedule weekly;
  6. alert only on valid rows, not on blocked/error rows.

If you need hundreds of prompts, split them into multiple Tasks by category, country, or client. That keeps datasets easier to inspect and reduces the chance that one transient block affects the whole report.

Changelog

  • 0.1.10 (2026-04-26) - expanded README, clarified source-link semantics, and kept one-prompt first-run path.
  • 0.1 (2026-04-26) - initial Google AI Overview-only MVP.