# Google AI Mode Scraper: Answers & Competitor Share of Voice (`vncntlabs/google-ai-mode-scraper`) Actor

See what Google AI Mode answers for your buying queries, which sites it cites, and how often your domain is cited versus competitors. Dated snapshots, optional weekly change report. $0.005 per answer.

- **URL**: https://apify.com/vncntlabs/google-ai-mode-scraper.md
- **Developed by:** [VNCNT Labs](https://apify.com/vncntlabs) (community)
- **Categories:** SEO tools, AI, MCP servers
- **Features:** Limited permissions
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 ai mode answers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google AI Mode Scraper: Answers, Citations and Competitor Share of Voice

See what Google AI Mode actually answers for the queries your buyers type, which sites it cites, and how often your
domain shows up next to competitors. Paste prompts, add your domain and up to ten competitor domains, and get one
dated snapshot per prompt plus a free share-of-voice summary.

This is not a claim about what Google always says. AI Mode answers vary between runs. Every row is stamped with
`snapshotAt` and a short disclaimer.

Failed and empty answers are **never charged**.

### Who it's for

- **SEO and GEO teams:** check buying queries in bulk instead of pasting them by hand.
- **Agencies:** a weekly snapshot of who AI Mode cites for a client, and which prompts name a rival instead.
- **Store owners (POD, Etsy, Amazon):** see whether AI Mode recommends you or a competitor on "best X for Y" queries.

For scheduled monitoring across ChatGPT, Gemini, AI Mode, AI Overviews and Perplexity, use the
[AI Visibility Tracker](https://apify.com/vncntlabs/ai-search-visibility-tracker). This scraper is the
search-named front door and shares the same AI Mode parser.

### What you get

- One **answer** row per prompt: `answerText` (markdown), `sources` (position, title, URL, domain),
  `brandCited`, `brandCitationPosition`, `brandMentioned`, `competitorsCited`, `competitorsNamed`, `snapshotAt`
- One free **share_of_voice** row: percent of prompts where each domain is cited, average citation position, and
  `promptsCompetitorNamedNotYou`
- Optional free **change_report** when `onlyNewSources` is on: new and dropped domains versus last week's snapshot
- A `status` on every answer row: `ok`, `no_answer`, `error`, `not_processed` or `invalid_input`

Citation and mention checks are ordinary string matches in our own code (your domain, its subdomains, or a name as a
whole word in the visible answer text). A citation link alone does not count as a mention. No paid AI model is used.

The four cheapest Google AI Mode scrapers we checked on 10 Nov 2026 (Apify's own Actor, scrape.badger, subimpact and
litescrape) return the answer and its sources. Their input and output schemas do not include a brand domain,
competitor list, share-of-voice rates or a "competitor named, not you" summary.

### Input

| Field | What it does |
| --- | --- |
| `prompts` | Questions or search queries for Google AI Mode (up to 500). Free Apify plans: 10 |
| `brandDomain` | Your site, e.g. `printful.com` or `Printful \| printful.com`. Optional |
| `competitorDomains` | Up to 10 competitor domains, same optional `Name \| domain.com` form |
| `country` | Market for the answers (name or 2-letter code). Defaults to United States |
| `language` | Language code (e.g. `en`, `de`). Defaults to the country's main language |
| `onlyNewSources` | Weekly change report: flag sources that were not in the prior snapshot |
| `previousDatasetId` | Dataset id from a prior run of this Actor |
| `previousSources` | Or paste last week's source URLs or domains |

```json
{
  "prompts": [
    "best print on demand company for etsy",
    "printful vs printify",
    "best print on demand for t-shirts"
  ],
  "brandDomain": "printful.com",
  "competitorDomains": ["printify.com", "gooten.com"],
  "country": "United States"
}
```

Turn on a weekly change report by scheduling the Actor and passing last week's dataset id:

```json
{
  "prompts": ["best print on demand company for etsy"],
  "brandDomain": "printful.com",
  "competitorDomains": ["printify.com"],
  "onlyNewSources": true,
  "previousDatasetId": "YOUR_LAST_DATASET_ID"
}
```

### Output

An answer row (shape; source text will differ from run to run):

```json
{
  "type": "answer", "status": "ok",
  "prompt": "best print on demand company for etsy",
  "brandDomain": "printful.com",
  "brandCited": true, "brandCitationPosition": 2, "brandMentioned": true,
  "competitorsCited": ["printify.com"], "competitorsNamed": ["printify.com"],
  "sources": [
    {"position": 1, "title": "...", "url": "https://www.example.com/...", "domain": "example.com"}
  ],
  "answerText": "...",
  "snapshotAt": "2026-11-10T15:00:00Z",
  "charged": true,
  "disclaimer": "Dated snapshot of a Google AI Mode answer... Answers vary between runs; this is not what Google says in general."
}
```

Share of voice (free):

```json
{
  "type": "share_of_voice", "prompts": 3, "answers": 3,
  "brandDomain": "printful.com",
  "domains": [
    {"domain": "printful.com", "role": "brand", "citedPromptRate": 0.667, "avgCitationPosition": 2.0},
    {"domain": "printify.com", "role": "competitor", "citedPromptRate": 1.0, "avgCitationPosition": 1.0}
  ],
  "promptsCompetitorNamedNotYou": [
    {"prompt": "best print on demand for t-shirts", "competitorsCited": ["printify.com"], "brandCited": false}
  ],
  "snapshotAt": "2026-11-10T15:00:00Z", "charged": false
}
```

Ready dataset views: **AI Mode answers**, **Share of voice** and **Weekly change report**. Export to CSV, Excel or JSON.

### Pricing (pay per event)

| Event | When it is charged |
| --- | --- |
| Actor start | once per run |
| `transcript` (shown as "AI Mode answer") | one Google AI Mode answer delivered for one prompt |

You are not charged for:

- prompts where AI Mode returned no answer;
- failed requests;
- skipped inputs (duplicates, invalid domains);
- share-of-voice and change-report rows;
- anything beyond your run's maximum charge. The run stops cleanly and lists what it did not process.

**Apify free plan:** 10 prompts per run. Any paid Apify plan unlocks up to 500 prompts and 10 competitors.

### Use from AI agents (MCP)

AI assistants such as Claude, ChatGPT and Cursor can run this Actor through [Apify's MCP server](https://docs.apify.com/platform/integrations/mcp) (`https://mcp.apify.com`). The agent can look up the Actor, read its input schema, run it and read the results. Runs use your own Apify account and are charged at the prices on this page.

- **Actor name:** `vncntlabs/google-ai-mode-scraper`
- **Server URL with only this tool:** `https://mcp.apify.com?tools=vncntlabs/google-ai-mode-scraper`
- **Claude** (desktop app or claude.ai): Settings > Connectors > Add custom connector, paste the server URL, then sign in to Apify.
- **ChatGPT:** turn on Developer mode, then Settings > Apps & Connectors > Create, paste the server URL and choose OAuth.
- **Cursor:** run `/add-plugin apify` in Cursor chat, or add the server to `mcp.json`.

Example prompt: *"Use the Apify Actor vncntlabs/google-ai-mode-scraper to check whether printful.com is cited in Google AI Mode for 'best print on demand company for etsy', compared with printify.com and gooten.com."*

To cap the cost of an agent's run, it can pass `maxTotalChargeUsd` in the run options.

### FAQ

**How is share of voice calculated?** For each domain you list, we count the share of prompts whose snapshot cites that domain, and the average position of the first citation. We also list prompts that name or cite a competitor but do not name or cite you. It is all string matching, on that run's snapshots only.

**Why do results differ from what I see in my browser?** Google AI Mode personalises and varies its answers. These are logged-out answers for the chosen country and language at `snapshotAt`. Use a weekly schedule for trends, not a single run as gospel.

**What is the weekly change report?** Turn on `onlyNewSources` and pass last week's dataset id (or a list of known URLs). The run still returns the full snapshot, flags new sources, and adds a free change-report row. For a scheduled check across several AI engines, use the [AI Visibility Tracker](https://apify.com/vncntlabs/ai-search-visibility-tracker).

**Which countries?** The usual Google markets, including the US, UK, Canada, Australia, India, Germany, France, Spain, Italy, the Netherlands, Brazil, Mexico and Japan. Pick a country by name or 2-letter code.

**How long does a run take?** Most short runs finish in under a minute. A stalled provider queue is retried on a faster priority after 60 seconds, without changing your price.

**Is this affiliated with Google?** No. Data comes from DataForSEO's licensed SERP API. Not affiliated with or endorsed by Google.

Made by [VNCNT Labs](https://vncntlabs.com).

# Actor input Schema

## `prompts` (type: `array`):

What to ask Google AI Mode. One prompt per line, up to 500 per run. Use the queries your buyers actually type.

## `brandDomain` (type: `string`):

Your site, e.g. printful.com. We check whether Google AI Mode cites it and where. You can also write 'Printful | printful.com'. Optional; leave blank to just collect answers and sources.

## `competitorDomains` (type: `array`):

Up to 10 competitor domains. The share-of-voice summary shows how often each is cited versus you, and which prompts name a competitor but not you. Optional 'Name | domain.com' form is accepted.

## `country` (type: `string`):

Market whose Google AI Mode answers you want. Examples: United States, United Kingdom, Germany, India.

## `language` (type: `string`):

Optional language code (en, de, es, pt-BR...). Defaults to the country's main language.

## `onlyNewSources` (type: `boolean`):

Compare this snapshot to a prior run and flag sources that are new. Use this as a weekly change report. For scheduled multi-engine monitoring, see vncntlabs/ai-search-visibility-tracker.

## `previousDatasetId` (type: `string`):

Dataset id from a prior run of this Actor. Used when the weekly change report is on.

## `previousSources` (type: `array`):

Optional list of source URLs or domains from last week's snapshot, if you do not have a dataset id.

## Actor input object example

```json
{
  "prompts": [
    "best print on demand company for etsy",
    "printful vs printify",
    "best print on demand for t-shirts"
  ],
  "brandDomain": "printful.com",
  "competitorDomains": [
    "printify.com",
    "gooten.com"
  ],
  "country": "United States",
  "onlyNewSources": false
}
```

# Actor output Schema

## `answers` (type: `string`):

No description

## `shareOfVoice` (type: `string`):

No description

## `changeReport` (type: `string`):

No description

## `all` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "prompts": [
        "best print on demand company for etsy",
        "printful vs printify",
        "best print on demand for t-shirts"
    ],
    "brandDomain": "printful.com",
    "competitorDomains": [
        "printify.com",
        "gooten.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("vncntlabs/google-ai-mode-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "prompts": [
        "best print on demand company for etsy",
        "printful vs printify",
        "best print on demand for t-shirts",
    ],
    "brandDomain": "printful.com",
    "competitorDomains": [
        "printify.com",
        "gooten.com",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("vncntlabs/google-ai-mode-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "prompts": [
    "best print on demand company for etsy",
    "printful vs printify",
    "best print on demand for t-shirts"
  ],
  "brandDomain": "printful.com",
  "competitorDomains": [
    "printify.com",
    "gooten.com"
  ]
}' |
apify call vncntlabs/google-ai-mode-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vncntlabs/google-ai-mode-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/73zBIshNrRa0cNY5q/builds/jjS67ayfxI2bEYBJj/openapi.json
