AI Search Visibility Tracker: ChatGPT, Perplexity avatar

AI Search Visibility Tracker: ChatGPT, Perplexity

Pricing

from $28.00 / 1,000 prompt checks

Go to Apify Store
AI Search Visibility Tracker: ChatGPT, Perplexity

AI Search Visibility Tracker: ChatGPT, Perplexity

Track brand mentions, share of voice and cited URLs in ChatGPT, Perplexity, Gemini, Google AI Overviews, AI Mode and Claude. Per prompt x engine: full answer, mention rank, sentiment, citations, your domain cited or not. Monitoring mode flags gained/lost mentions. GEO/AEO rank tracker.

Pricing

from $28.00 / 1,000 prompt checks

Rating

0.0

(0)

Developer

Wrenfield Data

Wrenfield Data

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

6

Monthly active users

7 hours ago

Last modified

Share

AI Search Visibility Tracker: brand mentions in ChatGPT, Perplexity, Gemini & Google AI Overviews

AI Search Visibility Tracker shows whether ChatGPT, Perplexity, Gemini, Google AI Overviews, Google AI Mode and Claude mention your brand when buyers ask them for recommendations. For every prompt and engine you get the full AI answer, whether your brand and each competitor is mentioned, the rank of the first mention, a sentiment snippet, every cited URL, and whether your domain is cited. Each run ends with share of voice, mention rate and citation rate per engine and brand. Turn on monitoring mode and schedule it to get alerts on gained and lost AI mentions. It's a GEO / AEO rank tracker that works without proxies, logins or API keys.

💸 $0.04 per prompt check (one prompt on one AI engine, with brand, competitor and citation analysis). Engine errors are never charged. Try it on Apify's free plan ($5 of monthly credit, no credit card).

  • 🆓 Free Apify plan: runs are limited to 10 checks per run. Any paid Apify plan removes the limit and adds volume discounts.

Wrenfield Search Data: keyword and AI-search visibility data, priced per result

Sample output

PromptEngineHubSpot mentionedPositionDomain cited
What is the best CRM for a small…Google AI Modeyes1yes
What is the best CRM for a small…ChatGPTyes1yes

What does AI Search Visibility Tracker do?

Enter your brand, your domain, a few competitors and the questions your customers ask, or just a product category, and pick the AI engines. For each prompt x engine you get one row:

  • 🤖 Full answer text (markdown) from the real ChatGPT Search, Gemini, Google AI Overview and AI Mode answers, plus Perplexity Sonar and Claude
  • ✅ Brand mentioned? for your brand and every competitor, with mention count
  • 🥇 Rank of first mention among tracked brands (1 = mentioned first) and how early in the answer it appears
  • 🙂 Sentiment (positive / neutral / negative / mixed) and the sentence that mentions you
  • 🔗 Cited URLs and domains, and whether your domain is cited
  • 🔍 Fan-out queries: the web searches ChatGPT ran to build its answer
  • 📊 Summary rows: share of voice, mention rate, average rank and citation rate per engine and per brand
  • 🔔 Monitoring mode: gained/lost mentions, citations and rank changes compared with your previous run

Why track AI search visibility?

More and more buyers ask ChatGPT, Perplexity or Google's AI Overviews "what's the best ... ?" instead of clicking ten blue links. If the AI doesn't name you, you're invisible in that conversation. This Actor turns that into numbers you can track, report and improve:

  • All major AI engines in one run. Six engines in one dataset, with the same metrics for each.
  • Real answers, localized. ChatGPT, Gemini, AI Overviews and AI Mode come from the actual consumer products for the country you choose (190+ countries).
  • Built for comparison. Competitors, share of voice and rank are part of every run, not an extra.
  • Monitoring built in. Schedule it weekly and every row tells you what changed since the last run.
  • Reliable and fast. It uses a licensed AI-answer data API, so there are no browsers, proxies or CAPTCHAs and runs rarely fail. Failed checks are free.
  • Clean JSON for agents and dashboards. Small, flat rows that work in Google Sheets, Looker Studio, n8n, Make, Zapier or an AI agent.

Use cases

  • GEO / AEO tracking: measure how generative engines rank your brand for your money keywords.
  • Competitor benchmarking: see who ChatGPT recommends first and which sources it trusts.
  • Content & PR planning: find the domains (review sites, listicles, Reddit, YouTube) that AI engines cite, then get featured there.
  • Agency reporting: share of voice per engine and per client, every week.
  • Brand monitoring: get flagged when an engine stops mentioning you or starts describing you negatively.
  1. Enter Your brand(s) (add spelling variants after |, e.g. HubSpot | HubSpot CRM) and Your domain(s).
  2. Add Competitors (optional): Salesforce | salesforce.com.
  3. Add Prompts (the questions buyers ask), or Seed topics such as CRM software to generate buyer-intent prompts automatically.
  4. Pick AI engines and the Country.
  5. Optional: turn on Monitoring mode and give the project a Tracking ID, then schedule the Actor.
  6. Click Start and export the results as Excel, CSV or JSON, or fetch them through the API.

Input example

{
"brands": ["HubSpot"],
"domains": ["hubspot.com"],
"competitors": ["Salesforce | salesforce.com", "Pipedrive | pipedrive.com", "Zoho CRM | Zoho | zoho.com"],
"prompts": ["What is the best CRM for a small business?"],
"seedTopics": ["CRM software"],
"promptsPerTopic": 3,
"engines": ["chatgpt", "perplexity", "gemini", "google_ai_overview", "google_ai_mode", "claude"],
"country": "United States",
"language": "English",
"monitoringMode": true,
"trackingId": "hubspot-us"
}
FieldDescription
brandsYour brand name(s). Variants after |. A domain-looking token becomes your domain.
domainsYour domain(s), for the "is my site cited?" check. Subdomains count.
competitorsName | variant | domain.com, one per line.
promptsQuestions to ask (max 500 characters each).
seedTopicsProduct categories to generate buyer-intent prompts from.
promptsPerTopicPrompts per seed topic (1-10, default 3).
promptGenerationtemplates (default, stable wording, best for monitoring) or ai (natural questions written by an AI model, free).
engineschatgpt, perplexity, gemini, google_ai_overview, google_ai_mode, claude. Default: ChatGPT, Perplexity, AI Overviews.
country / languagee.g. Germany / German, or DE / de. Default: United States / English.
monitoringModeCompare with the previous run that has the same trackingId.
trackingId / monitoringStoreNameProject name and named key-value store that keep the previous results.
maxChecksCap on prompt x engine checks per run (default 200).
chatgptWebSearchForce ChatGPT to search the web and cite sources (default on).
caseSensitiveCount only capitalized mentions (for brands that are common words).

Output example (one check)

{
"type": "check",
"prompt": "What is the best CRM for a small business?",
"engine": "chatgpt",
"engine_name": "ChatGPT",
"model": "gpt-5-6",
"country": "United States",
"status": "ok",
"brand": "HubSpot",
"brand_mentioned": true,
"brand_position": 1,
"brand_mention_count": 9,
"brand_sentiment": "positive",
"brand_snippet": "If you mean the best CRM for a typical small business in 2026, my pick is HubSpot.",
"your_domain_cited": true,
"your_cited_urls": ["https://www.hubspot.com/pricing/sales", "https://www.hubspot.com/products/crm"],
"competitors_mentioned": ["Pipedrive", "Zoho CRM"],
"first_mentioned_brand": "HubSpot",
"cited_domains": ["hubspot.com", "zoho.com", "stackbytrade.com"],
"citations_count": 4,
"fan_out_queries": ["best CRM for small business 2026 HubSpot Zoho Pipedrive Freshsales pricing features"],
"brand_results": [
{ "name": "HubSpot", "is_yours": true, "mentioned": true, "mention_count": 9, "position": 1,
"sentiment": "positive", "cited": true, "cited_urls": ["https://www.hubspot.com/products/crm"] },
{ "name": "Salesforce", "is_yours": false, "mentioned": false, "mention_count": 0, "position": null,
"sentiment": null, "cited": false, "cited_urls": [] }
],
"citations": [{ "url": "https://www.hubspot.com/pricing/sales", "domain": "hubspot.com", "title": "Sales Software Pricing | HubSpot" }],
"answer_text": "If you mean **the best CRM for a typical small business in 2026**, my pick is **HubSpot**. ...",
"change_status": "first_check",
"checked_at": "2026-10-08T15:14:10Z"
}

Summary rows (share of voice)

After the checks, the dataset gets one "type": "summary" row per engine (plus "engine": "all") and brand:

BrandMention rateShare of voiceAvg. rankCitation rate
HubSpot100%30%1.1733%
Zoho CRM100%30%2.1767%
Pipedrive100%30%3.00%
Salesforce33%10%3.017%

(1 prompt on all 6 engines, United States, October 2026.)

  • Mention rate = checks that mention the brand / completed checks.
  • Share of voice = the brand's mentions / mentions of all tracked brands.
  • Avg. rank = average rank among tracked brands when mentioned (1 = named first).
  • Citation rate = checks citing the brand's domain / completed checks.

The dataset has Visibility, Share of voice, Full answers, Citations and Changes views. The SUMMARY record holds the run statistics. In monitoring mode, the CHANGES record lists every prompt x engine that changed.

Monitoring mode

With monitoringMode: true, results are saved in the named key-value store ai-visibility-monitor (in your account) under your trackingId. Each new run compares every prompt x engine with the last time it was checked:

  • change_status: gained_mention, lost_mention, gained_citation, lost_citation, position_changed, competitors_changed, unchanged or first_check
  • brands_gained / brands_lost, position_change (+ = moved up), previous_checked_at
  • Summary rows get mention_rate_change, share_of_voice_change and citation_rate_change.

Schedule the Actor weekly and connect a webhook or the Slack/email integration to get notified.

Pricing

This Actor uses pay-per-event pricing: you pay per prompt check, meaning one prompt answered by one AI engine. Checks that fail are free.

EventPrice
Prompt check (prompt-check)$0.04 per prompt × engine

Upcoming change: from November 2, 2026 a prompt check costs $0.06. The examples below use today's $0.04 price; multiply by 1.5 for the new one.

Example runChecksCost
1 prompt on ChatGPT + Google AI Mode2$0.08
10 prompts on ChatGPT, Perplexity, AI Overviews30$1.20
25 prompts on all 6 engines (weekly monitoring)150$6.00

To control spend, set Maximum cost per run in the run options, or maxChecks. The Actor works out how many checks fit before it starts and stops cleanly at the limit. Free Apify plan: runs are limited to 10 checks.

Pair AI visibility with classic SEO data: keyword volume, authority, traffic and competitor ads.

All of these are maintained by the same developer and export flat JSON, CSV or Excel, so you can feed one tool's dataset into the next.

AI search visibility API: REST, Python, JavaScript, n8n and MCP

Actor ID for every client: wrenfield-data/ai-search-visibility-tracker (in URLs: wrenfield-data~ai-search-visibility-tracker). You need an Apify API token; send it in an Authorization: Bearer header. Every example below sets maxTotalChargeUsd, a hard spend cap for the run.

One request, rows back (runs up to 5 minutes):

curl -X POST "https://api.apify.com/v2/acts/wrenfield-data~ai-search-visibility-tracker/run-sync-get-dataset-items?maxTotalChargeUsd=5" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"brands": ["HubSpot"], "domains": ["hubspot.com"], "competitors": ["Salesforce | salesforce.com", "Pipedrive | pipedrive.com"], "prompts": ["What is the best CRM for a small business?"], "engines": ["chatgpt", "perplexity"]}'

Python (pip install apify-client):

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("wrenfield-data/ai-search-visibility-tracker").call(
run_input={'brands': ['HubSpot'], 'domains': ['hubspot.com'], 'competitors': ['Salesforce | salesforce.com', 'Pipedrive | pipedrive.com'], 'prompts': ['What is the best CRM for a small business?'], 'engines': ['chatgpt', 'perplexity']},
max_total_charge_usd=5,
)
for row in client.dataset(run.default_dataset_id).iterate_items(): # apify-client 1.x/2.x: run["defaultDatasetId"]
print(row.get("engine"), row.get("prompt"), row.get("brand_mentioned"))

JavaScript / TypeScript (npm i apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('wrenfield-data/ai-search-visibility-tracker').call(
{"brands": ["HubSpot"], "domains": ["hubspot.com"], "competitors": ["Salesforce | salesforce.com", "Pipedrive | pipedrive.com"], "prompts": ["What is the best CRM for a small business?"], "engines": ["chatgpt", "perplexity"]},
{ maxTotalChargeUsd: 5 },
);
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Long or scheduled jobs (async + webhook): start with POST https://api.apify.com/v2/acts/wrenfield-data~ai-search-visibility-tracker/runs?maxTotalChargeUsd=5 (returns at once with data.id and data.defaultDatasetId), wait with GET /v2/actor-runs/{id}?waitForFinish=60, then read GET /v2/datasets/{defaultDatasetId}/items?clean=true&format=json (or csv, xlsx). To be called back instead of polling, add &webhooks= with the base64 of [{"eventTypes":["ACTOR.RUN.SUCCEEDED"],"requestUrl":"https://your-app.example/hook"}]. For recurring pulls, save the input as a task and put it on an Apify schedule.

n8n: Apify node → Resource Actors → Run an Actor and Get Dataset → Actor wrenfield-data/ai-search-visibility-tracker → custom input {"brands": ["HubSpot"], "domains": ["hubspot.com"], "prompts": ["What is the best CRM for a small business?"], "engines": ["chatgpt", "perplexity"]}. Make and Zapier have the same "run Actor" + "get dataset items" steps. Or call the run-sync-get-dataset-items URL above from any HTTP node.

MCP (Claude, Cursor, VS Code, any MCP client): https://mcp.apify.com?tools=wrenfield-data/ai-search-visibility-tracker. The tool exposes the input schema and output fields to the agent.

Output fields

Main fields (the Output tab and the dataset schema list every field with its type):

FieldTypeMeaning
typestringcheck = one prompt answered by one AI engine; summary = share-of-voice row for one engine (or "all") and one brand
promptstring or nullThe question sent to the AI engine
enginestring or nullchatgpt, perplexity, gemini, google_ai_overview, google_ai_mode, claude (summary rows: also "all")
statusstring or nullok = answer received; no_answer = the engine showed no AI answer (e.g. no AI Overview for this query); error = check failed (not charged); incomplete = the engine returned a cut-off answer twice (not charged)
brand_mentionedboolean or nullYour brand is mentioned in the answer
brand_positioninteger or nullRank of your brand among all tracked brands by first mention (1 = mentioned first)
brand_sentimentstring or nullpositive, neutral, negative or mixed (wording around your brand)
your_domain_citedboolean or nullOne of your domains is cited as a source (null if you gave no domain)
competitors_mentionedarray or nullTracked competitors mentioned in the answer
cited_domainsarray or nullUnique domains cited as sources
citationsarray or nullCheck rows: cited sources. Summary rows: checks citing the brand domain
answer_textstring or nullFull answer (markdown)
share_of_voicenumber or nullSummary: brand mentions / all tracked-brand mentions (0-1)
mention_ratenumber or nullSummary: mentions / checks (0-1)
change_statusstring or nullMonitoring: first_check, gained_mention, lost_mention, gained_citation, lost_citation, position_changed, competitors_changed, unchanged
checked_atstring or nullWhen the row was produced (UTC)

Field names and types stay stable within version 1.x: we add fields but don't rename or remove them. Anything that changes a field will be announced in this README first. Optional fields can be null or absent depending on the options you set, so read them with a default.

Cost per 1,000 results

VolumeCost (free plan prices)How it adds up
1,000 prompt checks (prompt × engine)$40.00$0.04 per check (current price)
1,000 prompt checks from Nov 2, 2026$60.00$0.06 per check
25 prompts × 6 engines, weekly$6.00 / week150 checks; $9.00 from Nov 2

Failed checks are free. maxChecks (default 200) is a second spend limit next to the run cost cap.

Pipeline tips

  • Two row types: type: "check" (one prompt on one engine) and type: "summary" (share of voice per engine and brand). Filter on type before loading.
  • Set "monitoringMode": true with a fixed trackingId and schedule the run: each run then adds change_status, mention_change and *_change fields against the previous one.
  • A run with many prompts takes several minutes (each engine answers live), so use the async pattern or a webhook rather than run-sync.

Use it from an AI agent (MCP)

Add one line to Claude, Cursor, VS Code or any MCP client and the agent gets this Actor as a tool (it appears as wrenfield-data--ai-search-visibility-tracker):

https://mcp.apify.com?tools=wrenfield-data/ai-search-visibility-tracker

Try asking: Check whether ChatGPT and Perplexity name HubSpot for "What is the best CRM for a small business?" and tell me which competitors they name instead.

Fields your agent reads: brand_mentioned, brand_position, brand_sentiment, your_domain_cited, competitors_mentioned, first_mentioned_brand, cited_domains.

Real output (one row from a run on Oct 22, 2026, trimmed):

{"prompt": "What is the best CRM for a small business?", "engine": "perplexity", "brand": "HubSpot", "brand_mentioned": true, "brand_position": 1, "your_domain_cited": true, "competitors_mentioned": ["Salesforce", "Pipedrive"]}

Booleans and positions come back as fields, so the agent does not have to parse prose. One run is a sample, not a ranking. Set a maximum cost per run (maxTotalChargeUsd over the API, call options over MCP) so an agent loop cannot overspend.

FAQ

Where does the data come from? From a licensed AI-answer data provider. ChatGPT (with web search), Gemini, Google AI Overviews and Google AI Mode are collected from the live consumer products for your country. Perplexity uses the Sonar model with web search. Claude uses Claude Haiku without web search, so Claude rows have no citations.

Why does the same prompt give different answers on different runs? AI engines aren't deterministic. Answers change with time, location and model updates. That's why share of voice over many prompts and repeated runs is more reliable than a single answer. Use monitoring mode to track the trend.

What does no_answer mean? The engine didn't show an AI answer, most often because Google showed no AI Overview for that query. That's still a valid visibility result (your brand isn't visible), so it counts as a completed check.

How is the rank calculated? By order of first mention among your brand and the competitors you entered: 1 = named first. ChatGPT rows also include position_among_all_brands when ChatGPT marks brand entities.

How is sentiment detected? With a fast word-list model applied to the sentences that mention the brand. It flags clear praise ("best", "easy", "recommended") or criticism ("expensive", "limited", "clunky"). Read brand_snippet for context.

My brand name is a common word. Will it over-count? Turn on Case-sensitive brand matching and add precise variants (e.g. Monday.com | monday CRM).

Can I use it through the API, on a schedule or from an AI agent? Yes. Use the Apify API, schedules, webhooks, or integrations like Make, Zapier, n8n and Google Sheets. The small JSON rows also work well for MCP and AI agents.

Is this affiliated with OpenAI, Google, Perplexity or Anthropic? No. ChatGPT, Gemini, Google, Perplexity and Claude are trademarks of their owners.

Found a problem or need another engine? Open an issue on the Issues tab with your run ID.

Feedback and support

Missing a field, hit an error, or need another country or option? Open an issue on the Issues tab and include the run ID. We read every issue and reply there.

Acceptable use

  • This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by Google, DataForSEO, OpenAI, Perplexity or Anthropic.
  • Don't use the data to build a competing search engine, or otherwise to compete with or harm the search engines and AI assistants the data comes from.
  • The Actor may not be used from, or for people or organizations in, Russia, Belarus, Cuba, Iran, Syria, Myanmar, North Korea, Crimea or the Russian-occupied territories of Ukraine.
  • You are responsible for using the results lawfully, including privacy laws such as GDPR for any personal data they contain.