# AI Search Visibility Monitor (`physealabs/ai-search-visibility-monitor`) Actor

Track whether AI answers mention your brand and cite your domains across a repeatable query set.

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

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## 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 Search Visibility Monitor

See what AI search engines **actually say** about your brand—plus whether they mention you, cite your domain, and which other domains earn citations.

### Input example

```json
{
  "brand": "Notion",
  "brandAliases": ["Notion AI"],
  "domains": ["notion.so"],
  "queries": [
    "What are the best project management tools for startups?",
    "Best all-in-one workspace for small teams",
    "What is the best note taking app for teams?",
    "Notion alternatives for project management",
    "Best AI workspace tools for knowledge management",
    "Which productivity tool combines docs, tasks, and wikis?"
  ],
  "engines": ["aiMode", "aiOverview", "perplexity"],
  "country": "US",
  "maxScraperChargeUsd": 1
}
```

### Output example

Each AI-engine answer becomes a dataset row:

```json
{
  "query": "What is the best note taking app for teams?",
  "engine": "Perplexity",
  "brand_mentioned": true,
  "own_domain_cited": true,
  "competitors_cited": ["example-review-site.com"],
  "answer_excerpt": "Notion is one option...",
  "citations": [
    {"url": "https://www.notion.so/product", "title": "Notion product"}
  ],
  "status": "ok",
  "error": null,
  "checked_at": "2026-09-04T12:00:00Z"
}
```

The default key-value store also contains:

- `REPORT.md`: buyer-friendly summary, result table, cited competitors, and answer excerpts.
- `RUN_SUMMARY.json`: machine-readable aggregate metrics and scraper run ID.

### How it works

This Actor does **not** ask a plain chat model to imitate search. It calls Apify's official [`apify/google-search-scraper`](https://apify.com/apify/google-search-scraper) with Google AI Mode, Google AI Overviews, and/or Perplexity enabled, then deterministically analyzes the returned answers and source URLs.

The scraper Actor runs and bills on the buyer's Apify account in addition to this Actor's pay-per-event charge. `maxScraperChargeUsd` caps that child run. This Actor charges **$0.01 per query analyzed**, only when at least one selected engine returns a real answer; failed queries are not charged.

### Inputs

- `brand`: primary brand name to detect.
- `brandAliases`: optional alternative names.
- `domains`: owned domains; subdomains count automatically.
- `queries`: 1–100 repeatable questions.
- `engines`: any of `aiMode`, `aiOverview`, and `perplexity`.
- `country`: two-letter Google localization country code.
- `maxScraperChargeUsd`: hard spend cap passed to the scraper child run.

### Honest failure handling

AI results are not guaranteed for every query or engine. Every unavailable result is retained as a dataset row with `status: "error"` and a readable error. The Actor never invents an answer or citation.

# Actor input Schema

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

The primary brand name to detect in AI answers.

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

Optional alternative names that count as a brand mention.

## `domains` (type: `array`):

Domains that count as owned citations; subdomains are included.

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

Questions to ask each selected AI search engine, one per line (maximum 100).

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

Real AI-engine result types to request from Apify's Google Search Results Scraper.

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

Two-letter country code used for Google search localization.

## `maxScraperChargeUsd` (type: `number`):

Maximum amount in USD that the called Google Search Results Scraper run may charge to your Apify account.

## Actor input object example

```json
{
  "brand": "Notion",
  "brandAliases": [
    "Notion AI"
  ],
  "domains": [
    "notion.so"
  ],
  "queries": [
    "What are the best project management tools for startups?",
    "Best all-in-one workspace for small teams",
    "What is the best note taking app for teams?",
    "Notion alternatives for project management",
    "Best AI workspace tools for knowledge management",
    "Which productivity tool combines docs, tasks, and wikis?"
  ],
  "engines": [
    "aiMode",
    "aiOverview",
    "perplexity"
  ],
  "country": "US",
  "maxScraperChargeUsd": 1
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

## `report` (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 = {
    "brand": "Notion",
    "brandAliases": [
        "Notion AI"
    ],
    "domains": [
        "notion.so"
    ],
    "queries": [
        "What are the best project management tools for startups?",
        "Best all-in-one workspace for small teams",
        "What is the best note taking app for teams?",
        "Notion alternatives for project management",
        "Best AI workspace tools for knowledge management",
        "Which productivity tool combines docs, tasks, and wikis?"
    ],
    "engines": [
        "aiMode",
        "aiOverview",
        "perplexity"
    ],
    "country": "US",
    "maxScraperChargeUsd": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("physealabs/ai-search-visibility-monitor").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": "Notion",
    "brandAliases": ["Notion AI"],
    "domains": ["notion.so"],
    "queries": [
        "What are the best project management tools for startups?",
        "Best all-in-one workspace for small teams",
        "What is the best note taking app for teams?",
        "Notion alternatives for project management",
        "Best AI workspace tools for knowledge management",
        "Which productivity tool combines docs, tasks, and wikis?",
    ],
    "engines": [
        "aiMode",
        "aiOverview",
        "perplexity",
    ],
    "country": "US",
    "maxScraperChargeUsd": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("physealabs/ai-search-visibility-monitor").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": "Notion",
  "brandAliases": [
    "Notion AI"
  ],
  "domains": [
    "notion.so"
  ],
  "queries": [
    "What are the best project management tools for startups?",
    "Best all-in-one workspace for small teams",
    "What is the best note taking app for teams?",
    "Notion alternatives for project management",
    "Best AI workspace tools for knowledge management",
    "Which productivity tool combines docs, tasks, and wikis?"
  ],
  "engines": [
    "aiMode",
    "aiOverview",
    "perplexity"
  ],
  "country": "US",
  "maxScraperChargeUsd": 1
}' |
apify call physealabs/ai-search-visibility-monitor --silent --output-dataset

```

## MCP server setup

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

```

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/JW6fKH5fjaU2W2Zcy/builds/5CzfrU4I7xx9F7I2T/openapi.json
