# AI Overview Visibility Scanner (`senna_oudshoorn/ai-overview-visibility-scanner`) Actor

Find the Google questions in your niche that show an AI Overview, see which sites it cites, and where your domain is missing. One domain in, a ranked list of opportunities out.

- **URL**: https://apify.com/senna_oudshoorn/ai-overview-visibility-scanner.md
- **Developed by:** [Senna Oudshoorn](https://apify.com/senna_oudshoorn) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 question checkeds

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

## AI Overview Visibility Scanner

Find out where your business is missing in Google's AI Overviews.

Give it a domain. The Actor reads the website, finds the real questions people ask Google in that niche, and checks each question for an AI Overview: does Google show one, which sites does it cite, and is your domain among them. You get a ranked list of opportunities and a shareable report.

### What you get

- **Every question checked**: AI Overview yes or no, the cited sources, whether your domain is cited, your organic position, monthly search volume and CPC.
- **Opportunity score (0 to 100)** per question. High means Google shows an AI Overview, you're not in it, a competitor is, and people actually search for it.
- **Summary**: share of questions with an AI Overview, how often you're cited, how many monthly searches go to AI Overviews without you, and the competitors cited instead of you.
- **Shareable HTML report**, ready to send to a client or a manager.

Example headline for a (fictional) roofing company:

> Google shows an AI Overview for 18 of 20 questions. example-roofing.com is cited in 1, homeadvisor.com in 9.

### How it works

1. **Read the site** with Website Content Crawler and a short AI step to understand what the business does and which terms customers search for.
2. **Find what people search** with Google Autocomplete, People Also Ask and related searches.
3. **Measure demand** with monthly search volume and CPC.
4. **Keep what matters**: an AI step drops unrelated searches, so every question is one a potential customer would ask.
5. **Check Google** for every selected question, including the full AI Overview and its sources, with Google Search Results Scraper.
6. **Score and report.**

No API key needed. The AI steps run through Apify's own OpenRouter integration and are billed to your Apify account at cost, a few cents per run. The questions themselves come straight from Google.

### Input

| Field | Description | Default |
|---|---|---|
| `domain` | The website to check, for example `zapier.com` | required |
| `keywords` | Optional seed terms. Leave empty and they are derived from the website | derived |
| `country` | Two-letter country code for Google (`us`, `gb`, `nl`, `de`, ...) | `us` |
| `language` | Two-letter language code (`en`, `nl`, `de`, ...) | `en` |
| `maxQuestions` | How many questions to check (5 to 50) | `20` |

### Output

- **Dataset**: one row per checked question (view "Opportunities").
- **Key-value store**: `OUTPUT` (summary JSON) and `report.html` (shareable report).

```json
{
  "question": "how much does a roof replacement cost",
  "hasAiOverview": true,
  "domainCited": false,
  "citedDomains": ["homeadvisor.com", "angi.com", "forbes.com"],
  "organicPosition": null,
  "searchVolume": 12100,
  "opportunityScore": 97,
  "opportunity": "High"
}
```

### Use cases

- **SEO and marketing agencies**: an AI search visibility audit for every prospect in minutes.
- **Businesses**: see which questions to answer on your own site to get cited.
- **Lead generation**: combine it with Google Maps data in n8n or Make and scan whole industries.
- **Content planning**: the high-opportunity questions are your next articles.

### Pricing

You pay per checked question (one dataset row). Runs of the underlying Actors are billed to your Apify account as usual.

### Built by

The team behind [getaioverview](https://getaioverview.com), which turns these opportunities into published, AI-ready articles on the customer's own blog, fully autonomously.

# Actor input Schema

## `domain` (type: `string`):

The website to check, for example zapier.com. We read the site to find what it is about.

## `keywords` (type: `array`):

Terms your customers search for. Leave empty and we derive them from the website.

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

Two-letter country code for Google, for example nl, be, de, us.

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

Two-letter language code, for example nl, en, de.

## `maxQuestions` (type: `integer`):

How many questions to check in Google. You pay per checked question.

## Actor input object example

```json
{
  "domain": "zapier.com",
  "keywords": [],
  "country": "us",
  "language": "en",
  "maxQuestions": 20
}
```

# Actor output Schema

## `report` (type: `string`):

No description

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

No description

## `opportunities` (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 = {
    "domain": "zapier.com",
    "keywords": [],
    "country": "us",
    "language": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("senna_oudshoorn/ai-overview-visibility-scanner").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 = {
    "domain": "zapier.com",
    "keywords": [],
    "country": "us",
    "language": "en",
}

# Run the Actor and wait for it to finish
run = client.actor("senna_oudshoorn/ai-overview-visibility-scanner").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 '{
  "domain": "zapier.com",
  "keywords": [],
  "country": "us",
  "language": "en"
}' |
apify call senna_oudshoorn/ai-overview-visibility-scanner --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,senna_oudshoorn/ai-overview-visibility-scanner"
        }
    }
}
```

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/cnVMewGmpQNqH9hOh/builds/jLsYN82Zc5pwsqPlg/openapi.json
