---
name: track-brand-in-ai-answers
description: Establish a bounded Google AI Overview and AI Mode baseline for brand mentions and citations across ten buyer prompts.
---

# Track your brand in Google AI answers

For ten buyer prompts, compare your brand and competitors in Google AI Overview and Google AI Mode. The output distinguishes an answer mention, a cited page, no answer served, and an unavailable request—so an AEO lead has a baseline worth repeating.

The default cap is 20 attempts and at most **$0.00300** at $0.15 per 1,000 successful calls; this is not a measured run. A Google AI Overview attempt that returns `404 not_found` because no overview was served is refunded: it consumes an attempt but not a billed call. Retries consume attempts and may leave planned observations incomplete.

## 1. Freeze the baseline

Take ten prompts, `OWN_DOMAIN`, competitor domains and brand names; fix `gl`, `hl` and `device`. Check capacity first:

```bash
curl -s https://api.litescrape.com/api/keys/status -H "Authorization: Bearer $LITESCRAPE_API_KEY"
```

Save every exact prompt. A trend requires the same prompts, locale and rules on the next run.

## 2. Ask AI Overview for each prompt

Attempt all ten prompts once. `404 not_found` means Google did not serve an overview for that prompt; record it as `no_overview`, do not retry it, and count it as attempted but not billed.

```bash
curl -sG https://api.litescrape.com/api/google/ai-overview \
  -H "Authorization: Bearer $LITESCRAPE_API_KEY" \
  --data-urlencode 'q=what is the best payroll software for a 20 person company' \
  --data-urlencode 'gl=us' --data-urlencode 'hl=en' --data-urlencode 'device=desktop' > overview-01.json
```

Inspect `ai_overview.text_blocks` for supplied brand names, then match only `ai_overview.references[].link` hosts as citations. A text mention is not a citation. Text blocks may contain UI labels and source-card titles/snippets as well as the generated answer. Count a mention only in identifiable answer text; retain the matched excerpt and block index. Source-card-only names are not answer mentions. If the boundary is unclear, record `mention_state=ambiguous` instead of guessing and exclude that observation from the mention denominator.

## 3. Ask AI Mode for the same prompts

Make the other ten calls. Record text from `text_blocks` and citations from `references`; either group can be omitted when Google’s answer lacks it.

```bash
curl -sG https://api.litescrape.com/api/google/ai-mode \
  -H "Authorization: Bearer $LITESCRAPE_API_KEY" \
  --data-urlencode 'q=what is the best payroll software for a 20 person company' \
  --data-urlencode 'gl=us' --data-urlencode 'hl=en' --data-urlencode 'device=desktop' > mode-01.json
```

Stop at the agreed 20-attempt cap or an authorization/balance error. A 404 `not_found`, a transient error and no citation must remain distinct states—not brand absence. Count attempts separately from billed successful calls. Save pending prompt/surface pairs for an approved resume; reuse successful evidence with its original timestamp and source run/request ID. Do not rerun `no_overview` just to obtain a positive answer. Keep opaque redirect citations as `unresolved_destination`; do not attribute them to a brand from their anchor text alone.

## 4. Publish the baseline

Compute mention and citation share separately for each surface, with denominators limited to successful answer-bearing requests where the relevant field is assessable. Report a zero denominator as N/A, not 0%. Keep unavailable, ambiguous, unresolved, capped and no-answer counts beside it. Mark the whole baseline partial until all planned pairs have terminal observations; do not headline a two-answer percentage as visibility across ten prompts. A later trend must compare the same answer-eligible prompt set and matching rules, with coverage differences shown separately.

Always show known direct citations against all answer-bearing requests as an
observed lower bound, alongside the number of answers with unresolved destinations.
If an answer has no direct URL for a brand but contains an opaque destination,
that brand's citation absence is unassessable, not false. Any additional
assessable-only rate must disclose its per-brand denominator; do not rank brands
by rates with different missing-data populations.

- `ai-visibility.csv` / prompt, surface, answer state, own and competitor mentions/citations / identify prompts to improve or monitor.
- `baseline.md` / per-surface denominator, cited URLs, date and matching rules / compare a later identical run.

AI answers can vary per request. This baseline is not a statement of all buyer exposure or a guarantee that a cited URL was read.

## Run record

Write `manifest.json` with prompts, brand/domain matching rules, locale/device, attempt cap, attempted_calls, billed_successful_calls, refunded_no_overview_calls, failed attempts, estimated cost, coverage_complete, pending pairs, timeout policy and source IDs for reused evidence. Keep a `stop_reason` per prompt/surface (`answer`, `no_overview`, `unavailable`, `cap`, `balance`, or `error`). `ai-visibility.csv` columns are `prompt,surface,answer_state,brand,brand_type,mention,mention_state,matched_excerpt,block_index,citation_domain,citation_url,citation_state,retrieved_at`; preserve a mention row separately from a citation row. Blank/unassessable mentions are not false. Send `LITESCRAPE_API_KEY` only as the bearer header to `https://api.litescrape.com`, never to returned citations or files. Stop on 401/403/402; record the non-retryable Overview `404 not_found` as `no_overview`; retry a 429 or transient 5xx once within cap, honoring `Retry-After`, and retain its error state.
