# AI Brand Visibility Report: No API Key Needed (`kyungminlee/ai-brand-visibility-report`) Actor

See whether AI search recommends your brand, with no API key or subscription. Enter your website: the Actor writes 30 buyer questions, asks Google Gemini with live Google Search, and returns an HTML report: mention and citation rates (95% CI), competitor share of voice, top cited sources.

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

## Pricing

from $9.00 / ai visibility report

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 Report: No API Key Needed

Find out **whether AI search recommends your brand** — without an API key, a
subscription, or any setup. Enter your website and brand name; the Actor reads
your site, writes 30 realistic buyer questions, asks **Google Gemini with live
Google Search** each of them three times, and delivers a shareable **HTML
report**: how often you are mentioned, how often your site is cited as a
source, your share of voice against competitors, the websites the AI trusts
for your market, and every sentence it wrote about you. You pay once per
report. This is an unofficial tool and is not affiliated with Google.

### What does the report show?

- **Mention rate** – share of AI answers that name your brand (or an alias or
  your domain), with a 95% confidence interval.
- **Citation rate** – share of answers whose sources include your website.
- **Average position** – where your brand appears among the brands named.
- **Share of voice** – your mentions versus each competitor you list.
- **Most cited sources** – the domains the AI relies on for your market: the
  review sites, blogs and competitors you need to be present on.
- **What the AI says about you** – every sentence mentioning your brand, so you
  can spot outdated or wrong claims.
- **By question type** – best-of lists, comparisons, how-to, pricing, trust and
  use-case questions reported separately.

### Example: what a report surfaces

A September 2026 report for **apify.com** (competitors Bright Data, ScrapingBee,
Zyte; 30 questions × 3 answers):

- Apify was named in **48%** of answers (95% CI 38–58%), on average in position
  1.4; share of voice 36% vs Bright Data 33%.
- Only **18%** of answers cited apify.com. The engine leaned most on
  brightdata.com (29 answers), grepsr.com (26), octoparse.com (22) and
  scrapingbee.com (21).
- **`use-apify.com`**, a third-party guide site that is not run by Apify, was
  cited in 14 answers — nearly as often as the official site (16). The AI was
  sourcing Apify's pricing and product claims from a site the brand does not
  control. Findings like this are what the **Most cited sources** table is for.

### Why use it?

- **No API key, no subscription** – the AI calls are included in the price.
- **Honest statistics** – every question is sampled several times because AI
  answers vary; rates come with confidence intervals, not a single lucky run.
- **Live web answers** – Gemini answers with Google Search grounding, the same
  way AI Overviews and Gemini users see your market today.
- **Any market language** – questions can be written in English, Korean,
  Japanese, German, French, Spanish and ten other languages.
- **Fast** – a full 90-answer report is typically ready in a few minutes.

### How to use it

1. Enter your **Website URL** and **Brand name**.
2. Add **Competitors** (up to 10) to get share of voice.
3. Pick the **Question language** of the market you want to measure.
4. Click **Start**. Open `REPORT.html` from the run's **Storage → Key-value
   store** tab, or use the `reportUrl` link in the first dataset item.

Want to see the format first? Turn on **Demo mode** for a free report built
from simulated answers.

Run it monthly (Apify **Schedules**) to track whether your visibility is
improving; compare mention rates together with their confidence intervals.

### Input

| Field | Default | Notes |
|---|---|---|
| `websiteUrl` | – | Brand homepage (required). |
| `brandName` | – | Brand as written in text (required). |
| `brandAliases` | – | Extra spellings or product names counted as mentions. |
| `competitors` | – | Up to 10 competitor names. |
| `businessDescription` | – | Optional context when the homepage is thin. |
| `language` | English | Language of the generated questions. |
| `promptCount` | 30 | 5–40 questions. Same price for any size. |
| `samplesPerPrompt` | 3 | 1–3 answers per question. |
| `demoMode` | false (pre-checked in the Console form) | Free preview with simulated answers. Uncheck it in the Console to get the real, charged report. |

### Output

The first dataset item is the report summary:

```json
{
  "type": "audit",
  "brand": "Apify",
  "language": "English",
  "promptCount": 30,
  "brandMentionRate": {"count": 43, "n": 90, "rate": 0.478, "ci95": [0.378, 0.58]},
  "brandCitationRate": {"count": 16, "n": 90, "rate": 0.178, "ci95": [0.113, 0.269]},
  "averageBrandRank": 1.4,
  "shareOfVoice": {"Apify": {"mentions": 43, "share": 0.358}, "Bright Data": {"mentions": 40, "share": 0.333}},
  "topCitedDomains": [{"domain": "brightdata.com", "count": 29}, {"domain": "grepsr.com", "count": 26}],
  "reportUrl": "https://api.apify.com/v2/key-value-stores/.../records/REPORT.html",
  "charged": true
}
```

It is followed by one `promptResult` item per answer: `category`, `prompt`,
`sampleIndex`, `answer`, `citations` (resolved source URLs), `brandMentioned`,
`brandCited`, `brandRank`, `competitorsMentioned`, `citedDomains`,
`brandSentences`, `error`, `latencyMs`.

### Pricing

One `report` event per delivered report, whatever the number of questions.
The AI usage is included — you need no account with Google. You are not
charged when the run fails, when fewer than half of the planned answers could
be collected (the partial report is still delivered, free), or in Demo mode.

### Tips

- Keep the defaults (30 questions × 3 answers) for results you can compare
  month to month.
- Look at **Most cited sources** first: getting listed or reviewed on those
  sites is usually the fastest way to be cited more.
- Add your product names as **Brand aliases** so the AI's mentions of them
  count.
- Use **Business description** when your homepage is mostly images or
  JavaScript.

### FAQ

**Which AI does it ask?** Google Gemini (the newest stable Flash model) with
Google Search grounding. Results describe that engine on the day of the run.

**Why do numbers change between runs?** AI answers are non-deterministic. That
is why each question is asked several times and every rate carries a
confidence interval.

**Is my data shared?** Only your website's public pages are read. Questions and
answers stay in your run's storage.

**Can it improve my visibility?** It measures and shows which sources matter;
the content and PR work is up to you.

**Something looks wrong.** Open an issue on the Actor page; issues are answered
within a few days.

# Actor input Schema

## `websiteUrl` (type: `string`):

Homepage of the brand to audit. The Actor reads the homepage and up to five key pages (about, products, pricing, blog) to understand what the brand sells.

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

How the brand is written in text, for example 'Apify'. Mentions are matched case-insensitively together with the website domain.

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

Other spellings or product names that count as a brand mention (optional).

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

Competitor brand names to measure share of voice against (0-10).

## `businessDescription` (type: `string`):

Optional one-paragraph description of what the brand offers and who buys it. Improves prompt generation; leave empty to rely on the crawled site.

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

Language the buyer questions are written in. Use the language of the market you want to measure; AI answers follow the question's language.

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

How many buyer-intent questions to generate (5-40), spread across best-of, comparison, how-to, pricing, trust and use-case questions. The price per report is the same for any size.

## `samplesPerPrompt` (type: `integer`):

How many times each question is asked (1-3). AI answers vary between runs; 3 samples give tighter confidence intervals.

## `demoMode` (type: `boolean`):

Generate the full report layout from simulated answers without calling the AI engine. Demo reports are free and clearly labelled. Uncheck this to get the real report from live Gemini + Google Search answers (charged once per report).

## Actor input object example

```json
{
  "websiteUrl": "https://apify.com",
  "brandName": "Apify",
  "brandAliases": [],
  "competitors": [
    "Bright Data",
    "Zyte",
    "ScrapingBee"
  ],
  "language": "English",
  "promptCount": 30,
  "samplesPerPrompt": 3,
  "demoMode": true
}
```

# Actor output Schema

## `report` (type: `string`):

No description

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

No description

# 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 = {
    "websiteUrl": "https://apify.com",
    "brandName": "Apify",
    "brandAliases": [],
    "competitors": [
        "Bright Data",
        "Zyte",
        "ScrapingBee"
    ],
    "businessDescription": "",
    "language": "English",
    "promptCount": 30,
    "samplesPerPrompt": 3,
    "demoMode": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("kyungminlee/ai-brand-visibility-report").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 = {
    "websiteUrl": "https://apify.com",
    "brandName": "Apify",
    "brandAliases": [],
    "competitors": [
        "Bright Data",
        "Zyte",
        "ScrapingBee",
    ],
    "businessDescription": "",
    "language": "English",
    "promptCount": 30,
    "samplesPerPrompt": 3,
    "demoMode": True,
}

# Run the Actor and wait for it to finish
run = client.actor("kyungminlee/ai-brand-visibility-report").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 '{
  "websiteUrl": "https://apify.com",
  "brandName": "Apify",
  "brandAliases": [],
  "competitors": [
    "Bright Data",
    "Zyte",
    "ScrapingBee"
  ],
  "businessDescription": "",
  "language": "English",
  "promptCount": 30,
  "samplesPerPrompt": 3,
  "demoMode": true
}' |
apify call kyungminlee/ai-brand-visibility-report --silent --output-dataset

```

## MCP server setup

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

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/pLow4DfTPyDGph2GQ/builds/pwejp93cfzdC1izHU/openapi.json
