# AI Visibility Audit — AEO / GEO Consultant (`bovi/ai-visibility-audit`) Actor

Audit a brand's AI-search visibility across its key queries. Structured rows: per-query AI Overview presence, brand citations, organic rank, citation gaps, outreach targets, plus a roll-up with share-of-voice and recommended focus. Pay per row.

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

## Pricing

from $4.37 / 1,000 audit-rows

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## AI Visibility Audit — AEO / GEO Consultant

Run a full **AI-search visibility audit** for one brand across the queries that
matter to it. Where the *tracker* monitors single queries, the *audit* answers the
consultant question: **how visible am I in AI answers overall, who is eating my
share of voice, and exactly what do I fix?** — delivered as structured rows you
can pipe, not a prose report.

### Output (structured rows, two shapes)

**`row_type: "query"`** — one per audited query:

| Field | Meaning |
|---|---|
| `ai_overview_present` / `brand_in_ai_overview` | Did the AI answer this query, and are you in it |
| `citation_gap` | **true** = the AI answers without you — your opportunity |
| `outreach_targets` | The domains the AI cited on a gap query — go earn a mention there |
| `brand_organic_rank` | Classic organic position (or null) |
| `visibility_score` | 0–100 per query |
| `recommended_action` | The concrete next move for this query |

**`row_type: "summary"`** — one roll-up:

| Field | Meaning |
|---|---|
| `overall_visibility_score` | Average across all queries |
| `ai_overview_coverage_pct` | Share of queries that surfaced an AI Overview |
| `brand_ai_share_of_voice_pct` | Of the AI Overviews, how many include you |
| `citation_gaps` | How many queries answer without you |
| `top_competitor_domains` | Who the AI cites most across your queries (share of voice) |
| `outreach_targets` | The deduped, ranked outreach pool |
| `recommended_focus` | The single highest-leverage focus |

### How to use it

Feed `outreach_targets` straight into a contact-details scraper to find the site
owners and request a mention — that is how AEO link-building actually works
(~85% of AI brand mentions come from external domains).

### Access & pricing

A protected target — runs through the Apify **GOOGLE\_SERP** proxy, proxy from the
first byte. Pay per row (PPE). Re-run weekly/monthly: 40–60% of AI citations
change month-to-month, so a one-time audit goes stale. Results are localized —
set `countryCode` / `languageCode` per market.

# Actor input Schema

## `queries` (type: `array`):

The searches that matter to this brand — the audit set.

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

Brand name to detect in AI answers.

## `brandDomains` (type: `array`):

Your domains — the first is the audited domain. Used to detect citations and organic rank.

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

Alternate spellings/product names to also match in AI-answer text.

## `countryCode` (type: `string`):

Two-letter country for localized results.

## `languageCode` (type: `string`):

Two-letter UI language.

## `renderJs` (type: `boolean`):

Render each SERP in a real browser to capture the JS-gated AI Overview / AI Mode. Keep ON for an AI-visibility audit.

## `proxyConfiguration` (type: `object`):

Apify proxy. RESIDENTIAL is required for the browser-render path that captures AI Overview / AI Mode.

## Actor input object example

```json
{
  "queries": [
    "best project management software",
    "asana vs monday",
    "best crm for startups"
  ],
  "brandDomains": [
    "asana.com"
  ],
  "countryCode": "us",
  "languageCode": "en",
  "renderJs": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Dataset of audit rows (row\_type=query findings and row\_type=summary).

# 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 = {
    "queries": [
        "best project management software",
        "asana vs monday",
        "best crm for startups"
    ],
    "brandDomains": [
        "asana.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("bovi/ai-visibility-audit").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 = {
    "queries": [
        "best project management software",
        "asana vs monday",
        "best crm for startups",
    ],
    "brandDomains": ["asana.com"],
}

# Run the Actor and wait for it to finish
run = client.actor("bovi/ai-visibility-audit").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "best project management software",
    "asana vs monday",
    "best crm for startups"
  ],
  "brandDomains": [
    "asana.com"
  ]
}' |
apify call bovi/ai-visibility-audit --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=bovi/ai-visibility-audit",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/rkuu7l4PlbWg4ZYoL/builds/SaVcgAuue775TDqMG/openapi.json
