# AI Brand Reach Checker — ChatGPT, Claude & Gemini (`muhammadafzal/ai-brand-reach-checker`) Actor

Check AI brand mentions and citations across OpenAI GPT, Claude, Gemini, and Perplexity through one OpenRouter API integration.

- **URL**: https://apify.com/muhammadafzal/ai-brand-reach-checker.md
- **Developed by:** [Muhammad Afzal](https://apify.com/muhammadafzal) (community)
- **Categories:** AI, SEO tools, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 successful ai platform checks

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 Brand Reach Checker — ChatGPT, Claude, Gemini & Perplexity

Run an **AI brand visibility audit** to check whether your company or product appears in answers from ChatGPT, Claude, Gemini, and Perplexity. This Generative Engine Optimization (GEO) checker returns platform-level mentions, website citations, competitor appearances, context snippets, a 0–100 visibility score, and practical recommendations.

Export results, run via API, schedule regular monitoring runs, or integrate into your GEO (Generative Engine Optimization) workflow.

### Features

- **4 AI platforms** — Perplexity AI, ChatGPT (OpenAI), Claude (Anthropic), Gemini (Google)
- **Brand mention detection** — checks whether your brand name is included in AI responses
- **Citation detection** — identifies whether AI platforms reference your website as a source
- **Visibility score** — 0–100 composite score based on mentions, citations, and platform coverage
- **Competitor tracking** — compare your brand's AI visibility against named competitors
- **Context snippets** — captures the exact sentence where your brand was mentioned
- **Actionable recommendations** — specific suggestions to improve your AI presence
- **GEO optimization** — track changes over time as part of your generative engine optimization strategy

### What data does the AI brand visibility checker return?

| Data point | Why it matters |
|---|---|
| Brand mention and mention count | Shows whether an AI answer engine knows and recommends the brand |
| Website citation | Reveals whether the brand domain is used as a source |
| Mention context | Preserves the sentence surrounding the mention for qualitative review |
| Competitor mentions | Identifies brands competing for the same AI recommendation |
| Visibility score | Provides a directional 0–100 snapshot across the selected platforms |
| Recommendations | Suggests next steps for content, authority, and citation coverage |

### Use Cases

| Use Case | Description |
|----------|-------------|
| **AI SEO/GEO audits** | Verify whether your brand appears in AI-generated answers before campaigns |
| **Competitive benchmarking** | Compare your brand's AI visibility vs direct competitors |
| **PR & communications** | Measure whether media coverage is reflected in AI responses |
| **Marketing ROI** | Track whether content investments improve AI platform citations |
| **Brand monitoring** | Run regular checks to catch reputation changes in AI outputs |

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `brandName` | `string` | ✅ | Your brand, company, or product name (e.g., `"Apple"`, `"Tesla"`) |
| `brandDomain` | `string` | — | Your website domain (e.g., `"apple.com"`) for citation detection |
| `industry` | `string` | — | Your industry category (e.g., `"electric vehicles"`) for context-relevant queries |
| `platforms` | `string[]` | — | Which AI platforms to check: `perplexity`, `chatgpt`, `claude`, `gemini` (default: all four) |
| `competitors` | `string[]` | — | Competitor brand names to compare against |

### Output

The actor returns a single result record per run with the full brand visibility report:

```json
{
  "brand": "Acme Corp",
  "brand_domain": "acmecorp.com",
  "overall_visible": true,
  "visibility_score": 67,
  "platforms": [
    {
      "name": "Perplexity AI",
      "mentioned": true,
      "cited": true,
      "mention_count": 3,
      "mention_context": "Acme Corp is one of the leading providers of...",
      "model_used": "sonar-pro",
      "error": null
    },
    {
      "name": "ChatGPT",
      "mentioned": false,
      "cited": false,
      "mention_count": 0,
      "mention_context": null,
      "model_used": "gpt-4o",
      "error": null
    }
  ],
  "competitor_mentions": ["CompetitorA", "CompetitorB"],
  "recommendations": [
    "Publish more in-depth industry guides — Perplexity prioritizes authoritative long-form content",
    "Add structured data markup to your website to improve citation likelihood"
  ],
  "checked_at": "2025-08-01T12:00:00.000Z"
}
````

### API Usage

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('USERNAME/ai-brand-reach-checker').call({
  brandName: 'Notion',
  brandDomain: 'notion.so',
  industry: 'productivity software',
  competitors: ['Obsidian', 'Confluence', 'Coda'],
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].visibility_score); // e.g., 75
```

The same input can be sent through the Apify API, schedules, webhooks, or the Apify MCP integration. The dataset can be exported as JSON, CSV, Excel, XML, or RSS using Apify's standard dataset endpoints.

### Pricing

Each run checks your brand across all selected AI platforms. Pricing is per brand check run.

| Platforms Checked | Estimated Cost |
|-------------------|---------------|
| 1 platform | ~$0.05 |
| All 4 platforms | ~$0.20 |

Estimates depend on the selected platforms and current actor configuration. Review the Store pricing panel before a production run. A focused one-platform check is useful for testing; a four-platform run gives the most complete cross-engine snapshot.

### When to use this actor

Use this actor for a fast brand reach snapshot, campaign checks, competitor benchmarking, and periodic GEO audits. It is especially useful for SEO teams, PR teams, founders, brand managers, and agencies answering questions such as:

- Is my brand visible in ChatGPT and other AI search engines?
- Does Perplexity cite my website?
- Which competitors appear when AI tools recommend products in my category?
- Did a content or PR campaign improve AI discoverability?

Do not use this actor as a traditional Google rank tracker, a full web analytics platform, or proof of how every user will see an answer. AI responses can vary by model, prompt, location, and time.

### Reliability and limitations

The visibility score is a directional benchmark derived from the selected checks, not a universal market-share metric. Keep the brand name, domain, industry, competitor list, and platform selection stable when comparing scheduled runs. Review `platforms[].error` before interpreting a missing mention: an upstream API failure is different from a valid answer that did not mention the brand.

For stronger GEO measurement, use a consistent weekly schedule and compare the underlying mention and citation fields—not only the composite score.

### FAQ

**Q: Do I need API keys for each AI platform?**
Yes. Configure one Actor environment secret named `OPENROUTER_API_KEY`. The Actor uses OpenRouter to call Perplexity Sonar, OpenAI GPT, Anthropic Claude, and Google Gemini models through one API. A missing or failed OpenRouter request returns a clear diagnostic and is not billed as a successful platform check.

#### OpenRouter model routing

| Platform check | OpenRouter model |
|---|---|
| Perplexity | `perplexity/sonar-pro` |
| ChatGPT | `openai/gpt-5.4-mini` |
| Claude | `anthropic/claude-haiku-4.5` |
| Gemini | `google/gemini-3.1-flash-lite` |

The non-Perplexity checks use OpenRouter's web-search server tool with a capped search budget. Perplexity Sonar performs native search. Model IDs may be updated in later Actor builds as OpenRouter's catalog changes.

**Q: How accurate is the visibility score?**
The score is based on whether your brand is mentioned and cited in a sample of industry-relevant queries. It's a directional indicator, not a definitive measurement.

**Q: How often should I run this?**
Weekly or bi-weekly is typically sufficient for trend tracking. Run after major PR events or content campaigns to measure impact.

**Q: What is GEO (Generative Engine Optimization)?**
GEO is the practice of optimizing your brand to appear in AI-generated answers — the AI equivalent of traditional SEO.

**Q: Is this also an AEO or AI search visibility tool?**
Yes. GEO, answer engine optimization (AEO), AI search optimization, and LLM visibility monitoring overlap. This actor focuses specifically on brand mentions and domain citations in AI-generated answers.

**Q: Can I track multiple brands?**
Run one input per primary brand and pass rivals in `competitors`. Separate runs keep each brand's score and report easy to compare.

### Responsible use

Use the results for legitimate brand research, marketing measurement, and competitive analysis. Respect applicable laws, platform terms, and privacy requirements. AI answers may be incomplete or incorrect; validate material business decisions against primary sources.

# Actor input Schema

## `brandName` (type: `string`):

Your brand, company, or product name to check (e.g., 'Apple', 'Tesla', 'Nike'). This is the primary brand to verify in AI responses.

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

Your brand's website domain (e.g., 'apple.com', 'tesla.com'). Used to detect citations when AI platforms reference your website as a source.

## `industry` (type: `string`):

Your brand's industry or category (e.g., 'smartphones', 'electric vehicles', 'sportswear'). Used to generate relevant test queries.

## `platforms` (type: `array`):

Select which AI platforms to verify brand visibility on. All four are checked by default.

## `competitors` (type: `array`):

Optional: Add competitor brand names to compare your brand's visibility against. The check will show which brands are mentioned more frequently.

## Actor input object example

```json
{
  "brandName": "Notion",
  "brandDomain": "notion.so",
  "industry": "productivity software",
  "platforms": [
    "perplexity",
    "chatgpt",
    "claude",
    "gemini"
  ],
  "competitors": []
}
```

# Actor output Schema

## `results` (type: `string`):

Link to the dataset containing all brand visibility check results.

# 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 = {
    "brandName": "Notion",
    "brandDomain": "notion.so",
    "industry": "productivity software"
};

// Run the Actor and wait for it to finish
const run = await client.actor("muhammadafzal/ai-brand-reach-checker").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 = {
    "brandName": "Notion",
    "brandDomain": "notion.so",
    "industry": "productivity software",
}

# Run the Actor and wait for it to finish
run = client.actor("muhammadafzal/ai-brand-reach-checker").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "brandName": "Notion",
  "brandDomain": "notion.so",
  "industry": "productivity software"
}' |
apify call muhammadafzal/ai-brand-reach-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=muhammadafzal/ai-brand-reach-checker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AI Brand Reach Checker — ChatGPT, Claude & Gemini",
        "description": "Check AI brand mentions and citations across OpenAI GPT, Claude, Gemini, and Perplexity through one OpenRouter API integration.",
        "version": "1.0",
        "x-build-id": "gHEQZIM6L62VHOhfY"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/muhammadafzal~ai-brand-reach-checker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-muhammadafzal-ai-brand-reach-checker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/muhammadafzal~ai-brand-reach-checker/runs": {
            "post": {
                "operationId": "runs-sync-muhammadafzal-ai-brand-reach-checker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/muhammadafzal~ai-brand-reach-checker/run-sync": {
            "post": {
                "operationId": "run-sync-muhammadafzal-ai-brand-reach-checker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "brandName"
                ],
                "properties": {
                    "brandName": {
                        "title": "Brand Name",
                        "type": "string",
                        "description": "Your brand, company, or product name to check (e.g., 'Apple', 'Tesla', 'Nike'). This is the primary brand to verify in AI responses.",
                        "default": "Notion"
                    },
                    "brandDomain": {
                        "title": "Brand Domain",
                        "type": "string",
                        "description": "Your brand's website domain (e.g., 'apple.com', 'tesla.com'). Used to detect citations when AI platforms reference your website as a source.",
                        "default": "notion.so"
                    },
                    "industry": {
                        "title": "Industry Category",
                        "type": "string",
                        "description": "Your brand's industry or category (e.g., 'smartphones', 'electric vehicles', 'sportswear'). Used to generate relevant test queries.",
                        "default": "productivity software"
                    },
                    "platforms": {
                        "title": "AI Platforms to Check",
                        "type": "array",
                        "description": "Select which AI platforms to verify brand visibility on. All four are checked by default.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "perplexity",
                                "chatgpt",
                                "claude",
                                "gemini"
                            ],
                            "enumTitles": [
                                "Perplexity AI",
                                "ChatGPT",
                                "Claude",
                                "Gemini"
                            ]
                        },
                        "default": [
                            "perplexity",
                            "chatgpt",
                            "claude",
                            "gemini"
                        ]
                    },
                    "competitors": {
                        "title": "Competitor Brands",
                        "type": "array",
                        "description": "Optional: Add competitor brand names to compare your brand's visibility against. The check will show which brands are mentioned more frequently.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
