# AI Brand Visibility & GEO Rank Tracker (`kamerozkan/ai-brand-visibility-tracker`) Actor

Monitor brand mentions, Share of Voice (SOV), competitor recommendations, sentiment, and citation sources across AI search engines (Perplexity, ChatGPT, Gemini, Claude). Essential for Generative Engine Optimization (GEO).

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

## Pricing

$40.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/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 & GEO Rank Tracker (ChatGPT, Perplexity, Gemini & Claude)

[![Run on Apify](https://apify.com/actor-badge?actor=kamerozkan/ai-brand-visibility-tracker)](https://apify.com/kamerozkan/ai-brand-visibility-tracker)
[![Pricing](https://img.shields.io/badge/Pricing-Pay--Per--Event%20\($0.04\)-blue)](https://apify.com/kamerozkan/ai-brand-visibility-tracker)
[![Category](https://img.shields.io/badge/Discipline-Generative%20Engine%20Optimization%20\(GEO\)-purple)](https://apify.com/kamerozkan/ai-brand-visibility-tracker)
[![Engines](https://img.shields.io/badge/Supported%20Engines-Perplexity%20|%20ChatGPT%20|%20Gemini%20|%20Claude-success)](https://apify.com/kamerozkan/ai-brand-visibility-tracker)

Track how major AI answer engines (**Perplexity, ChatGPT, Google Gemini, and Claude**) recommend your brand, software, or e-commerce products in response to real buyer queries.

Audit brand presence, calculate **Share of Voice (SOV)** against competitors, track **ranking prominence (#1, #2, #3)**, classify **recommendation sentiment**, and uncover the **exact citation URLs and media domains** the AI uses to source its answers.

***

### Why Generative Engine Optimization (GEO)?

Buyers no longer just browse Google search links: they ask AI engines: *"What is the best CRM for B2B startups?"*, *"Top alternatives to Salesforce"*, or *"Recommend accounting software for small businesses"*.

If your brand is not recommended in these AI answers, you are losing high-intent buyers to competitors before they ever visit your website.

| Feature | What you get |
| :--- | :--- |
| **Pricing Model** | **$0.04 / check (pay per event), no subscription** |
| **Citation Intelligence** | **Full URL list + root domains** |
| **Share of Voice (SOV)** | **Automated % vs your competitors** |
| **Supported Engines** | **Perplexity, ChatGPT, Gemini, Claude** |
| **Setup** | **Run with one click from the Console or the API** |
| **BYOK Support** | **Yes (use your own keys or the default)** |

***

### Core Use Cases

- **GEO (Generative Engine Optimization) Audits:** Measure your brand's AI search visibility before and after PR releases, product updates, and content marketing campaigns.
- **Citation & PR Backlink Strategy:** Discover which third-party review sites (G2, Capterra, Forbes, TechRadar) AI engines cite most frequently when answering category queries. Focus your PR and backlink acquisition on these exact domains.
- **Competitor Share of Voice (SOV) Benchmarking:** Track how often competitors (e.g. Jira, Asana, Monday) are co-recommended alongside your brand and calculate your market share percentage.
- **Brand Sentiment & Risk Monitoring:** Catch negative AI summaries, hallucinated drawbacks, or outdated pricing claims before prospective buyers see them.
- **Agency Client Reporting:** Generate weekly, automated AI visibility and prominence score reports for marketing and enterprise clients.

***

### Key Metrics Extracted per Check

Every run generates structured records containing:

1. **`isMentioned` (Boolean):** Indicates whether your brand name or any alias appeared in the AI response.
2. **`rank` (Integer):** 1-based recommendation position (e.g. `1` if you are the #1 recommended tool).
3. **`prominenceScore` (0 to 100):** Weighted score reflecting position, list order, and context prominence.
4. **`shareOfVoicePercentage` (Float):** Ratio of your brand mentions versus configured competitors (`Brand / (Brand + Competitors) * 100`).
5. **`sentiment` & `sentimentScore`:** Automatic classification (`POSITIVE`, `NEUTRAL`, `NEGATIVE`) with numeric confidence score.
6. **`competitorsMentioned` & `competitorRanks`:** Full list of competitors detected in the answer and their relative rank.
7. **`isBrandCited` (Boolean):** Flags whether the AI directly linked to your brand's primary domain.
8. **`citations` & `citedDomains`:** Complete array of cited source URLs and deduplicated root domains (e.g. `["forbes.com", "g2.com", "techradar.com"]`).
9. **`recommendationSnippet`:** Extracted contextual excerpt describing how the AI characterized your product.

***

### Input Parameters

| Parameter | Type | Required | Default | Description |
| :--- | :--- | :--- | :--- | :--- |
| `brandName` | String | **Yes** | `"Linear"` | Primary brand, product, or company name to monitor. |
| `brandDomain` | String | No | `"linear.app"` | Primary website domain to track direct citation backlinks. |
| `brandAliases` | Array of Strings | No | `["Linear App"]` | Alternative names or spelling variations. |
| `competitors` | Array of Strings | No | `["Jira", "Asana"]` | Competitor brand names to benchmark against for SOV. |
| `industry` | String | No | `"project management"` | Product category used for automated prompt generation. |
| `platforms` | Array of Strings | No | `["perplexity", "chatgpt", "gemini"]` | AI engines to query: Perplexity, ChatGPT, Gemini, Claude. |
| `customQueries` | Array of Strings | No | `[]` | Specific buyer prompts or search queries to test. |
| `queryTemplates` | Array of Strings | No | `["best_tools", ...]` | Automated prompt categories: `best_tools`, `alternatives`, `recommendations`. |
| `maxQueriesPerPlatform` | Integer | No | `3` | Maximum queries to run per engine (1 to 20). |
| `openaiApiKey` | String (Secret) | No | `null` | Optional BYOK OpenAI API key. |
| `perplexityApiKey` | String (Secret) | No | `null` | Optional BYOK Perplexity Sonar API key. |
| `geminiApiKey` | String (Secret) | No | `null` | Optional BYOK Google Gemini API key. |
| `anthropicApiKey` | String (Secret) | No | `null` | Optional BYOK Anthropic Claude API key. |

***

### Example JSON Output

```json
{
  "brandName": "Linear",
  "brandDomain": "linear.app",
  "platform": "perplexity",
  "query": "What are the best project management software for startups in 2026?",
  "timestamp": "2026-10-06T20:45:00+00:00",
  "isMentioned": true,
  "rank": 1,
  "mentionCount": 2,
  "prominenceScore": 100,
  "shareOfVoicePercentage": 50.0,
  "sentiment": "POSITIVE",
  "sentimentScore": 0.95,
  "isBrandCited": true,
  "competitorsMentioned": ["Jira", "Asana"],
  "competitorRanks": {
    "Jira": 2,
    "Asana": 3
  },
  "citations": [
    "https://linear.app/features",
    "https://www.g2.com/categories/project-management",
    "https://techradar.com/best-project-management"
  ],
  "citedDomains": [
    "g2.com",
    "linear.app",
    "techradar.com"
  ],
  "recommendationSnippet": "Linear is widely considered the best and fastest issue tracker for software startups. Its keyboard-first design, speed, and Git integrations make it a standout choice...",
  "aiResponseExcerpt": "Based on real-time web intelligence for 'best project management software for startups'..."
}
```

***

### Code Examples

#### Python (apify-client)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")

run_input = {
    "brandName": "HubSpot",
    "brandDomain": "hubspot.com",
    "competitors": ["Salesforce", "Zoho CRM", "Pipedrive"],
    "industry": "CRM software for small business",
    "platforms": ["perplexity", "chatgpt", "gemini"],
    "customQueries": [
        "What is the best CRM software for small businesses in 2026?",
        "Top alternatives to Salesforce for growing teams"
    ],
}

## Run the audit on Apify
run = client.actor("kamerozkan/ai-brand-visibility-tracker").call(run_input=run_input)

## Print results
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"[{item['platform'].upper()}] Mentioned: {item['isMentioned']} | Rank: #{item['rank']} | SOV: {item['shareOfVoicePercentage']}%")
    print(f"  Cited Domains: {', '.join(item['citedDomains'][:4])}")
```

#### JavaScript / Node.js (apify-client)

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

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

const runInput = {
    brandName: 'Stripe',
    brandDomain: 'stripe.com',
    competitors: ['Adyen', 'PayPal', 'Square'],
    platforms: ['perplexity', 'chatgpt'],
    customQueries: ['Best payment gateways for global SaaS platforms in 2026'],
};

const run = await client.actor('kamerozkan/ai-brand-visibility-tracker').call(runInput);
const { items } = await client.dataset(run.defaultDatasetId).listItems();

console.log('GEO Audit Report:', items);
```

#### cURL

```bash
curl --request POST \
  --url "https://api.apify.com/v2/acts/kamerozkan~ai-brand-visibility-tracker/runs?token=YOUR_APIFY_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "brandName": "Shopify",
    "brandDomain": "shopify.com",
    "competitors": ["WooCommerce", "BigCommerce"],
    "platforms": ["perplexity", "chatgpt"],
    "industry": "ecommerce platform"
  }'
```

***

### Pricing Details

This Actor operates under **Pay-Per-Event (PPE)**:

- **Per Brand Query Checked ($0.04):** Charged per individual brand × query × platform check.
- Example: 3 queries on 3 engines for one brand = 9 checks = $0.36.
- Compute usage is fully included in the event fee. Set spending limits in your Apify Console to keep your runs within budget.

***

### Automated Scheduling & Webhooks

You can automate regular GEO rank tracking using Apify Schedules:

- **Weekly Executive Report:** Set a cron schedule (e.g. `0 9 * * 1`) to run every Monday morning.
- **Slack / Webhook Alerts:** Configure Apify Webhooks to notify your Slack or Discord channel when your brand falls below rank #3 or when a competitor's Share of Voice spikes.

***

### Support and feedback

- Found a bug or missing a field? Open an issue on the **Issues** tab of this Actor. We reply within
  48 hours and ship most fixes within a few days.
- Have an idea for a feature? Issues are the fastest way to get it built.
- If the Actor saves you time, a short review on this page helps other users find it.

***

### Related Apify Scraping & Intelligence Tools

Explore the other high-performance, cost-effective scrapers in this suite:

- [Google Hotels Prices & OTA Rate Tracker API](https://apify.com/kamerozkan/google-hotels-prices) - Real-time hotel rates, room types, and OTA rate disparity scraper.
- [Google Ads Transparency Center Scraper & Spy API](https://apify.com/kamerozkan/google-ads-transparency-scraper) - Monitor competitor ad creatives, variations, formats, and target regions.
- [Google Flights Prices & Fare Tracker API](https://apify.com/kamerozkan/google-flights-prices) - Extract live airline ticket fares, non-stop flight schedules, and price histories.

# Actor input Schema

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

The exact brand, company, or product name you want to monitor (e.g. 'Linear', 'Shopify', 'Stripe').

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

Your brand's primary website domain to track direct citation links (e.g. 'linear.app', 'shopify.com').

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

Other common names or variations used for your brand.

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

List of competitors to monitor for co-mentions and calculate relative Share of Voice (SOV).

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

Industry or software category used to generate automated recommendation prompts (e.g. 'project management', 'CRM', 'accounting').

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

Select which AI search engines to query.

## `customQueries` (type: `array`):

Specific search queries or buyer prompts to submit to each AI engine.

## `queryTemplates` (type: `array`):

Automatically generates category-specific prompts if custom queries are not provided.

## `maxQueriesPerPlatform` (type: `integer`):

Maximum number of queries to execute per selected AI platform.

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

Provide your own OpenAI API key to execute queries directly with your account models.

## `perplexityApiKey` (type: `string`):

Provide your own Perplexity API key to query Sonar models with real-time web citations.

## `geminiApiKey` (type: `string`):

Provide your own Google Gemini API key to query Gemini 1.5 with Google Search grounding.

## `anthropicApiKey` (type: `string`):

Provide your own Anthropic API key to query Claude 3.5 models.

## Actor input object example

```json
{
  "brandName": "Linear",
  "brandDomain": "linear.app",
  "brandAliases": [
    "Linear App",
    "Linear.app"
  ],
  "competitors": [
    "Jira",
    "Asana",
    "Monday.com",
    "ClickUp"
  ],
  "industry": "project management software",
  "platforms": [
    "perplexity",
    "chatgpt",
    "gemini"
  ],
  "customQueries": [
    "What are the best project management software for engineering startups in 2026?",
    "Top alternatives to Jira for fast agile development"
  ],
  "queryTemplates": [
    "best_tools",
    "alternatives",
    "recommendations"
  ],
  "maxQueriesPerPlatform": 3
}
```

# Actor output Schema

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

Default dataset containing audit checks across all configured AI search engines.

# 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": "Linear",
    "brandDomain": "linear.app",
    "brandAliases": [
        "Linear App",
        "Linear.app"
    ],
    "competitors": [
        "Jira",
        "Asana",
        "Monday.com",
        "ClickUp"
    ],
    "industry": "project management software",
    "customQueries": [
        "What are the best project management software for engineering startups in 2026?",
        "Top alternatives to Jira for fast agile development"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kamerozkan/ai-brand-visibility-tracker").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": "Linear",
    "brandDomain": "linear.app",
    "brandAliases": [
        "Linear App",
        "Linear.app",
    ],
    "competitors": [
        "Jira",
        "Asana",
        "Monday.com",
        "ClickUp",
    ],
    "industry": "project management software",
    "customQueries": [
        "What are the best project management software for engineering startups in 2026?",
        "Top alternatives to Jira for fast agile development",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("kamerozkan/ai-brand-visibility-tracker").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 '{
  "brandName": "Linear",
  "brandDomain": "linear.app",
  "brandAliases": [
    "Linear App",
    "Linear.app"
  ],
  "competitors": [
    "Jira",
    "Asana",
    "Monday.com",
    "ClickUp"
  ],
  "industry": "project management software",
  "customQueries": [
    "What are the best project management software for engineering startups in 2026?",
    "Top alternatives to Jira for fast agile development"
  ]
}' |
apify call kamerozkan/ai-brand-visibility-tracker --silent --output-dataset

```

## MCP server setup

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

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/JUZV8kpKwQGCvdZa3/builds/GSpn2yPfw1sCExLR4/openapi.json
