# AI SEO Tool - Google AI Overview Sources & Citation Gaps (`santhej/ai-citation-gap-finder`) Actor

AI SEO tool for GEO/AEO and LLM SEO: find every domain Google's AI cites across your keyword set, ranked by citation share, and the exact keywords where competitors are cited and you are not. Returns the cited pages to study. Digital PR targets in one run.

- **URL**: https://apify.com/santhej/ai-citation-gap-finder.md
- **Developed by:** [Santhej Kallada](https://apify.com/santhej) (community)
- **Categories:** SEO tools, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## AI SEO Tool — Google AI Overview Sources & Citation Gaps

**Give it your keyword set. Get back every domain Google's AI Overviews cite, ranked — plus the exact keywords where a competitor is cited and you are not.**

Ranking #1 no longer guarantees the click. When Google generates an AI Overview it answers the searcher directly and credits a handful of sources. Those sources are the new first page. This Actor maps them across your whole keyword set and shows you where you sit in that ranking.

It answers three questions in one run:

1. **Who does Google's AI actually trust in my category?** — a ranked leaderboard of every cited domain.
2. **Where do I stand?** — your rank, citation count and keyword coverage inside that leaderboard.
3. **Which keywords am I losing?** — every keyword where an AI Overview cited somebody and it wasn't you.

### Output: three views of the same run

**Cited domain leaderboard** — one row per domain

| Field | Meaning |
|---|---|
| `rank`, `domain`, `citations` | Position and raw citation count across your keywords |
| `keywords_cited_in`, `keyword_coverage_pct` | How much of your keyword set this domain owns |
| `share_of_citations_pct` | Its share of all citations in the run |
| `is_you`, `is_competitor` | Flags for your domain and the competitors you named |
| `example_pages` | The exact URLs Google cited — read these before you write |

**Per-keyword gaps** — one row per keyword

| Field | Meaning |
|---|---|
| `ai_overview_present` | Did Google generate an answer at all |
| `you_cited` / `is_citation_gap` | Were you cited; is this a keyword you are losing |
| `competitors_cited`, `cited_domains` | Who won the citation instead |

The run summary adds your overall rank, citation rate, and the full list of gap keywords ready to paste into a content plan.

### Use cases

- **Digital PR target list** — the leaderboard is a ranked list of the publications Google's AI already trusts. Pitch those, in that order.
- **Content briefs** — `example_pages` are the exact pages that informed the answer. Study them before writing.
- **Competitive share of voice** — measure what fraction of AI citations in your category each rival holds.
- **Content gap prioritisation** — `citation_gap_keywords` is a ready-made backlog, ordered by where you are already losing.
- **Pitching a GEO retainer** — run it on a prospect's keywords and show them their rank on page one of AI.
- **Market mapping** — leave your domain blank and just map who owns a category's AI citations.

### Pricing

Pay per event. No monthly fee, no setup fee, no minimum.

| Event | Price |
|---|---|
| Actor start | $0.001 per run |
| Keyword analysed | **$0.008 per keyword** |

A 50-keyword audit costs **$0.401**. You are billed per keyword analysed, not per output row — the leaderboard can be hundreds of rows and it costs nothing extra.

### Input example

```json
{
  "keywords": [
    "best crm for small business",
    "best email marketing software for ecommerce",
    "best project management tool for agencies"
  ],
  "yourDomain": "hubspot.com",
  "competitorDomains": ["salesforce.com", "zoho.com"],
  "countryCode": "us"
}
```

### Output example

```json
{
  "record_type": "domain",
  "rank": 1,
  "domain": "reddit.com",
  "citations": 34,
  "keywords_cited_in": 28,
  "keyword_coverage_pct": 56.0,
  "share_of_citations_pct": 12.4,
  "is_you": false,
  "is_competitor": false,
  "example_pages": [
    {
      "url": "https://www.reddit.com/r/smallbusiness/comments/...",
      "title": "What CRM do you actually use? - Reddit",
      "keyword": "best crm for small business"
    }
  ]
}
```

### FAQ

**How is this different from a rank tracker?** A rank tracker tells you your organic position. This tells you whether Google's AI *cited* you — a separate, and increasingly more valuable, kind of visibility.

**How is it different from your AI Overview Tracker?** [Google AI Overview Tracker](https://apify.com/santhej/google-ai-overview-tracker) is for monitoring: one row per query, run it weekly, watch it move. This one is for strategy: it aggregates across the whole keyword set into a domain leaderboard and a gap list. Same price per query, different question.

**Do I need an API key?** No. Add keywords and run.

**How many keywords should I use?** 20–100. Fewer than 20 and the leaderboard is too sparse to be meaningful.

**Why do some keywords show no AI Overview?** Google does not generate one for every search — navigational and very niche queries usually get none. Those are excluded from your citation rate rather than counted against you.

**Can I export it?** Yes — JSON, CSV, Excel, or via the Apify API into n8n, Make or Zapier.

### Track every AI surface

Each Actor in this family covers one AI surface deliberately, so you only pay for the check you need:

- [Google AI Overview Tracker](https://apify.com/santhej/google-ai-overview-tracker) — does Google's AI Overview cite you for your keywords?
- [Google AI Mode Tracker](https://apify.com/santhej/google-ai-mode-tracker) — Google's conversational AI tab, tracked the same way.
- [ChatGPT Brand Tracker](https://apify.com/santhej/chatgpt-brand-tracker) — does ChatGPT recommend you? Optional web-grounded mode with sources.
- [Perplexity Brand Tracker](https://apify.com/santhej/perplexity-brand-tracker) — full live answers plus the numbered citation list Perplexity is known for.
- [AI Rank Tracker Pro](https://apify.com/santhej/ai-rank-tracker-pro) — every platform in one run, with share-of-voice reports across ChatGPT, Perplexity, Gemini and Google AI.

***

*Tags: ai seo tool, llm seo, aeo tool, ai search optimization, geo seo, ai overview seo, ai citations, ai overview sources, citation gap, content gap, GEO, AEO, generative engine optimization, answer engine optimization, ai visibility, ai search visibility, digital pr, content strategy, competitor analysis, seo audit*

# Actor input Schema

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

The keyword set to analyse. Use the queries your buyers actually search — commercial and question-style keywords are the ones that trigger AI Overviews. 20-100 keywords gives the most useful leaderboard.

## `yourDomain` (type: `string`):

Your site, e.g. example.com. Used to rank you inside the cited-domain leaderboard and to flag the keywords where Google cited somebody else instead of you. Leave empty for a pure market map.

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

Competitors to flag in the leaderboard, e.g. competitor.com. Any domain Google cites is reported whether or not you list it here — this just labels the ones you care about.

## `countryCode` (type: `string`):

Country to search from. AI Overviews are most reliable in the United States.

## `languageCode` (type: `string`):

Two-letter interface language code (ISO 639-1).

## `includeKeywordRows` (type: `boolean`):

Also emit one row per keyword showing whether you were cited and which competitors were. Turn off to get only the domain leaderboard. Does not change the price.

## Actor input object example

```json
{
  "keywords": [
    "best crm for small business",
    "best email marketing software for ecommerce"
  ],
  "yourDomain": "hubspot.com",
  "competitorDomains": [
    "salesforce.com",
    "zoho.com"
  ],
  "countryCode": "us",
  "languageCode": "en",
  "includeKeywordRows": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

One row per query, plus aggregate rows where applicable.

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

Coverage, citation rates, billing breakdown and net margin for the run.

# 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 = {
    "keywords": [
        "best crm for small business",
        "best email marketing software for ecommerce"
    ],
    "yourDomain": "hubspot.com",
    "competitorDomains": [
        "salesforce.com",
        "zoho.com"
    ],
    "countryCode": "us",
    "languageCode": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("santhej/ai-citation-gap-finder").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 = {
    "keywords": [
        "best crm for small business",
        "best email marketing software for ecommerce",
    ],
    "yourDomain": "hubspot.com",
    "competitorDomains": [
        "salesforce.com",
        "zoho.com",
    ],
    "countryCode": "us",
    "languageCode": "en",
}

# Run the Actor and wait for it to finish
run = client.actor("santhej/ai-citation-gap-finder").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 '{
  "keywords": [
    "best crm for small business",
    "best email marketing software for ecommerce"
  ],
  "yourDomain": "hubspot.com",
  "competitorDomains": [
    "salesforce.com",
    "zoho.com"
  ],
  "countryCode": "us",
  "languageCode": "en"
}' |
apify call santhej/ai-citation-gap-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,santhej/ai-citation-gap-finder"
        }
    }
}

```

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/FB8oiUoS2r9CA54bW/builds/zmdxF6E4yGlicyQwR/openapi.json
