ChatGPT Brand Visibility & Citation Tracker
Pricing
from $0.16 / brand visibility report
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
Maintained by CommunityActor 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.industryandlocation— 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 toopenai/gpt-4o-mini.useWebSearch— defaults totrue; 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:
visibilityScorefrom 0–100: 70% successful-answer mention rate plus 30% official-domain citation rate when a domain is provided.queryResultswith the exact prompt, answer, mention count, context snippets, citations, competitor mentions, model, and error state.mentionRate,citationRate,queriesCompleted,competitorMentions,recommendations, andwarnings.
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 installnpm 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?
| Field | Type | Description |
|---|---|---|
brand | string | Tracked brand name. |
brandDomain | string or null | Normalized official domain used for citation detection. |
industry | string or null | Industry or category used in the benchmark. |
location | string or null | Market or location used in the benchmark. |
model | string | Model ID used for the requests. |
webSearchEnabled | boolean | Whether OpenRouter web search was requested. |
visibilityScore | integer | Directional score: 70% answer mention rate plus 30% official-domain citation rate among successful checks. |
overallVisible | boolean | True when the brand was mentioned in at least one successful answer. |
mentionRate | number | Fraction of successful answers mentioning the brand. |
citationRate | number | Fraction of successful answers citing the official domain, when a domain was provided. |
queriesRequested | integer | Queries requested |
queriesCompleted | integer | Queries completed |
competitorMentions | array | Competitors detected across successful answers. |
queryResults | array | Per-query results |
recommendations | array | Recommendations |
checkedAt | string | Checked at |
warnings | array | Warnings |
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:
| Event | Price (USD) | When it is charged |
|---|---|---|
brand-visibility-report | $0.2 | Brand 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.
