To track brand mentions in ChatGPT, send each prompt your buyers ask to Scavio's ChatGPT API. POST /api/v1/chatgpt/prompt returns the answer ChatGPT gives as Markdown, every page it cited, and the web searches it ran first. Count your brand and your competitors in answer.markdown, check sources for your domain, run every prompt at least twice, and report the share of answers that name you. Each prompt costs 2 credits, about $0.004 on the Growth plan billed yearly.
Checking by hand in the ChatGPT app gives you one answer, from one account, on one day. The steps below turn it into a number you can track. Every response and count in them was captured on October 27, 2026, from 15 CRM buying prompts run twice each, a category we chose because we do not sell into it.
Step 1: Write the prompts your buyers ask
List the questions a buyer types before they shortlist, not your brand name. For a CRM vendor that meant prompts such as:
- What is the best CRM for a small business?
- Which CRM should a 10-person B2B sales team use?
- Best CRM for a sales team that works in Gmail
- Best CRM for nonprofits
Keep the list fixed so runs stay comparable, and include the use cases where you expect to lose as well as the ones where you expect to win. Fifteen to fifty prompts is enough to start.
Step 2: Send each prompt
curl -s https://api.scavio.dev/api/v1/chatgpt/prompt \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "Which CRM should a 10-person B2B sales team use?"}'The response, as captured, trimmed to its first sources (this answer cited 19) and the opening of the answer:
{
"data": {
"platform": "chatgpt",
"prompt": "Which CRM should a 10-person B2B sales team use?",
"model": "gpt-6",
"answer": {
"markdown": "For a 10-person B2B sales team, I’d start with **HubSpot, Pipedrive, and Salesforce** as the main contenders. The right choice depends on whether you need a straightforward sales pipeline, a broader marketing-and-sales platform, or more..."
},
"sources": [
{
"url": "https://www.pipedrive.com/en/pricing?frame=0&utm_source=chatgpt.com",
"title": "CRM Pricing Plans | Affordable CRM Software Costs",
"snippet": null,
"source": "Pipedrive",
"published_at": null
},
{
"url": "https://www.hubspot.com/pricing/sales?utm_source=chatgpt.com",
"title": "Sales Software Pricing",
"snippet": null,
"source": "HubSpot",
"published_at": null
}
],
"search_queries": [
"HubSpot Sales Hub pricing official 2026",
"Pipedrive pricing official 2026",
"best CRM for small B2B sales team 10 users HubSpot Pipedrive Salesforce 2026 pricing features"
],
"shopping": []
},
"response_time": 15578,
"credits_used": 2
}Answers took 12 to 59 seconds, with a median of 20, so set your HTTP timeout to at least 90 seconds and run prompts from a queue rather than in a page request. Add "country": "gb" or another 2-letter code to localize the answer. A failed prompt returns an error and is not charged; retry it.
Step 3: Count brand mentions in the answer
Match brand names on word boundaries, case-insensitively, and keep a list of every brand you care about, competitors included:
import re, requests
BRANDS = {"HubSpot": r"\bHubSpot\b", "Pipedrive": r"\bPipedrive\b",
"Salesforce": r"\bSalesforce\b", "Zoho": r"\bZoho\b"}
def ask(prompt, key):
r = requests.post("https://api.scavio.dev/api/v1/chatgpt/prompt",
headers={"Authorization": f"Bearer {key}"},
json={"prompt": prompt}, timeout=150)
r.raise_for_status()
return r.json()["data"]
def mentions(data):
text = data["answer"]["markdown"]
found = {b: m.start() for b, rx in BRANDS.items() if (m := re.search(rx, text, re.I))}
return sorted(found, key=found.get) # brands in order of first mentionWatch for brand names that are ordinary words. "Close" (the CRM) and "monday" both need a tighter pattern, such as "Close CRM" or a heading match, or they will count every sentence that uses the word. Across our 30 ChatGPT answers this counted HubSpot in 27, Zoho in 19, Pipedrive in 18 and Salesforce in 14, with five or six tracked brands in a typical answer.
Step 4: Check whether the answer cites you
A mention and a link are separate outcomes. Reduce each source URL to its domain and look for yours:
from urllib.parse import urlparse
def cited_domains(data):
hosts = {urlparse(s["url"]).netloc.lower() for s in data["sources"]}
return {h[4:] if h.startswith("www.") else h for h in hosts}
def cites(data, domain):
return any(d == domain or d.endswith("." + domain) for d in cited_domains(data))
cites(data, "hubspot.com") # True when any hubspot.com page is a sourceChatGPT cited 14 to 29 pages per CRM answer. When it named HubSpot it cited a hubspot.com page in all 27 answers, and Pipedrive in all 18. The same domains tell you which third-party pages decide the category: TechRadar was cited in 14 of the 30 answers. Those are the pages to get onto. Inline citation URLs carry utm_source=chatgpt.com (296 of the 655 source URLs we collected), which is also how clicks from ChatGPT show up in your analytics.
Step 5: Read what ChatGPT searched
search_queries lists the web searches ChatGPT ran before writing, one to three per answer in our test. In every one of the 30 answers at least one search already contained brand names, for example "best CRM for Gmail sales teams HubSpot Pipedrive Copper Streak official Gmail integration comparison 2026". 118 of the 159 brand mentions in the answers were brands that were already in ChatGPT's own search query. If your brand is never in these queries, the fix is upstream of any single page: the review sites, comparisons and forums that put brands on ChatGPT's shortlist.
Step 6: Run every prompt more than once
The same prompt does not return the same answer. Run twice, 8 of our 15 prompts returned a different set of brands, and ChatGPT kept 71 of 88 brand mentions from the first run to the second (81%). Report a rate per prompt, such as "named in 5 of 6 runs this month", not a yes or no. Calls are never cached, so each one is a fresh answer.
Step 7: Compare Gemini and Google AI Mode
The Gemini endpoint, POST /api/v1/gemini/prompt, takes the same body and returns the same shape for 5 credits; its sources are URLs only and its search_queries is empty. Google AI Mode costs 1 credit and returns text_blocks and references:
curl -s https://api.scavio.dev/api/v2/google/ai-mode \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "Which CRM should a 10-person B2B sales team use?"}'{
"text_blocks": [
{
"type": "paragraph",
"snippet": "For a 10-person B2B sales team, HubSpot Sales Hub and Pipedrive are the top recommendations, with choices depending on your lead generation strategy and tech stack. ..."
}
],
"references": [
{
"title": "Best CRM for Small B2B Sales Pipelines (2026) - Baserow",
"link": "https://baserow.io/blog/best-crm-small-b2b-sales-pipeline",
"snippet": "",
"source": "Baserow",
"index": 0
}
]
}Flatten the text blocks into one string and run the same matcher. The two assistants agree on the leader and little else: AI Mode also named HubSpot in 27 of 30 answers but cited hubspot.com in only 4, averaged 4.2 references against ChatGPT's 21.8, and kept only 53 of 93 brand mentions between runs (57%). It cited YouTube and Reddit in 14 of its 30 answers each. Unlike the ChatGPT endpoint, AI Mode responses carry a cached flag, and the same query repeated within 24 hours can return the stored answer, so space AI Mode runs at least a day apart when you measure how answers change.
All the endpoints for AI answer tracking
| Endpoint | What it returns | Credits |
|---|---|---|
/api/v1/chatgpt/prompt | ChatGPT's answer, cited pages, search queries, product cards | 2 |
/api/v1/gemini/prompt | Gemini's answer and cited URLs, same shape | 5 |
/api/v2/google/ai-mode | Google AI Mode text blocks, references and shopping results | 1 |
/api/v2/google | The full Google results page, including the AI Overview | 1 |
For a side-by-side of the other ways to get this data, see the best ChatGPT brand mention tracking APIs.
Getting started
- Sign up at dashboard.scavio.dev/sign-up: 50 free credits, no card required, enough for 25 ChatGPT prompts.
- Copy your API key from the dashboard.
- Send a POST to
/api/v1/chatgpt/promptwith one of your buyer prompts.
Try the ChatGPT API free in the playground first, check one brand without code in the AI visibility checker, or call it from Claude and other agents through the MCP server.
Reference: ChatGPT API overview · ChatGPT docs · Gemini docs · AI Mode docs · cited sources finder
Frequently asked questions
How do I track brand mentions in ChatGPT?
Write down the prompts your buyers ask, send each one to Scavio's /api/v1/chatgpt/prompt endpoint on a schedule, and record whether your brand appears in answer.markdown and whether your domain appears in sources. Run each prompt at least twice, because answers change between runs, and report the share of answers that name you.
How to measure brand visibility in AI answers?
Use rates, not single checks: the share of answers that name your brand, the share that cite your site, and how often you are named first, each across the same prompt set and several runs. Compare the same numbers for your competitors on the same prompts, and keep the raw answers so you can see what changed.
Does ChatGPT always link to the brands it mentions?
Not reliably, and it differs by assistant. In our October 27, 2026 CRM test ChatGPT cited the brand's own site almost every time it named HubSpot, Pipedrive or Salesforce, while Google AI Mode named HubSpot in 27 answers and cited hubspot.com in only 4. Count mentions and citations separately.
Can I see what ChatGPT searched before answering?
Yes. Scavio's ChatGPT API returns search_queries, the web searches ChatGPT ran for that answer. In our CRM test every answer ran at least one search that already contained brand names, so the queries show which brands were on the shortlist before any page was read.
How much does it cost to track ChatGPT mentions with Scavio?
A ChatGPT prompt costs 2 credits, about $0.004 on the Growth plan billed yearly, and a failed prompt is free. Gemini costs 5 credits a prompt and Google AI Mode 1. New accounts get 50 free credits with no card, enough for 25 ChatGPT prompts.