# Agency AI Visibility Reports - White-Label Client Packets (`wrenfield-data/agency-ai-visibility-reports`) Actor

Upload your client list once and get a finished, white-label weekly report per client: brand mentions, share of voice and citations across ChatGPT, Perplexity, Gemini and Google AI Mode, Google rank changes, quoted evidence and a prioritized action queue. Charged per completed client packet.

- **URL**: https://apify.com/wrenfield-data/agency-ai-visibility-reports.md
- **Developed by:** [Wrenfield Data](https://apify.com/wrenfield-data) (community)
- **Categories:** SEO tools, AI, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12,000.00 / 1,000 client packet (books of 1-19 clients)s

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

## Agency AI Visibility Reports: white-label weekly client packets

> **$12 per client packet.** $8 each for books of 20-49 clients, $7 each at 50+. The Store price box shows "$12,000 / 1,000 packets": that is the same $12 per packet. Free quote first; only completed packets are charged.

**Paste your client list once. Every week, each client gets a finished, white-label report** showing whether **ChatGPT, Perplexity, Gemini and Google AI Mode** recommend them, which competitors they name instead, which sites they cite, how the client ranks on Google, what changed since last week, and **a prioritized action queue with quoted evidence**. You also get one portfolio page for the whole book.

It replaces the Monday-morning work between "we ran the checks" and "the client got a report": scoping, collecting answers, matching brands, comparing weeks, writing recommendations and formatting.

- 📦 **One packet per client, ready to send**: HTML + PDF with your agency name, logo and color. No Wrenfield branding.
- 🤖 **4 AI search surfaces**: ChatGPT (with web search), Perplexity, Gemini and Google AI Mode. Optional: Google AI Overviews, Claude, ChatGPT API.
- 📋 **Where to get listed first**: the directory and list pages AI engines cited when they named a competitor instead of your client.
- 📊 **Scores that hold up**: AI visibility, share of voice, top-pick rate, own-site citation rate, by engine and per competitor, with week-over-week change.
- ✅ **Action queue, not just charts**: up to 8 ranked actions per client ("Get into the answer for …", "Win the top pick from …", "Get your own page cited …"), each with the quote and the sources the engines cite.
- 🔍 **Evidence for every number**: a question × engine grid and the quote behind each answer.
- 💵 **Price shown before anything runs**, charged only for completed packets. Same-week re-runs are free.

#### Sample packet

![First page of a sample client packet: AI visibility 78.1%, share of voice 22.9%, and a ranked action queue with quotes from ChatGPT and Perplexity](https://wrenfielddata.com/media/actor-packet-sample.webp)

<sub>First page of a real packet from this Actor (Help Scout, answers collected Oct 22, 2026), white-labeled for a fictional agency ("Northwind Digital"). Help Scout did not commission it. Each run also writes the full HTML + PDF to the run's key-value store.</sub>

### How it works

1. **Paste your client book** as CSV (export it from Google Sheets). One row per client:

| Column | Required | Example |
| --- | --- | --- |
| `client` | yes | `Help Scout` |
| `domain` | yes | `helpscout.com` |
| `brand` | no (defaults to client) | `Help Scout` (add variants with `\|`) |
| `competitors` | recommended | `Zendesk \| zendesk.com; Intercom \| intercom.com` (separate with `;`) |
| `questions` | one of these two | up to 20 buyer questions, separated with `;` |
| `category` | one of these two | `help desk software` (we write 6 neutral buyer questions) |
| `keywords` | no | up to 10 Google keywords to rank-check, `;`-separated |
| `location`, `language` | no | `United Kingdom`, `English` |

2. Add **agency name, logo URL and accent color**.
3. Click **Start**. The run first writes a **QUOTE** (clients, checks, maximum price). Turn on **Quote only** to see it without running.
4. Open **PORTFOLIO.html** (Output tab) for the book, and each client's packet from there or from the **Client packets** table.
5. **Save as a task and schedule it weekly.** Each run compares every client with the previous week (same **Book ID**).

A 3-client book with 8 questions × 4 engines and 3 keywords each finishes in about 3 minutes.

### Pricing

One charge per **completed** client packet. The price per packet depends on the size of the book in the run:

| Client book in the run | Price per client packet | 4.33 weekly runs a month |
| --- | --- | --- |
| 1-19 clients | **$12** | 5 clients ≈ $259.80 / month |
| 20-49 clients | **$8** | 20 clients ≈ $692.80 / month |
| 50+ clients | **$7** | 50 clients ≈ $1,515.50 / month |

Each packet covers up to **20 questions on up to 4 engines** and up to **10 Google keywords**, plus the HTML + PDF, evidence and action queue.

**Not charged:** packets where fewer than 90% of checks came back (delivered free, marked *partial*), re-runs of the same book in the same week (served from the stored packets; turn on **Re-collect this week** to ask again, which is charged), quote-only runs. Set **Maximum cost per run** in Apify to cap a run; clients beyond the cap are skipped, not charged.

**Free Apify plan:** up to 3 free preview packets a week, each for 1 client (5 questions, 2 engines, no rank checks), not charged.

How this compares: subscription GEO trackers charge per prompt per month (for example Otterly lists $189/month for 100 prompts across four engines, checked Oct 22, 2026) and leave the report writing to you. This Actor is priced per finished client deliverable instead.

### What's in a packet

| Section | What it shows |
| --- | --- |
| At a glance | AI visibility, share of voice, top pick, own site cited, Google top 10, each with change vs last week |
| Action queue | Up to 8 actions, highest impact first, each with why, what to do, quotes and cited sources |
| Question coverage | Grid of every question × engine: the client's position and who was named first |
| Brands in AI answers | Client and each competitor: named in, share of voice, top pick, average position, citations, change |
| By engine | The client's numbers per engine |
| What changed | Gained and lost mentions, position moves, citations, Google moves |
| Google rankings | Position in the top 20, AI Overview present, client cited in it, competitor positions |
| Where to get listed first | Directory and "best of" list pages cited in answers that named a competitor but not the client: the listings to pitch first |
| Sources AI trusts | The third-party domains cited most across the client's answers (image CDNs and API hosts filtered out) |
| Evidence | Every answer: named or not, position, first brand and the quote |

### Output

- **Dataset (Client packets view):** one row per client with `status`, `charged`, `visibilityScore`, `visibilityDelta`, `shareOfVoice`, `topPickRate`, `citationRate`, `googleTop10`, `topAction`, the full `actions` list, `competitors`, `whereToGetListed` (url, title, domain, answers), and links to the packet HTML, PDF and evidence JSON.
- **Key-value store:** `PORTFOLIO.html`, `MANIFEST` (JSON: per-client status, charge, links), `QUOTE`, `packet-<client>.html`, `packet-<client>.pdf`, `evidence-<client>` (every answer's brand matches and citations, for your own dashboards).

```json
{
  "client": "Help Scout",
  "status": "complete",
  "charged": true,
  "visibilityScore": 78.1,
  "visibilityDelta": null,
  "shareOfVoice": 22.9,
  "topPickRate": 28.1,
  "citationRate": 34.4,
  "topAction": "Win the top pick from Zoho Desk",
  "reportUrl": "https://api.apify.com/v2/key-value-stores/<id>/records/packet-help-scout.html"
}
```

### API, schedules and agents

Send the book as JSON in `clients` instead of CSV:

```json
{
  "clients": [{"client": "Acme", "domain": "acme.com", "competitors": "Rival | rival.com; Other | other.com", "category": "project management software", "keywords": "project management software"}],
  "agencyName": "Northwind Digital",
  "bookId": "northwind-weekly"
}
```

Schedule the saved task weekly in Apify Console, and add a webhook to post `PORTFOLIO.html` to Slack or email. MCP: `https://mcp.apify.com?tools=wrenfield-data/agency-ai-visibility-reports`. Call it with `quoteOnly: true` first to show the cost.

### Method and limits

- Questions are asked fresh each run through each engine's live interface or API (ChatGPT with web search, Perplexity Sonar API, Gemini, Google AI Mode) for the client's country and language, signed out, through a licensed data provider. No browser automation, no accounts of yours.
- Brand matching uses the names, variants and domains in your book. Short or everyday-word names (for example *Close*, *Kit*, *Front*) are matched case-sensitively to avoid false hits. Questions that name the client are reported but excluded from the scores.
- AI answers vary between runs. Read a single changed answer as a signal and the weekly trend as the measure. Packets say this to the client too.
- Google positions are organic positions in the top 20 of a desktop search.

### FAQ

**Is client data shared?** No. Runs and stored packets live in your Apify account. We don't read, log or reuse your client list, questions or results.

**Can I edit the report?** Yes. The HTML is a single self-contained file, and the dataset and evidence JSON hold every number if you'd rather use your own template, Google Sheets or Looker Studio.

**What if an engine is down?** Each check is retried a bounded number of times. If a packet still has fewer than 90% of its checks, it is delivered marked *partial* and not charged; re-run it later.

**Can I run more than 20 questions for a client?** Split the client into two rows with different names (for example "Acme (pricing)" and "Acme (alternatives)").

### Related tools

- [AI Search Visibility Tracker](https://apify.com/wrenfield-data/ai-search-visibility-tracker): raw prompt × engine checks for your own pipelines
- [AI Answer Scraper](https://apify.com/wrenfield-data/ai-answer-scraper): full answers, citations and structured brand lists from 7 engines
- [Keyword Search Volume](https://apify.com/wrenfield-data/keyword-search-volume): Google Ads volumes without a Google Ads account
- [Competitor Keywords](https://apify.com/wrenfield-data/competitor-keywords): the keywords any domain ranks for

### Feedback and support

Missing a section your clients ask for, or need another country or engine? Open an issue on the **Issues** tab with the run ID. We reply there, usually within a day.

### Acceptable use

- Independent tool; not affiliated with OpenAI, Perplexity, Google or the brands in the samples.
- Don't use it to manipulate AI answers or search rankings.
- Not available from, or for people or organizations in, Russia, Belarus, Cuba, Iran, Syria, Myanmar, North Korea, Crimea or the Russian-occupied territories of Ukraine.

# Actor input Schema

## `clientsCsv` (type: `string`):

One row per client. Columns: <code>client</code>, <code>domain</code>, <code>brand</code> (optional; add spelling variants with <code>|</code>), <code>competitors</code> (separate with <code>;</code>, e.g. <code>Zendesk | zendesk.com; Intercom | intercom.com</code>), <code>questions</code> (up to 20, separated with <code>;</code>) or <code>category</code> (we write 6 neutral buyer questions for you), <code>keywords</code> (optional, up to 10 Google keywords, <code>;</code>-separated), <code>location</code> and <code>language</code> (optional). Export it from Google Sheets as CSV and paste it here.

## `agencyName` (type: `string`):

Shown on every packet and the portfolio page (white label: Wrenfield Data is not mentioned).

## `agencyLogoUrl` (type: `string`):

Optional. Public PNG or JPG URL; shown top left of each packet.

## `accentColor` (type: `string`):

Optional. Hex color for headings and charts, e.g. <code>#1F4E79</code>.

## `reportTitle` (type: `string`):

Optional. Default: <i>AI Search Visibility Report</i>.

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

Engines each question is asked on. Default: the four consumer AI search surfaces.

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

Used for rows without a <code>location</code>. Country name or 2-letter code.

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

Used for rows without a <code>language</code>.

## `quoteOnly` (type: `boolean`):

Validate the book and show the number of packets, checks and the maximum price, without running checks or charging.

## `bookId` (type: `string`):

Name of this client book. Runs with the same ID compare each client with the previous week. Default: built from the agency name.

## `forceRefresh` (type: `boolean`):

By default a re-run in the same week reuses the stored packets for free. Turn on to ask every question again (charged again).

## `includePdf` (type: `boolean`):

Also save a PDF of each packet.

## `clients` (type: `array`):

Alternative to the CSV for API and agent use: an array of objects with the same fields, e.g. <code>\[{"client":"Acme","domain":"acme.com","competitors":"Rival | rival.com","category":"project management software"}]</code>.

## Actor input object example

```json
{
  "clientsCsv": "client,domain,brand,competitors,questions,keywords\nHelp Scout,helpscout.com,Help Scout,Zendesk | zendesk.com; Freshdesk | freshworks.com; Intercom | intercom.com,What is the best help desk software for a small business?; What is the best customer support tool for a SaaS startup?; What is the most affordable help desk software?,help desk software; shared inbox software\nPipedrive,pipedrive.com,Pipedrive,HubSpot | hubspot.com; Salesforce | salesforce.com; Zoho CRM | Zoho | zoho.com,What is the best CRM for a small sales team?; Which CRM is easiest to set up for a startup?; What is the best CRM for B2B sales pipelines?,sales pipeline software; crm for small business",
  "agencyName": "Northwind Digital",
  "accentColor": "#1F4E79",
  "engines": [
    "chatgpt",
    "perplexity",
    "gemini",
    "google_ai_mode"
  ],
  "country": "United States",
  "language": "English",
  "quoteOnly": false,
  "forceRefresh": false,
  "includePdf": true
}
```

# Actor output Schema

## `portfolio` (type: `string`):

No description

## `packets` (type: `string`):

No description

## `manifest` (type: `string`):

No description

## `quote` (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 = {
    "clientsCsv": `client,domain,brand,competitors,questions,keywords
Help Scout,helpscout.com,Help Scout,Zendesk | zendesk.com; Freshdesk | freshworks.com; Intercom | intercom.com,What is the best help desk software for a small business?; What is the best customer support tool for a SaaS startup?; What is the most affordable help desk software?,help desk software; shared inbox software
Pipedrive,pipedrive.com,Pipedrive,HubSpot | hubspot.com; Salesforce | salesforce.com; Zoho CRM | Zoho | zoho.com,What is the best CRM for a small sales team?; Which CRM is easiest to set up for a startup?; What is the best CRM for B2B sales pipelines?,sales pipeline software; crm for small business`,
    "agencyName": "Northwind Digital",
    "engines": [
        "chatgpt",
        "perplexity",
        "gemini",
        "google_ai_mode"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("wrenfield-data/agency-ai-visibility-reports").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 = {
    "clientsCsv": """client,domain,brand,competitors,questions,keywords
Help Scout,helpscout.com,Help Scout,Zendesk | zendesk.com; Freshdesk | freshworks.com; Intercom | intercom.com,What is the best help desk software for a small business?; What is the best customer support tool for a SaaS startup?; What is the most affordable help desk software?,help desk software; shared inbox software
Pipedrive,pipedrive.com,Pipedrive,HubSpot | hubspot.com; Salesforce | salesforce.com; Zoho CRM | Zoho | zoho.com,What is the best CRM for a small sales team?; Which CRM is easiest to set up for a startup?; What is the best CRM for B2B sales pipelines?,sales pipeline software; crm for small business""",
    "agencyName": "Northwind Digital",
    "engines": [
        "chatgpt",
        "perplexity",
        "gemini",
        "google_ai_mode",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("wrenfield-data/agency-ai-visibility-reports").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 '{
  "clientsCsv": "client,domain,brand,competitors,questions,keywords\\nHelp Scout,helpscout.com,Help Scout,Zendesk | zendesk.com; Freshdesk | freshworks.com; Intercom | intercom.com,What is the best help desk software for a small business?; What is the best customer support tool for a SaaS startup?; What is the most affordable help desk software?,help desk software; shared inbox software\\nPipedrive,pipedrive.com,Pipedrive,HubSpot | hubspot.com; Salesforce | salesforce.com; Zoho CRM | Zoho | zoho.com,What is the best CRM for a small sales team?; Which CRM is easiest to set up for a startup?; What is the best CRM for B2B sales pipelines?,sales pipeline software; crm for small business",
  "agencyName": "Northwind Digital",
  "engines": [
    "chatgpt",
    "perplexity",
    "gemini",
    "google_ai_mode"
  ]
}' |
apify call wrenfield-data/agency-ai-visibility-reports --silent --output-dataset

```

## MCP server setup

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

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/kqQDQyEAS24QqqCnF/builds/QOBNExdLQyQGpjan1/openapi.json
