# AI Brand Watch - Brand Monitoring for ChatGPT, Claude & Gemini (`desvela/brand-watch`) Actor

Know the day AI stops recommending you. AI brand monitoring and AI search visibility across ChatGPT, Claude, Perplexity & Gemini: share of voice vs competitors, brand visibility monitor, alerts only on real change (signed webhook). GEO/AEO audit, visibilityScore 0-100. $0.08/query, no subscription

- **URL**: https://apify.com/desvela/brand-watch.md
- **Developed by:** [Llorenc Ballester](https://apify.com/desvela) (community)
- **Categories:** AI, SEO tools, Agents
- **Stats:** 1 total users, 0 monthly users, 96.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $80.00 / 1,000 brand query 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/platform/actors/running/actors-in-store#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 Brand Watch — monitor your brand's visibility in ChatGPT, Claude, Perplexity & Gemini

**Know the day AI stops recommending you.** 80% of what AI engines say about your brand never shows up in your analytics. AI Brand Watch asks the questions that define your category to ChatGPT, Claude, Perplexity and Gemini — on a schedule — and tells you *what changed*: share-of-voice diffs and signed webhooks, not dashboards.

*by [Desvela](https://desvela.ai) — your agent sleeps, Desvela doesn't.*

### How it works

1. **Tell it your battlefield.** Your brand (+aliases), your competitors, and the 5-30 questions buyers ask AI in your category ("best CRM for small business in Spain").
2. **It samples the engines.** AI answers vary between runs, so each question is asked N times per engine. You get **share of voice** — the % of answers that mention you — plus your average position and which sources each engine cites.
3. **You only hear about changes.** A signed webhook (or the dataset) fires when you appear, disappear, shift ≥25 points, or the engine starts citing a new source or competitor. Schedule it weekly with Apify Schedules and forget it.

Every run also emits a **visibilityScore (0–100)** summary — one comparable number per brand, built from share of voice (55%), mention position (15%), engine coverage (15%) and citations of your own URL (15%). Track it weekly; screenshot it for your boss.

### Pricing (pay per check, no subscription)

| Event | Price |
|---|---|
| Actor start | $0.02 |
| Brand query checked (per query × engine, includes all samples) | $0.08 |
| GEO recommendations (opt-in add-on, per run) | $0.04 |
| Change alerts | free |

Typical setup — 20 queries × 2 engines, weekly: **≈ $14/month** — SaaS equivalents charge **$29–$99+/month** for the same signal (Semrush AI Visibility from $99/mo, Otterly from $29/mo). If you're looking for an **Otterly, Peec, Profound or Semrush AI Visibility alternative** without the subscription, this is it. The free Apify plan credits cover a full trial run.

#### Agents can pay for this themselves (x402)

This Actor accepts **agentic payments over [x402](https://docs.apify.com/platform/integrations/x402)**: an AI agent can run it paying USDC on Base, with **no Apify account, no billing setup and no API key**. Calling it without credentials returns `402 Payment Required` with the payment terms attached, which is exactly what an x402 client expects:

```bash
curl -i -X POST https://api.apify.com/v2/acts/desvela~brand-watch/runs \
  -H 'Content-Type: application/json' -d '{}'
## HTTP/2 402 · {"error":{"type":"x402-payment-required", ...}}
```

Practical note: Apify's agentic flow buys a prepaid, spend-capped token with a **$1 minimum**, valid 14 days, and unused balance is not refunded. At $0.08 per query·engine that first dollar covers roughly a dozen checks, so it is worth spending it rather than topping up per run.

Not every Actor is eligible (it requires pay-per-event pricing, limited permissions and no Standby mode). This one is, and no opt-in is needed on your side.

### Webhook payload

```json
{
  "events": [{
    "event": "brand_visibility_changed",
    "brand": "Acme CRM",
    "engine": "perplexity",
    "query": "best CRM for small business in Spain",
    "change": {
      "type": "disappeared",
      "share_of_voice": { "before": 0.67, "after": 0 },
      "new_cited_source": "reddit.com/r/smallbusiness/..."
    },
    "checked_at": "2026-07-28T09:00:00Z"
  }]
}
```

Requests are signed with `X-Desvela-Signature` (HMAC-SHA256). Docs: [desvela.dev](https://desvela.dev).

### Real numbers from our own brands

Before charging anyone we ran Brand Watch on two businesses we own (full disclosure — that's why we can show the raw numbers):

- **A digital time-capsule product**: 0% share of voice across all four engines — completely invisible. But the run returned the exact sources the engines cite instead (YouTube dominates; Arweave, IPFS and OpenTimestamps own the category). That list *is* the GEO to-do list — one run, ~$5.
- **A photography backdrop store**: brand mentions 0%, yet its URL is cited by Perplexity in 4 of 5 queries. Brand mention and source citation are different metrics — we measure both. Each engine cites a different source ecosystem (Gemini favors photo blogs; Perplexity cites the store and Reddit).
- On the purchase-intent query ("where to buy…") the store appeared in 1 of 3 samples. A single check would have called that yes or no at random; sampling turns it into a rate worth tracking — the weekly watch now guards exactly that number.

### Honest measurement notes

- We call the engines' **APIs with web search enabled**. API answers correlate with, but are not pixel-identical to, each consumer product. We always measure the same way, so diffs are valid.
- Share of voice over N samples is the metric — single snapshots of a non-deterministic system are noise, and we refuse to sell you noise.

### FAQ

**Which engines?** OpenAI (ChatGPT), Perplexity, Anthropic (Claude), Gemini. Pick any subset.
**Do I need my own API keys?** No — checks run on ours; the per-check price includes it.
**Can my AI agent consume this?** Yes — that's the point. Webhook + dataset are structured for machines, and the actor is callable as an MCP tool today via the Apify gateway: `https://mcp.apify.com/?tools=desvela/brand-watch` (works from Claude, Cursor or any MCP client — docs at [desvela.dev](https://desvela.dev)).

***

*Find this actor by what it does: AI brand monitoring · AI visibility tracker · share of voice in ChatGPT · brand mentions in AI answers · ChatGPT brand tracker · Perplexity brand monitor · Gemini visibility · Claude brand mentions · LLM brand tracking · AI search monitoring · AI citation tracker · GEO audit · AEO tools · generative engine optimization · answer engine optimization · AI SEO · brand watch · AI brand visibility API · Otterly alternative · Peec alternative · Profound alternative · Semrush AI Visibility alternative · no-subscription AI rank tracker · MCP brand monitoring tool.*

# Actor input Schema

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

The brand to track, e.g. "Acme CRM".

## `brandAliases` (type: `array`):

Other ways AI engines may refer to your brand (domain, alternative spellings).

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

Competitor brand names to track alongside yours.

## `queries` (type: `array`):

The 5-30 questions that define your category, e.g. "best CRM for small business in Spain". These are asked to each AI engine.

## `engines` (type: `array`):

Which AI answer engines to check.

## `samplesPerQuery` (type: `integer`):

AI answers vary between runs. We ask each question several times and report share of voice across samples.

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

POST endpoint that receives a signed event when your brand visibility changes. Leave empty to only use the dataset.

## `notifyOnlyOnChange` (type: `boolean`):

If enabled, the webhook fires only when something changed vs the previous run.

## `includeRecommendations` (type: `boolean`):

Generate 3-5 concrete GEO actions from this run's data (which sources each engine cites, where competitors win). Charged as one 'recommendation' event ($0.04) only when delivered.

## Actor input object example

```json
{
  "brandName": "HubSpot",
  "brandAliases": [],
  "competitors": [
    "Salesforce",
    "Zoho CRM",
    "Pipedrive"
  ],
  "queries": [
    "best CRM for small business",
    "HubSpot alternatives for startups"
  ],
  "engines": [
    "openai",
    "perplexity"
  ],
  "samplesPerQuery": 3,
  "notifyOnlyOnChange": true,
  "includeRecommendations": false
}
```

# Actor output Schema

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

Share of voice per query and engine, plus any detected changes, in the run's dataset.

# 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": "HubSpot",
    "competitors": [
        "Salesforce",
        "Zoho CRM",
        "Pipedrive"
    ],
    "queries": [
        "best CRM for small business",
        "HubSpot alternatives for startups"
    ],
    "engines": [
        "openai",
        "perplexity"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("desvela/brand-watch").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": "HubSpot",
    "competitors": [
        "Salesforce",
        "Zoho CRM",
        "Pipedrive",
    ],
    "queries": [
        "best CRM for small business",
        "HubSpot alternatives for startups",
    ],
    "engines": [
        "openai",
        "perplexity",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("desvela/brand-watch").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": "HubSpot",
  "competitors": [
    "Salesforce",
    "Zoho CRM",
    "Pipedrive"
  ],
  "queries": [
    "best CRM for small business",
    "HubSpot alternatives for startups"
  ],
  "engines": [
    "openai",
    "perplexity"
  ]
}' |
apify call desvela/brand-watch --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/DZVehGVFdZA6ePtTZ/builds/gAXkyOfsK0k8xxd4Z/openapi.json
