# AI Brand Monitor - ChatGPT, Claude, Perplexity, Gemini (`amernas/ai-brand-monitor`) Actor

Monitor brand visibility across AI platforms and LLMs. Track mentions in ChatGPT, Claude, Perplexity, Gemini, and Google AI Overviews. Get composite scores (0-100), competitor comparisons, sentiment analysis, and webhook alerts when visibility changes.

- **URL**: https://apify.com/amernas/ai-brand-monitor.md
- **Developed by:** [Traffic Architect](https://apify.com/amernas) (community)
- **Categories:** SEO tools, AI, Lead generation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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 Monitor - Track Brand Visibility in ChatGPT, Claude, Perplexity, Gemini & Google AI Overviews

Monitor how your brand appears across AI platforms and LLMs. Get a composite visibility score (0-100), per-platform breakdowns, competitor comparisons, and alerts when your visibility changes.

### What does AI Brand Monitor do?

AI answers are becoming the new search results. When someone asks ChatGPT "what's the best web scraping tool?" or Perplexity "recommend a CRM" — is your brand mentioned? This actor tracks that across 5 platforms:

- **ChatGPT** — OpenAI's conversational AI
- **Claude** — Anthropic's AI assistant
- **Gemini** — Google's AI model
- **Perplexity** — AI-powered search engine with citations
- **Google AI Overviews** — AI-generated summaries at the top of Google search results

For each platform, the actor checks whether your brand is mentioned, the sentiment of the mention, whether you're cited as a source, and your position relative to competitors.

### Use cases

- **Brand managers** — Track your AI visibility score over time, get alerts when it drops
- **SEO & GEO teams** — Measure Generative Engine Optimization results with hard data
- **Competitive intelligence** — See which competitors appear in AI answers for your target keywords
- **Marketing agencies** — Provide AI visibility reports to clients alongside traditional SEO metrics
- **Product teams** — Monitor how AI models describe your product vs competitors
- **PR teams** — Track brand sentiment shifts across AI platforms after launches or incidents

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `brandName` | string | *required* | Your brand name to monitor |
| `keywords` | array of strings | *required* | Keywords to check for brand mentions in AI answers |
| `competitors` | array of strings | `[]` | Competitor brands to compare visibility against |
| `webhookUrl` | string | — | URL to POST alerts when visibility changes significantly (>=10 points) |

#### Example input

```json
{
  "brandName": "Apify",
  "keywords": ["web scraping platform", "data extraction tool", "browser automation"],
  "competitors": ["ScrapingBee", "Bright Data", "Crawlee"],
  "webhookUrl": "https://hooks.example.com/ai-visibility"
}
````

### Output

Each run produces a comprehensive visibility report:

```json
{
  "brandName": "Apify",
  "monitoredAt": "2026-04-03T11:19:28.472Z",
  "compositeScore": 72,
  "previousScore": 65,
  "scoreDelta": 7,
  "significantChange": false,
  "platforms": {
    "chatgpt": {"score": 80, "mentioned": true, "sentiment": "positive"},
    "claude": {"score": 60, "mentioned": true, "sentiment": "neutral"},
    "perplexity": {"score": 70, "mentioned": true, "cited": true, "sourceUrl": "https://apify.com"},
    "gemini": {"score": 60, "mentioned": true, "sentiment": "neutral"},
    "googleAiOverview": {"score": 40, "present": true, "brandCited": false}
  },
  "keywords": [
    {
      "keyword": "web scraping platform",
      "brandMentioned": true,
      "competitorsMentioned": ["Bright Data", "ScrapingBee"]
    }
  ],
  "competitors": [
    {"name": "Bright Data", "compositeScore": 55, "mentionedIn": ["chatgpt", "perplexity"]}
  ],
  "alerts": []
}
```

### Scoring model

Each platform is scored 0-100 based on four signals:

| Signal | Points | Description |
|--------|--------|-------------|
| **Brand mentioned** | 40 | Your brand appears in the AI answer |
| **Positive sentiment** | 20 | The mention is favorable (neutral = 10 points) |
| **Top position** | 20 | Your brand is mentioned first or prominently |
| **Source cited** | 20 | The AI cites your website as a source |

The **composite score** is a weighted average: AI Visibility (40%) + Perplexity (30%) + Google AI Overview (30%).

### How it works

The actor orchestrates three monitoring sources using `Actor.call()`:

1. **[AI Brand Monitor (Visibility)](https://apify.com/alizarin_refrigerator-owner/ai-brand-monitor)** — Checks brand mentions across ChatGPT, Claude, and Gemini
2. **[Perplexity Actor](https://apify.com/jons/perplexity-actor)** — Queries Perplexity.ai for each keyword and checks brand mentions + citations
3. **[Google Search Scraper](https://apify.com/apify/google-search-scraper)** — Extracts Google AI Overview content and checks for brand citations

#### Historical tracking

The actor stores daily snapshots in Apify Key-Value Store (`brand-visibility-history`). Each run compares against the previous day's data to calculate score deltas and detect significant changes.

#### Webhook alerts

When you provide a `webhookUrl`, the actor sends a POST request if the composite score changes by 10+ points:

```json
{
  "brandName": "Apify",
  "compositeScore": 72,
  "scoreDelta": -12,
  "alerts": [{"type": "declined", "delta": -12}],
  "monitoredAt": "2026-04-03T12:00:00Z"
}
```

### Integrations

- **MCP Server** — Expose this actor to Claude, GPT, or any AI assistant via [@apify/actors-mcp-server](https://www.npmjs.com/package/@apify/actors-mcp-server)
- **Scheduled runs** — Set up daily or weekly monitoring via Apify Scheduler
- **Webhooks** — Alert Slack, email, or any system when visibility changes
- **API** — Call via Apify API for programmatic access
- **Zapier / Make** — Connect to 5,000+ apps

### Related actors

- **[SEO Content Orchestrator](https://apify.com/amernas/seo-content-orchestrator)** — Automated keyword research, SERP analysis, and competitor content crawling. Use it to find the keywords you should monitor here — research keywords with the Orchestrator, then track brand visibility for those keywords with this actor.
- **[Company Intelligence Enricher](https://apify.com/amernas/company-intelligence-enricher)** — Enrich company profiles with Google Knowledge Graph, news, and social links.
- **[SERP Feature Tracker](https://apify.com/amernas/serp-feature-tracker)** — Track featured snippets, PAA boxes, and SERP features alongside your AI visibility.

### Pricing

This actor calls other Apify Store actors, so costs depend on usage:

- AI Visibility check: ~$0.01 per brand
- Perplexity queries: ~$0.005 per keyword
- Google SERP check: ~$0.01 per keyword batch

Typical run for 1 brand, 5 keywords, 3 competitors: **~$0.10**

# Actor input Schema

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

Your brand name to monitor

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

Keywords to check for brand mentions in AI answers

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

Competitor brands to compare visibility against

## `webhookUrl` (type: `string`):

URL to POST alerts when visibility changes significantly (optional)

## Actor input object example

```json
{
  "competitors": []
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("amernas/ai-brand-monitor").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("amernas/ai-brand-monitor").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 '{}' |
apify call amernas/ai-brand-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AI Brand Monitor - ChatGPT, Claude, Perplexity, Gemini",
        "description": "Monitor brand visibility across AI platforms and LLMs. Track mentions in ChatGPT, Claude, Perplexity, Gemini, and Google AI Overviews. Get composite scores (0-100), competitor comparisons, sentiment analysis, and webhook alerts when visibility changes.",
        "version": "0.0",
        "x-build-id": "W41V2snSDzupDzvkO"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/amernas~ai-brand-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-amernas-ai-brand-monitor",
                "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/amernas~ai-brand-monitor/runs": {
            "post": {
                "operationId": "runs-sync-amernas-ai-brand-monitor",
                "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/amernas~ai-brand-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-amernas-ai-brand-monitor",
                "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",
                    "keywords"
                ],
                "properties": {
                    "brandName": {
                        "title": "Brand Name",
                        "type": "string",
                        "description": "Your brand name to monitor"
                    },
                    "keywords": {
                        "title": "Keywords",
                        "type": "array",
                        "description": "Keywords to check for brand mentions in AI answers",
                        "items": {
                            "type": "string"
                        }
                    },
                    "competitors": {
                        "title": "Competitor Brands",
                        "type": "array",
                        "description": "Competitor brands to compare visibility against",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "webhookUrl": {
                        "title": "Webhook URL",
                        "type": "string",
                        "description": "URL to POST alerts when visibility changes significantly (optional)"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
