# Are You Recommended by ChatGPT, Perplexity & Gemini? (`fuze/ai-brand-visibility`) Actor

Track how visible your brand is in ChatGPT, Perplexity, Gemini & Google AI Overviews — are you recommended when buyers ask AI, and how do you compare to competitors? Pairs with the Fuze AI Search Visibility Platform for the full GEO report. Reliable, no API keys.

- **URL**: https://apify.com/fuze/ai-brand-visibility.md
- **Developed by:** [Fredrik Hansson](https://apify.com/fuze) (community)
- **Categories:** AI, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $44.00 / 1,000 prompt checkeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Brand Visibility Tracker (GEO/AEO)

**When people ask AI "what's the best X?", does it recommend YOU — or your competitors?**

As AI answer engines (ChatGPT, AI search, Perplexity-style tools) replace classic search, buyers increasingly get a single AI answer instead of ten blue links. If the AI doesn't mention your brand, you're invisible — and most companies have no idea where they stand. This Actor measures it.

![AI Brand Visibility Tracker (GEO/AEO) — input and sample output](https://datatools-hub.vercel.app/actor-shots/ai-brand-visibility.png)

### Quick start

1. **Fill in the input** — set the fields in the input tab (prefilled with a working example).
2. **Click Start** — the Actor runs and writes one record per item to the dataset.
3. **Get your data** — export to **JSON, CSV or Excel**, or pull it via the API.

### 👉 Make this continuous with Citely

This Actor gives you a **one-time report** — a snapshot of where you stand today. [**Citely**](https://datatools-hub.vercel.app/citely) turns that snapshot into an **always-on SEO + AEO system** that runs continuously and auto-applies fixes for you: a self-learning CTR title/meta optimizer that auto-applies to your pages, weekly AI-citation tracking with share-of-voice trends, Google Search Console insights with click-collapse alarms, and JSON-LD validation. Connect once, it runs daily.

→ <https://datatools-hub.vercel.app/citely>

Give it your brand (and optionally competitors). It asks an AI **with live web search** a set of realistic buyer questions, then detects — per question — whether your brand is recommended, its rank, the sentiment, which competitors show up, and which sources the AI cites. It rolls that up into a **visibility score** and **share of voice**.

This is **Generative/Answer Engine Optimization (GEO/AEO)** — the new SEO — in a single run.

```json
// input
{ "brand": "Notion", "domain": "notion.so", "topic": "note-taking and productivity apps",
  "competitors": ["Evernote", "Obsidian", "Coda"] }
```

```json
// per-prompt output
{
  "prompt": "What are the best note-taking apps for teams in 2026?",
  "brandMentioned": true,
  "brandRank": 1,
  "sentiment": "positive",
  "competitorsMentioned": ["Evernote", "Coda"],
  "brandCited": true,
  "citedDomains": ["notion.so", "pcmag.com", "zapier.com"],
  "answerExcerpt": "Notion is frequently recommended as the most flexible all-in-one workspace for teams..."
}
```

Plus an aggregate report in the run's **SUMMARY**: `visibilityScore`, `citationRate`, `averageRank`, `shareOfVoice`, `sentimentBreakdown`, `topCompetitors`.

***

### Why this matters now

- **New, urgent need** — every marketing/SEO team is suddenly asking "are we visible in AI answers?" and has no tooling for it.
- **Universal** — any brand in any category.
- **Track over time** — run it weekly/monthly to see your AI visibility trend and whether your GEO efforts work.
- **Competitive** — share of voice shows exactly who the AI favours over you.

***

### Use cases

- **GEO/AEO monitoring** — benchmark and track your brand's presence in AI answers.
- **Competitive intelligence** — see which competitors the AI recommends and how often.
- **Content strategy** — the `citedDomains` show which sources the AI trusts for your category, so you know where to get mentioned.
- **Agent tool** — via the Apify MCP server, an agent can check "is brand X recommended by AI for Y?" on demand.

***

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `brand` | `string` | — (required) | Brand/company to track. |
| `domain` | `string` | — | Your domain — detects when the AI cites your own site. |
| `topic` | `string` | — | Category; used to auto-generate prompts. |
| `prompts` | `string[]` | — | Your own buyer-intent questions. Leave empty to auto-generate. |
| `promptCount` | `integer` | `5` | How many prompts to generate when none are supplied. |
| `competitors` | `string[]` | — | Competitor names to watch for (drives share of voice). |
| `model` | `string` | `gpt-4o-mini` | OpenAI model for web search + analysis. |

***

### Output

One dataset item per prompt (see example above), plus an aggregate visibility report in the run's `SUMMARY` key-value record.

***

### Pricing

Pay-per-event: one **`prompt-checked`** event per question analysed (each includes a web‑search answer + analysis).

***

### Environment variables

| Variable | Required | Purpose |
|---|---|---|
| `OPENAI_API_KEY` | **Yes** | Powers the web‑search answers and analysis. |

***

### Notes

- Answers come from an AI **with live web search**, which reflects how modern AI answer engines respond — results naturally vary over time, which is exactly what you track.
- If web search is unavailable on your OpenAI account, it falls back to the model's own knowledge (less current) and reports no cited sources.
- Use consistent prompts across runs to track a clean trend.

### Run it locally

```bash
npm install
export OPENAI_API_KEY=...
## Put your input in storage/key_value_stores/default/INPUT.json, then:
apify run
```

### License

ISC.

### Related actors

- [AI Share of Voice — Multi-Engine GEO Tracker](https://apify.com/fuze/ai-share-of-voice) — Track your brand's visibility and share of voice across AI answer engines, with
- [AI Brand Accuracy Monitor (Wrong Facts)](https://apify.com/fuze/ai-brand-accuracy) — Catch wrong, outdated and hallucinated facts that AI answer engines state about your
- [AI Citation Source Miner (GEO/AEO)](https://apify.com/fuze/ai-citation-miner) — Discover which websites AI answer engines cite for your category — so you know where to

# Actor input Schema

## `brand` (type: `string`):

The brand/company name to track.

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

Your website domain — used to detect when the AI cites your own site as a source.

## `topic` (type: `string`):

The category your brand competes in. Used to auto-generate prompts if you don't provide your own.

## `prompts` (type: `array`):

The buyer-intent questions to test (one per line). Leave empty to auto-generate from the brand/topic.

## `promptCount` (type: `integer`):

How many prompts to auto-generate when none are supplied.

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

Competitor names to watch for in the AI's answers (drives share of voice).

## `model` (type: `string`):

Model used for web search + analysis (default gpt-4o-mini).

## Actor input object example

```json
{
  "brand": "Notion",
  "promptCount": 5
}
```

# Actor output Schema

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

Per-prompt brand-visibility results in the default 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 = {
    "brand": "Notion"
};

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

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

```

## MCP server setup

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

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/N3nPe2LndzgFTM5FZ/builds/OVgALEUwhQITSpmnk/openapi.json
