Does Perplexity Mention Your Brand? How to Check AI Answers Systematically
More buyers now ask an AI assistant "what's the best X for Y?" instead of scrolling search results. If you do SEO or marketing, the obvious question is: does the answer mention us, where, and does it cite our site? Checking by hand once tells you little, because answers change. Checking the same questions on a schedule tells you a lot more.
This guide uses the AI Search Visibility Checker on Apify with the Perplexity Sonar API. It also supports ChatGPT (OpenAI API with web search) and Claude (Anthropic API with web search), but here we focus on Perplexity.
What you get per prompt
For every prompt × engine, one record with:
-
brandMentioned,brandPosition(rank of your first mention among the brands named),brandMentionCount -
brandCited: whether one of your domains is among the sources the answer cites -
competitorsMentionedandbrandsMentionedInOrder -
citations(sources the answer actually cites) and a simplesentiment, plusshareOfVoice - the
answerText(truncated tomaxAnswerCharsin the output)
The last record is a type: "summary" with a visibility score per engine, mention rate, citation rate, average position, top competitors, top cited domains and prompts where only competitors appear.
Step 1: Get a Perplexity API key
From Perplexity's official quickstart:
- Sign in to the Perplexity API Console and open the API Keys page.
- Generate a new key. Keys belong to a project; see Perplexity's docs on projects.
- Add billing. Perplexity's API is pay-as-you-go, no subscription required; check their pricing page for current rates.
Treat the key like a password: don't print it, paste it into logs or commit it.
Step 2: Apify token
Create an account at apify.com and copy your token from Settings → API & Integrations.
export APIFY_TOKEN=your_apify_token
export PERPLEXITY_API_KEY=your_perplexity_key
Step 3: Run it (JavaScript)
npm install apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('batuweb/ai-search-visibility-checker').call({
prompts: ['best project management tool for small agencies', 'asana alternatives'],
brandName: 'YourBrand',
brandAliases: ['YourBrand App'],
brandDomains: ['yourbrand.com'],
competitors: ['Asana', 'Trello', 'Monday.com'],
engines: ['perplexity'],
perplexityApiKey: process.env.PERPLEXITY_API_KEY,
countryCode: 'us',
languageCode: 'en',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const r of items.filter((i) => i.type === 'result')) {
console.log(r.prompt, '| mentioned:', r.brandMentioned, '| position:', r.brandPosition, '| cited:', r.brandCited);
}
const summary = items.find((i) => i.type === 'summary');
console.log(JSON.stringify(summary, null, 2));
Python
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("batuweb/ai-search-visibility-checker").call(run_input={
"prompts": ["best project management tool for small agencies"],
"brandName": "YourBrand",
"brandDomains": ["yourbrand.com"],
"competitors": ["Asana", "Trello"],
"engines": ["perplexity"],
"perplexityApiKey": os.environ["PERPLEXITY_API_KEY"],
})
for r in client.dataset(run["defaultDatasetId"]).iterate_items():
if r.get("type") == "result":
print(r["prompt"], r["brandMentioned"], r.get("brandPosition"), r["brandCited"])
curl
curl -X POST \
"https://api.apify.com/v2/acts/batuweb~ai-search-visibility-checker/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"prompts\":[\"best project management tool for small agencies\"],\"brandName\":\"YourBrand\",\"brandDomains\":[\"yourbrand.com\"],\"competitors\":[\"Asana\",\"Trello\"],\"engines\":[\"perplexity\"],\"perplexityApiKey\":\"$PERPLEXITY_API_KEY\"}"
(Passing a secret on the command line can leave it in shell history; the client libraries above are the safer route.)
No key? The run returns a single free info record explaining how to start, and nothing is called or charged. Leave all brand fields empty to run a built-in demo (Semrush vs Ahrefs, Moz, Screaming Frog), which still needs an engine key.
What it costs
There are two separate bills:
- Actor fee (Apify): pay per event, $0.008 per analysed AI answer on the Free plan, cheaper on paid Apify plans, plus a tiny start fee. Errors, empty or incomplete answers and the summary are free.
- Perplexity API (Perplexity bills you directly): at their current pay-as-you-go rates. Search-backed requests can be billed on top of tokens, so check their pricing page.
So 10 prompts checked on Perplexity = 10 Actor events plus whatever Perplexity charges for 10 Sonar requests.
Tips
- Use real buyer questions ("best X for Y", "X alternatives", "X vs Y"), not your brand name.
- Add aliases (product names, old names) so every mention counts, and add your domains explicitly; they are not derived automatically.
- Schedule a weekly run (Apify Schedules) and watch the trend instead of reacting to one answer.
Honest limits
- Answers vary. The same prompt can give different answers on different runs. One run is a sample, not a verdict.
- API ≠ app. This measures Perplexity's Sonar API answers. They are similar to, but not the same as, what a signed-in user sees in the Perplexity app (personalisation, model versions, UI features).
- Sentiment is a simple lexicon around your mention, not a full NLP model.
- The visibility score is a heuristic for tracking, not a ranking factor, and no tool can promise that an AI assistant will mention you.
- Your use of the answers is subject to Perplexity's API terms.
Related
- AI Search Visibility Checker on the Apify Store
- SEO Audit Toolkit: technical SEO crawler with monthly change monitoring.
Disclosure: I built the AI Search Visibility Checker Actor.
Top comments (0)