# \[DEPRECATED] GEO Brand Sentiment - AI Brand Perception Analysis (`dltik/geo-brand-sentiment`) Actor

Analyze how AI models perceive your brand: overall sentiment, key strengths/weaknesses, brand positioning (leader/challenger/niche), recommendation likelihood, and comparison vs competitors across ChatGPT, Claude, and Gemini.

- **URL**: https://apify.com/dltik/geo-brand-sentiment.md
- **Developed by:** [Walid](https://apify.com/dltik) (community)
- **Categories:** SEO tools, Marketing, AI
- **Features:** Limited permissions
- **Stats:** 17 total users, 1 monthly users, 100.0% runs succeeded, 5 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

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

## GEO Brand Sentiment — AI Brand Perception Analysis

**GEO Brand Sentiment** reveals how AI models actually describe your brand — not just whether you're mentioned, but what they say. Get an **overall sentiment score**, key strengths and weaknesses as perceived by AI, brand positioning (leader / challenger / niche), recommendation likelihood, and a head-to-head comparison vs your competitors across ChatGPT, Claude, and Gemini.

Your brand reputation through the eyes of AI — across every major platform at once.

> ⭐ **Found this useful?** Click the **Bookmark** button at the top of [this page](https://apify.com/dltik/geo-brand-sentiment) — it helps the scraper stay visible to others who need it. Takes 1 click. No signup beyond your existing Apify account.

***

### What can GEO Brand Sentiment analyze about your brand?

- 💬 **Overall sentiment score (0–100)** — positive / neutral / negative, with confidence level
- 💪 **Key strengths** — what AI consistently praises about your brand
- ⚠️ **Key weaknesses** — what AI consistently criticizes or flags as limitations
- 🏷️ **Brand positioning** — does AI perceive you as a leader, challenger, niche player, or unknown?
- 👍 **Recommendation likelihood** — how likely is AI to recommend your brand vs alternatives?
- 🔁 **Narrative themes** — recurring storylines AI tells about your brand
- ⚔️ **vs Competitors** — head-to-head verdict: who does AI pick, and why?
- 🤖 **Per-LLM breakdown** — do GPT-4o, Claude, and Gemini perceive you differently?

***

### What data does GEO Brand Sentiment extract?

| Field | Description |
|-------|-------------|
| `overall_sentiment` | `{"score": 0-100, "label": "positive/neutral/negative", "confidence": 0-1}` |
| `brand_positioning` | `leader` / `challenger` / `niche` / `unknown` |
| `recommendation_likelihood` | `high` / `medium` / `low` |
| `key_strengths` | Top 5 strengths mentioned across all AI responses |
| `key_weaknesses` | Top 5 weaknesses mentioned across all AI responses |
| `narrative_themes` | Recurring themes about your brand (e.g. "ease of use", "pricing concerns") |
| `vs_competitors` | Head-to-head win/loss record vs each competitor |
| `per_llm_sentiment` | Sentiment score breakdown by LLM |
| `raw_responses` | First 20 individual AI responses with full analysis |

***

### How to analyze how AI perceives your brand

1. **[Create a free Apify account](https://apify.com/sign-up)**
2. **Open [GEO Brand Sentiment](https://apify.com/dltik/geo-brand-sentiment)** in Apify Store
3. **Enter your brand name and industry** (e.g. `Notion`, `project management tools`)
4. **Add competitor names** (optional, enables head-to-head analysis)
5. **Add your OpenRouter API key** (get one at [openrouter.ai/keys](https://openrouter.ai/keys))
6. **Click Start** — runs 30 sentiment queries across 3 LLMs in 1–2 minutes
7. **Download your brand perception report** in JSON, CSV, or Excel

***

### How much does AI brand sentiment analysis cost?

**$0.05 per response analyzed** via Apify Pay-Per-Event. Plus your own OpenRouter API usage.

| Run | Responses analyzed | Apify cost | OpenRouter cost |
|-----|--------------------|------------|----------------|
| Quick test (3 LLMs × 5 prompts) | 15 | ~$0.75 | ~$0.02 |
| Standard (3 LLMs × 10 prompts) | 30 | ~$1.50 | ~$0.03 |
| Deep analysis (4 LLMs × 10 prompts) | 40 | ~$2.00 | ~$0.04 |

> A full brand perception analysis across 3 AI platforms costs ~$1.50 — vs $500+ for a traditional brand perception study.

***

### Input

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `brand` | string | ✅ | — | Your brand name (e.g. `Notion`) |
| `industry` | string | ✅ | — | Your industry (e.g. `project management tools`) |
| `competitors` | array | ❌ | `[]` | Competitors for head-to-head analysis (e.g. `["Asana", "ClickUp"]`) |
| `llms` | array | ❌ | 3 models | Override which LLMs to query |
| `aspects` | array | ❌ | `[]` | Specific aspects to focus on (e.g. `["pricing", "support", "integrations"]`) |
| `openrouterApiKey` | string | ❌ | env var | Your OpenRouter API key |

***

### Output example

```json
{
  "_type": "geo_brand_sentiment",
  "brand": "Notion",
  "industry": "project management tools",
  "overall_sentiment": {
    "score": 78,
    "label": "positive",
    "confidence": 0.82
  },
  "brand_positioning": "leader",
  "recommendation_likelihood": "high",
  "key_strengths": [
    "flexibility and customization",
    "all-in-one workspace",
    "strong template ecosystem",
    "clean design",
    "good for personal and team use"
  ],
  "key_weaknesses": [
    "steep learning curve for new users",
    "can feel overwhelming for simple tasks",
    "limited offline functionality",
    "pricing concerns for larger teams"
  ],
  "narrative_themes": [
    "flexible but complex",
    "loved by power users",
    "best for knowledge management"
  ],
  "vs_competitors": {
    "Asana": {
      "wins": 18,
      "losses": 7,
      "reason": "Notion wins on flexibility; Asana wins on task tracking structure"
    },
    "ClickUp": {
      "wins": 12,
      "losses": 14,
      "reason": "ClickUp perceived as more feature-rich for project management"
    }
  },
  "per_llm_sentiment": {
    "openai/gpt-4o-mini": { "score": 80, "label": "positive" },
    "anthropic/claude-haiku-4.5": { "score": 82, "label": "positive" },
    "google/gemini-2.5-flash": { "score": 71, "label": "positive" }
  }
}
```

***

### Use GEO Brand Sentiment via API

Integrate brand perception monitoring into your analytics stack, run automatic alerts when sentiment drops, or generate client reports programmatically.

**Python:**

```python
import requests

run = requests.post(
    "https://api.apify.com/v2/acts/dltik~geo-brand-sentiment/runs",
    headers={"Authorization": "Bearer YOUR_APIFY_TOKEN"},
    json={
        "brand": "Notion",
        "industry": "project management tools",
        "competitors": ["Asana", "ClickUp"],
        "openrouterApiKey": "YOUR_OPENROUTER_KEY"
    }
).json()

print(run["data"]["id"])
```

**curl:**

```bash
curl -X POST "https://api.apify.com/v2/acts/dltik~geo-brand-sentiment/runs" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "brand": "Notion",
    "industry": "project management tools",
    "competitors": ["Asana"],
    "openrouterApiKey": "YOUR_KEY"
  }'
```

***

### Schedule monthly brand perception monitoring

Use **Apify Schedules** to run GEO Brand Sentiment every month and track perception changes over time. If a competitor launches a major campaign or a PR event affects your brand, catch it immediately. Connect to **Slack or email alerts** via Apify webhooks.

***

### FAQ

**How is this different from social media sentiment analysis?**
Social media sentiment measures what *people* say about your brand online. GEO Brand Sentiment measures what *AI models* say — which is what potential customers increasingly hear when they ask ChatGPT "is X good?". If AI consistently describes your brand as expensive or complex, that narrative affects buying decisions regardless of your actual pricing or UX.

**My overall sentiment is "positive" but recommendation_likelihood is "medium". Why?**
AI can say positive things about your brand but still not actively recommend it — often because competitors are described as "better for most use cases." The `vs_competitors` field shows exactly where AI picks a competitor over you and why.

**Which LLMs do you query?**
By default: GPT-4o Mini (OpenAI), Claude Haiku (Anthropic), and Gemini Flash (Google). All accessed via your own OpenRouter API key. You can override the `llms` parameter to test specific models.

**Can I use this for reputation management?**
Yes. If you find consistent negative narratives (e.g. AI always mentions a specific weakness), you have a clear target: create content that addresses that weakness directly, earn citations that tell a different story, or update your product and re-run to measure improvement.

**My brand is new and AI says "unknown" positioning. Is that normal?**
Yes. AI models learn from training data. If your brand is new or small, you may not have enough online presence yet for models to form strong associations. Use [GEO Prompt Research](https://apify.com/dltik/geo-prompt-research) to find prompts where you can get mentioned, then build the content to earn those mentions.

**I found a negative narrative. What should I do about it?**
The specific weakness AI mentions is usually a real signal — it reflects how your brand is talked about online. Address it on your site (FAQ, comparison pages, case studies), earn citations in publications that tell the opposite story, and re-run in 4–6 weeks. Use [GEO Visibility Score](https://apify.com/dltik/geo-visibility-score) to measure whether those changes are being picked up.

**I need custom sentiment tracking for a client or agency.**
Open an issue on the [Issues tab](https://apify.com/dltik/geo-brand-sentiment/issues) or contact us through Apify.

***

⭐ **Found GEO Brand Sentiment useful? Bookmark it** — Apify ranks actors by bookmarks, so it's the strongest signal for Store visibility. One click = directly helps this actor stay surfaced for new users.

***

### Complete your GEO analysis with the full suite

| Actor | What it does | Start with this if... |
|-------|-------------|----------------------|
| ✅ [GEO Site Audit](https://apify.com/dltik/geo-site-audit) | Technical AI readiness score | **Always start here** |
| 📊 [GEO Visibility Score](https://apify.com/dltik/geo-visibility-score) | GEO Score, mention rate, citation rate | You want your baseline AI visibility |
| ⚔️ [GEO Competitor Research](https://apify.com/dltik/geo-competitor-research) | Share of Voice vs competitors | You know which competitors to track |
| 🔍 [GEO Prompt Research](https://apify.com/dltik/geo-prompt-research) | AI keyword research & prompt scoring | You want to find new AI ranking opportunities |
| 💬 [GEO Brand Sentiment](https://apify.com/dltik/geo-brand-sentiment) | How AI models describe your brand | You want to understand AI brand perception |

# Actor input Schema

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

Your brand name to analyze (e.g. Apify, HubSpot)

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

Your industry context (e.g. 'web scraping', 'real estate tech')

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

Competitor brands for head-to-head perception analysis

## `llms` (type: `array`):

OpenRouter model IDs to query for sentiment analysis

## `aspects` (type: `array`):

Specific aspects to evaluate (e.g. \['pricing', 'ease of use', 'support'])

## `openRouterApiKey` (type: `string`):

Bring your own OpenRouter API key to run a FULL analysis on any Apify plan (including Free) — the key is used only for this run. Leave empty to use the built-in AI access (paid Apify plans) or to get a small free demo.

## Actor input object example

```json
{
  "brand": "Apify",
  "industry": "web scraping and automation",
  "competitors": [
    "Scrapy",
    "Octoparse",
    "ParseHub"
  ],
  "llms": [
    "openai/gpt-4o-mini",
    "anthropic/claude-haiku-4.5",
    "google/gemini-2.5-flash"
  ]
}
```

# Actor output Schema

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

Full brand perception analysis across all tested AI models.

# 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": "Apify",
    "industry": "web scraping and automation",
    "competitors": [
        "Scrapy",
        "Octoparse",
        "ParseHub"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dltik/geo-brand-sentiment").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": "Apify",
    "industry": "web scraping and automation",
    "competitors": [
        "Scrapy",
        "Octoparse",
        "ParseHub",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("dltik/geo-brand-sentiment").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": "Apify",
  "industry": "web scraping and automation",
  "competitors": [
    "Scrapy",
    "Octoparse",
    "ParseHub"
  ]
}' |
apify call dltik/geo-brand-sentiment --silent --output-dataset

```

## MCP server setup

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

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/TqUcVq9BIszfBOeiP/builds/yV1bq2mZiLc1eshn7/openapi.json
