ChatGPT Brand Visibility & Citation Tracker avatar

ChatGPT Brand Visibility & Citation Tracker

Pricing

from $0.16 / brand visibility report

Go to Apify Store
ChatGPT Brand Visibility & Citation Tracker

ChatGPT Brand Visibility & Citation Tracker

Measure brand visibility and official-domain citations in current ChatGPT-style answers using a fixed OpenRouter model with web search grounding.

Pricing

from $0.16 / brand visibility report

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

ChatGPT Brand Visibility Tracker

Track whether a brand appears in current ChatGPT-style answers and whether its official website is cited. The Actor uses the OpenRouter Chat Completions API with the openrouter:web_search server tool, so the model can ground answers in current web evidence.

This is a directional GEO/AEO benchmark, not a guarantee of what every ChatGPT user will see. Results vary by model, prompt, search index, time, location, and provider settings.

Hosted free-plan limit: Apify free-plan users can make at most 1 OpenRouter API request and receive at most 1 visibility result per run. A failed free-plan request is not retried. Paid and local/unknown runs can use up to 5 queries.

Setup

Add OPENROUTER_API_KEY as a private Actor environment secret. Do not put the key in Actor input. OPENROUTER_HTTP_REFERER is optional and can be used to set your OpenRouter attribution URL.

Inputs

  • brandName — required tracked company, product, or brand.
  • brandDomain — optional official domain used for citation detection.
  • industry and location — optional context for three generated discovery prompts.
  • queries — optional custom prompt list, up to 5. If supplied, it replaces generated prompts.
  • competitors — optional names to detect in the same answers.
  • model — optional OpenRouter model ID; defaults to openai/gpt-4o-mini.
  • useWebSearch — defaults to true; set false only when testing model-only behavior.

The Actor makes at most five sequential OpenRouter requests per paid run. Free-plan runs are capped at one query/result and one OpenRouter request. Provider spend is bounded by the selected model's input/output and web-search pricing for the applicable request count.

Output

The dataset contains one report record with:

  • visibilityScore from 0–100: 70% successful-answer mention rate plus 30% official-domain citation rate when a domain is provided.
  • queryResults with the exact prompt, answer, mention count, context snippets, citations, competitor mentions, model, and error state.
  • mentionRate, citationRate, queriesCompleted, competitorMentions, recommendations, and warnings.

Failed provider requests are not treated as missing brand mentions. If every request fails, the Actor fails honestly with a diagnostic instead of emitting a misleading empty report. A missing API key or invalid runtime input exits with a warning so configuration mistakes do not inflate the Actor's failure rate.

Example input

{
"brandName": "Notion",
"brandDomain": "notion.so",
"industry": "project management software",
"location": "United States",
"competitors": ["Asana", "Trello", "ClickUp"]
}

For repeatable monitoring, keep the same model, location, and custom prompt list across scheduled runs and compare the underlying queryResults as well as the score.

Responsible use

Use the Actor for legitimate brand research, content measurement, and competitive analysis. Do not infer market share or factual truth from a single generated answer. Validate material decisions against primary sources and respect OpenRouter, model-provider, and source-site terms.

Local development

npm install
npm test

The local tests cover mention parsing and scoring. A live API test requires an authorized OPENROUTER_API_KEY and incurs provider costs.

What data does ChatGPT Brand Visibility Tracker return?

FieldTypeDescription
brandstringTracked brand name.
brandDomainstring or nullNormalized official domain used for citation detection.
industrystring or nullIndustry or category used in the benchmark.
locationstring or nullMarket or location used in the benchmark.
modelstringModel ID used for the requests.
webSearchEnabledbooleanWhether OpenRouter web search was requested.
visibilityScoreintegerDirectional score: 70% answer mention rate plus 30% official-domain citation rate among successful checks.
overallVisiblebooleanTrue when the brand was mentioned in at least one successful answer.
mentionRatenumberFraction of successful answers mentioning the brand.
citationRatenumberFraction of successful answers citing the official domain, when a domain was provided.
queriesRequestedintegerQueries requested
queriesCompletedintegerQueries completed
competitorMentionsarrayCompetitors detected across successful answers.
queryResultsarrayPer-query results
recommendationsarrayRecommendations
checkedAtstringChecked at
warningsarrayWarnings

Use cases

  • Schedule repeatable collection and export results to downstream workflows.
  • Run a one-off research job and export the structured result as JSON, CSV, Excel, XML, or RSS from Apify.
  • Schedule the same input to monitor changes over time and send completed datasets to a webhook or integration.
  • Feed schema-shaped records into a database, spreadsheet, BI tool, or AI workflow with the source URL retained for verification.

Run ChatGPT Brand Visibility Tracker with the Apify API

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/chatgpt-brand-visibility-tracker').call({
"brandName": "Notion",
"brandDomain": "notion.so",
"industry": "project management software",
"location": "United States",
"queries": [
"What are the leading project management tools for a distributed team?",
"Which project management software is best for teams that need docs and task tracking?"
],
"competitors": [
"Asana",
"Trello",
"ClickUp"
],
"useWebSearch": true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

You can also run the Actor from Apify Console, schedules, webhooks, the REST API, Make, Zapier, n8n, or the hosted Apify MCP server.

Reliability and limitations

Public websites and upstream APIs change over time. Start with a small result limit, inspect the dataset and run log, and keep a known-good input for scheduled canary runs. A valid query can return no records when the source has no matches. If a run is blocked, rate-limited, or missing an expected field, reduce concurrency or scope where the input supports it and include the run ID in a support report.

The Actor does not guarantee that every optional field is present on every record. Treat absent values as unavailable from that source response, not as proof that the real-world value does not exist.

Pricing

This Actor uses pay-per-event pricing. These are the current Apify Store event prices:

EventPrice (USD)When it is charged
brand-visibility-report$0.2Brand visibility report — One complete report after at least one OpenRouter visibility prompt succeeds and the report is stored in the dataset. — Charged once per run.

Apify platform usage for this Actor run is included alongside the event prices above; no separate per-run platform-usage fee is passed to users.

This covers Apify platform usage for this Actor run. Other Apify products or usage outside this Actor run may still follow your account plan.