# Brand Share of Voice in AI Search — Category Benchmark (`highbrow_fame/ai-brand-share-of-voice`) Actor

AI share of voice: how often ChatGPT, Perplexity and Gemini name your brand vs competitors ($0.08 per prompt). Ranked by mention rate, citation share and position, plus top-cited sources.

- **URL**: https://apify.com/highbrow_fame/ai-brand-share-of-voice.md
- **Developed by:** [yestrue](https://apify.com/highbrow_fame) (community)
- **Categories:** AI, SEO tools, Marketing
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $56.00 / 1,000 prompt benchmarkeds

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

## Brand Share of Voice in AI Search - Category Benchmark

**$0.08 per prompt benchmarked: a 10-prompt benchmark costs $0.80, and the free sample run costs no prompt fee.**

When a buyer asks an AI assistant "what are the best project management tools?", which brands does it name, in what order, and which websites does it cite? This Actor runs that experiment for a whole product category and hands you the scoreboard: **every brand ranked by mention rate, citation share and average position, split by AI engine, plus the websites the engines cite most.**

You type a category. It writes the buyer questions, asks Perplexity and Google Gemini (ChatGPT optional), reads the brand names out of every answer, merges name variants ("HubSpot", "HubSpot CRM", "HubSpot Sales Hub" become one brand) and counts. No brand list needed, no API key needed.

**Try it in one minute:**

1. Press **Start**. The prefilled input benchmarks "project management software" with 3 prompts, and keeps Asana, Trello and Monday.com in the table even if nobody mentions them.
2. Open the **Output** tab for the brand ranking, or the key-value store record `OUTPUT` for the full report with the top-cited sources.
3. Tick **Free sample run** to see real output for 3 prompts with no prompt fee, then raise the number of prompts to 20-30 for a steadier picture.

### More AI visibility tools from highbrow_fame

| Tool | Question it answers | Price |
| --- | --- | --- |
| [AI Brand Monitor](https://apify.com/highbrow_fame/ai-search-visibility-tracker) | Is my brand cited by ChatGPT, Perplexity and Gemini? | $0.05 per answer; [full audit $4.80](https://apify.com/highbrow_fame/ai-search-visibility-tracker/examples/full-ai-visibility-audit-5-dollars) |
| [AI Overview citation checker](https://apify.com/highbrow_fame/ai-overview-citation-checker) | Which sites does Google AI Overview cite for my keywords? | $0.03 per keyword |
| [Page citation checker](https://apify.com/highbrow_fame/ai-page-citation-checker) | Is this URL cited by ChatGPT, Perplexity or Gemini? | $0.12 per URL |
| [Shopify AI Readiness Audit](https://apify.com/highbrow_fame/shopify-ai-readiness-audit) | Is my Shopify catalog ready for AI shopping assistants? | $0.01 per store |

### What you get

One dataset row per brand (`recordType: "brand"`), best first:

| Field | Meaning |
| --- | --- |
| `rank`, `brand` | position in the ranking and the normalised brand name |
| `mentionRate` | share of all analysed answers that mention the brand (0-1) |
| `citationShare` | share of all cited source URLs that sit on the brand's own website (0-1) |
| `avgPosition` | average place of the brand in the answers that mention it (1 = named first) |
| `engineSplit` | mention rate per engine, for example `{ "perplexity-agent": 0.8, "gemini": 0.6 }` |
| `sampleAnswersCount` | how many answers (prompts x engines x samples) the rates rest on |
| `answersMentioning`, `promptsMentioned` | raw counts behind the rates |
| `domains` | the brand's own domains found among the cited sources |

A last row (`recordType: "summary"`) describes the run: prompts requested, benchmarked and failed, engines, answers analysed, brands found, the top brand and the five most-cited domains. The key-value store record `OUTPUT` holds everything in one JSON (summary, brands, top-cited sources, status of every prompt), and `TOP_SOURCES` holds the sources table on its own.

#### Sample output

From a real 3-prompt run (Perplexity and Gemini, 1 sample each, 6 answers). Your numbers will differ: that is the point of measuring.

```json
{
  "recordType": "brand",
  "category": "project management software",
  "rank": 2,
  "brand": "Asana",
  "mentionRate": 1,
  "citationShare": 0.015,
  "avgPosition": 1.83,
  "engineSplit": { "gemini": 1, "perplexity-agent": 1 },
  "sampleAnswersCount": 6,
  "answersMentioning": 6,
  "promptsMentioned": 3,
  "domains": ["asana.com"],
  "isSeedBrand": true,
  "country": "us",
  "language": "en"
}
```

```json
{ "domain": "forbes.com", "citations": 4, "share": 0.061, "promptsCiting": 3, "engines": ["perplexity-agent"], "brandOwner": null }
```

The second record is one entry of the top-cited sources table: independent publishers and review sites are visible next to the brands' own websites, so you can see where to earn a mention, not only who already has one.

### Input

- **Category** (required): a noun phrase such as "CRM software" or "running shoes".
- **Brands to always include**: optional. Your brand and your rivals; a brand nobody mentions is reported at 0%.
- **Market (country)** and **Answer language**: the market goes into the generated questions ("... in Germany"); the language is what the engines answer in. Generated questions are written in English; for another language write your own under **Your own prompts**.
- **Number of prompts**: 1-30, default 8. **Samples**: 1-5 per prompt and engine, default 2.
- **AI engines**: ChatGPT, Perplexity and Gemini by default (ChatGPT limits below).
- **Free sample run**: at most 3 prompts, 1 sample, Perplexity only, no prompt fee.
- **Brands in the table**, **Prompts in parallel**, and an optional **OpenAI API key** for uncapped ChatGPT.

### Price

**$0.08 per prompt benchmarked** (pay per event). A prompt counts as benchmarked when at least one engine answered it and its answers were analysed; samples and engines do not change the price. A prompt that no engine answers is not charged, and neither is a prompt that the run's maximum charge had no room for. The default run (8 prompts) costs $0.64; a thorough one (30 prompts) $2.40. The free sample run charges no prompt fee; Apify's small run-start fee applies to every run on the platform.

### Honest limits

- **It measures what the engines say today, from a small sample.** AI answers change between requests and between weeks. With 8 prompts and 2 samples you get a reliable first picture of who dominates, not a precise percentage. Use more prompts and samples, or run it monthly, to see movement.
- **Brand names are read by a language model.** One small model call per prompt lists the brands in each answer; it is accurate on mainstream categories and can miss or mis-split obscure names. If that call is unavailable the Actor falls back to simple rules (bold names and list items) and says so in the summary row (`extraction`).
- **Merging is by name.** Variants that start with the same brand name are merged ("Salesforce Sales Cloud" into "Salesforce"). Two different products that share a first word and never appear under the bare name stay separate.
- **Citation share counts a brand's own website only.** Sources are matched to brands by domain name (hubspot.com belongs to HubSpot). Third-party pages that talk about a brand do not count toward its share; they show up in the top-cited sources table instead.
- **Generated questions are English.** They are fixed templates (the same category always gives the same questions, so runs are comparable). Write your own prompts for other languages.
- **Engines.** ChatGPT, Perplexity and Gemini (with Google Search) run on our keys. ChatGPT with web search costs about 3x more to run, so on our key it answers the first 15 prompts of a run with 1 sample each (3 prompts on a free Apify plan); add your own OpenAI key and it runs on every prompt and sample on your own OpenAI bill. Gemini's source links are reported by host name only.
- **Not affiliated with** or endorsed by Perplexity, Google or OpenAI.

### FAQ

**Can I benchmark a very specific niche?** Yes: "ergonomic office chairs for tall people" works as a category. The more specific it is, the fewer brands you will find and the more each prompt repeats.

**Can I run it on a schedule?** Yes. Use an Apify schedule and compare the brand rows from run to run, or read the dataset through the API.

**Why is my brand missing?** Add it under "Brands to always include" and it stays in the table at its true rate, 0% included.

If this Actor was useful, an honest review on its Store page helps other people find and judge it.

# Actor input Schema

## `category` (type: `string`):

The product or service category buyers ask about, in the plural or as a noun phrase, for example "CRM software", "project management tools" or "running shoes". The Actor turns it into buyer questions such as "What are the best project management tools?".

## `seedBrands` (type: `array`):

Optional. Brands you want in the table even if no answer mentions them (your own brand and your closest rivals). A brand nobody mentions is reported at 0%, which is often the finding.

## `country` (type: `string`):

Two-letter country code for the market, for example us, gb, de, ca, au. For anything except us the generated questions end with "in <country>", so the answers and sources are local.

## `language` (type: `string`):

Language the AI engines answer in. The generated questions are always written in English; to benchmark in another language, write your own questions in "Your own prompts" below.

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

How many buyer questions to generate and run (1-30). Each one is charged once, when it has been answered and analysed. 8 gives a first picture; 20-30 gives a steadier ranking.

## `samples` (type: `integer`):

How many times each prompt is asked on each engine (1-5). AI answers change from one request to the next, so 2 samples smooth out luck. More samples cost us more but not you: the price is per prompt.

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

Which engines answer the prompts. Perplexity and Gemini (Google Search grounded) run on our keys and are the default. ChatGPT is optional: it costs far more to run, so on our key it gets 1 sample on the first 15 prompts of a run (3 on a free Apify plan); add your own OpenAI key below to run it on every prompt and sample.

## `sampleRun` (type: `boolean`):

Runs at most 3 prompts, 1 sample each, on Perplexity only, and charges no prompt fee, so you can see real output before paying. The platform's small run-start fee still applies.

## `customPrompts` (type: `array`):

Optional. Questions you want benchmarked instead of the generated ones, in any language (set the answer language to match). Used up to the number of prompts above.

## `maxBrands` (type: `integer`):

How many brands to keep in the ranking (3-100). Brands you listed under "Brands to always include" are kept regardless.

## `openaiApiKey` (type: `string`):

Only for ChatGPT. With your own key ChatGPT runs on every prompt and sample, on your OpenAI bill (about $0.012 per call). Without it, ChatGPT is capped as described under AI engines.

## `maxConcurrency` (type: `integer`):

How many prompts are processed at the same time (1-6). Lower it if you see rate-limit warnings.

## Actor input object example

```json
{
  "category": "project management software",
  "seedBrands": [
    "Asana",
    "Trello",
    "Monday.com"
  ],
  "country": "us",
  "language": "en",
  "promptCount": 3,
  "samples": 1,
  "engines": [
    "perplexity-agent",
    "gemini",
    "openai"
  ],
  "sampleRun": false,
  "customPrompts": [],
  "maxBrands": 25,
  "maxConcurrency": 3
}
```

# Actor output Schema

## `brands` (type: `string`):

One row per brand with mention rate, citation share, average position and the split by engine, followed by a summary row.

## `brandsCsv` (type: `string`):

The same rows as CSV, for a spreadsheet.

## `fullReport` (type: `string`):

OUTPUT record of the key-value store: the summary, the brand ranking, the top-cited sources table and the status of every prompt.

## `topSources` (type: `string`):

The websites the AI engines cited most for this category, with their share and the brand that owns each one.

# 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 = {
    "category": "project management software",
    "seedBrands": [
        "Asana",
        "Trello",
        "Monday.com"
    ],
    "country": "us",
    "promptCount": 3,
    "samples": 1,
    "engines": [
        "perplexity-agent",
        "gemini",
        "openai"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("highbrow_fame/ai-brand-share-of-voice").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 = {
    "category": "project management software",
    "seedBrands": [
        "Asana",
        "Trello",
        "Monday.com",
    ],
    "country": "us",
    "promptCount": 3,
    "samples": 1,
    "engines": [
        "perplexity-agent",
        "gemini",
        "openai",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("highbrow_fame/ai-brand-share-of-voice").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 '{
  "category": "project management software",
  "seedBrands": [
    "Asana",
    "Trello",
    "Monday.com"
  ],
  "country": "us",
  "promptCount": 3,
  "samples": 1,
  "engines": [
    "perplexity-agent",
    "gemini",
    "openai"
  ]
}' |
apify call highbrow_fame/ai-brand-share-of-voice --silent --output-dataset

```

## MCP server setup

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

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/jyeg4xvB7PcJSJUBx/builds/DTW87nJDjTrbJOBOE/openapi.json
