# AI Search Visibility Tracker

> Check if ChatGPT, Perplexity and Gemini name your brand. Get mention, position, rival brands and cited sources per question. You bring your own API keys.

URL: https://cliqtomedia.com/actors/ai-search-visibility/

Category: Search, SEO & ads · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

Ask ChatGPT, Perplexity and Gemini the questions your buyers ask. See if your brand is in the answer. Each row shows the place, the rival brands and the cited sites. You use your own API keys.

## How to use it: 3 steps

1. **Follow us on Apify.** The tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `best web scraping platform` in Prompts. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Check whether ChatGPT, Perplexity and Gemini name your brand when buyers ask them about your market. You write the questions, your brand and competitors; the Actor asks each AI through its official API with web search on and returns one row per question and AI: mentioned or not, in which place, which competitors came up and which websites the answer cited.

- sends the prompt once through the provider's official API with web search enabled — OpenAI Responses API with the `web_search` tool, Perplexity Agent API, Gemini API with Google Search grounding;
- reads the answer and finds your brand, its other spellings and your competitors as whole words, case-insensitive;
- ranks the names in the order the answer first mentions them, so you see your position next to the competitors;
- lists the cited sources and tells you whether one of them is on your own domain;
- saves the answer text, an excerpt around the first mention, tokens and the time it was received.

### Good for

- Track how often AI assistants recommend you versus competitors for the questions your buyers ask.
- Find which pages AI answers cite for your category, so you know where to earn coverage.
- Run the same prompt set every week with an Apify schedule and compare the mention rate over time.

### Not a good fit

- API answers are not the same as the ChatGPT, Perplexity or Gemini apps. The apps add personal memory, account settings, location and their own system prompts, and they change often. The API with web search is the closest repeatable signal, not a copy of what one person sees on screen.
- AI answers vary from run to run. One answer is a sample; use several prompts and repeat runs to see a trend.
- The Actor never scrapes the consumer apps and never logs in anywhere. It only uses the public APIs with your key.
- Position is the order of first mention among the names you track, not a place in a numbered list the AI might show.
- Gemini's API has no location setting, so `country` applies only to OpenAI and Perplexity.

## Price

Prices will be shown after release.

## Questions

### Do I need my own API key?

Yes. You need a key from OpenAI, Perplexity or Gemini. Without a key you get one free row that says what is missing.

### Who pays the AI providers?

You do. Your key is billed by the provider. Gemini needs billing on for web search.

### Does it read the ChatGPT app?

No. It uses the official APIs with web search on. This is close to the app, not a copy of it.

### Are the answers always the same?

No. AI answers change from run to run. Use several questions and repeat runs to see a trend.

### Why do results change between runs?

AI answers are not deterministic and web results change. Ask several related prompts and repeat runs on a schedule; compare `mentionRate` in the run summary rather than single answers.

### Do you store my key or the answers anywhere else?

The key is a secret input, encrypted by Apify and never written to the dataset, run summary or log. Answers go only to your run's dataset.

### Can I check Claude, Google AI Overviews or Copilot?

Not in this version. It covers OpenAI, Perplexity and Gemini APIs.

## Data fields

- `prompt` (string): Prompt from the input; null on a row about a whole AI (missing or rejected key).
- `provider` (string): openai, perplexity or gemini; null when no key was given at all.
- `model` (string): Model the provider says answered; null when there was no answer.
- `requestedModel` (string): Model or preset asked for.
- `status` (string): ok = answer checked (the only charged status); no_answer = the AI returned empty text; api_key_required = no key for this AI; error = see errorCode.
- `brand` (string): Brand name from the input.
- `mentioned` (boolean): true/false whether the answer names the brand; null when there is no answer.
- `position` (integer): Place of the brand among the tracked names, in the order the answer first mentions them (1 = first). null when not mentioned.
- `mentionCount` (integer): How many times the brand is named.
- `competitorsMentioned` (array): Tracked competitors found in the answer: name, position, mentionCount.
- `ranking` (array): Brand and competitors in the order the answer first names them.
- `brandCited` (boolean): Whether a cited source is on your brandDomain; null when no domain was given or no answer.
- `brandCitedPosition` (integer): Place of the first source from your domain among cited sources.
- `citedSources` (array): Web sources the answer cites: position, url, title, domain. Gemini gives Google redirect links; the domain is the real site.
- `citedSourcesCount` (integer): Number of cited sources.
- `searchQueries` (array): Web searches the AI ran, when the API reports them.
- `answerExcerpt` (string): About 400 characters around the first brand mention, or the start of the answer.
- `answer` (string): Full answer text, up to 20000 characters.
- `answerTruncated` (boolean): true when the answer was cut to 20000 characters.
- `country` (string): Country from the input.
- `countryApplied` (boolean): Whether the country was sent to this AI (false for Gemini).
- `inputTokens` (integer): Input tokens billed to your key.
- `outputTokens` (integer): Output tokens billed to your key, including thinking tokens.
- `providerCostUsd` (number): Cost in USD that the provider reported for this answer (Perplexity only); null when not reported.
- `latencyMs` (integer): Time the answer took.
- `errorCode` (string): API_KEY_REQUIRED, API_KEY_INVALID, API_QUOTA_EXHAUSTED, API_RATE_LIMITED, MODEL_UNAVAILABLE, PROVIDER_BAD_REQUEST, PROVIDER_UPSTREAM_ERROR, DEADLINE_REACHED and others.
- `errorMessage` (string): Short explanation and what to do. Never contains your key.
- `fetchedAt` (string): When the answer was received, ISO 8601.

## Input settings

- `prompts` (array, required): Questions a buyer might ask an AI assistant, for example "best CRM for small business". Up to 100, each up to 2000 characters. Each prompt is asked once per AI.
- `brand` (string, required): Brand name to look for in the answers. Matching is whole-word and case-insensitive.
- `brandAliases` (array): Optional: other names that count as your brand, for example a product name or "apify.com". Up to 10.
- `brandDomain` (string): Optional, for example apify.com. When set, each row tells whether the AI cited a page from this domain (subdomains count) and in which place.
- `competitors` (array): Optional competitor names to track in the same answers, up to 25. Add other spellings after a | sign: Bright Data|BrightData.
- `providers` (array): Which AIs to ask. Empty = every AI you gave a key for. An AI picked here without a key gets one free api_key_required row telling where to get a key.
- `geminiApiKey` (string): Your Google AI Studio key: aistudio.google.com/apikey. Google bills web-search answers to this key. Search (grounding) needs billing enabled on the key's Google Cloud project; the free tier does not include it. Stored encrypted, used only for this run, never written to logs or results.
- `openaiApiKey` (string): Your OpenAI key: platform.openai.com/api-keys. Needs API credits; ChatGPT Plus does not include API use. Stored encrypted, used only for this run, never written to logs or results.
- `perplexityApiKey` (string): Your Perplexity key: perplexity.ai/account/api/keys. Needs API credits. Stored encrypted, used only for this run, never written to logs or results.
- `country` (string): Optional two-letter country code, for example US or DE. Sent to OpenAI and Perplexity as the searcher's approximate location. Gemini's API has no location setting, so its rows show countryApplied = false.
- `openaiModel` (string): Model id with web search support. Empty = gpt-5.4-mini (fast and cheap). Bigger models cost more per answer on your key.
- `perplexityPreset` (string): Perplexity Agent API preset. Empty = fast. Other presets may cost more per answer on your key.
- `geminiModel` (string): Gemini model id. Empty = gemini-3.8-flash.

## Step by step on Apify

1. Open the Input tab.
2. Keep the prefilled prompt `best web scraping platform` or write your own under Prompts.
3. Enter your brand under Your brand (prefilled: `Apify`).
4. Paste at least one key — OpenAI, Perplexity, or Gemini from a Google AI Studio project with billing on — and pick that AI under AI assistants to check.
5. Click Start, then open the Visibility view of the dataset.

## Use cases

| Task | Input | What you get | Key fields | Next step |
|---|---|---|---|---|
| Am I recommended for my category? | `prompts`, `brand`, `brandAliases` | One row per prompt and AI | `mentioned`, `position`, `answerExcerpt` | Run summary `mentionRate` per AI |
| Who wins the answer instead of me? | `competitors` | Names in order of first mention | `ranking`, `competitorsMentioned` | Compare competitor mention rates in the run summary |
| Which pages do AI answers trust? | `brandDomain` | Cited links per answer | `citedSources`, `brandCited` | Export the dataset and group by domain |
| Is visibility changing over time? | Same input on a schedule | A new dataset each run | `fetchedAt`, `mentioned`, `position` | Schedule plus webhook or Google Sheets export |

## Tips

- Use many questions. One AI answer is only a sample.
- Add your domain to see if the AI cites your own site.
- Add rival names. Use a pipe for other spellings, like Bright Data|BrightData.

## Limits



- Up to 100 prompts per run, 3 AIs, 25 competitors, 10 brand aliases.
- In our tests an answer took about 3 seconds on Perplexity, about 4 seconds on OpenAI and 15–27 seconds on Gemini, and 10 prompts on OpenAI and Perplexity finished in 44 seconds. Prompts for one AI run one after another and the AIs run side by side, so the run time grows with the number of prompts. A slower model or a rate-limited key takes longer. The default timeout is 1 hour.
- One answer per prompt and AI per run; answers are not cached between runs.
- No Claude, Google AI Overviews, Copilot or other assistants.

## Sample result

```json
{
  "prompt": "best web scraping platform",
  "provider": "perplexity",
  "model": "openai/gpt-6-luna",
  "status": "ok",
  "brand": "Apify",
  "mentioned": true,
  "position": 1,
  "mentionCount": 1,
  "competitorsMentioned": [
    { "name": "Octoparse", "position": 2, "mentionCount": 1 },
    { "name": "ScrapingBee", "position": 3, "mentionCount": 1 },
    { "name": "Bright Data", "position": 4, "mentionCount": 1 }
  ],
  "ranking": ["Apify", "Octoparse", "ScrapingBee", "Bright Data"],
  "brandCited": true,
  "brandCitedPosition": 3,
  "citedSources": [
    { "position": 1, "url": "https://webscraper.io/blog/best-web-scraping-platforms", "title": "Best web scraping platforms compared - Web Scraper", "domain": "webscraper.io" },
    { "position": 3, "url": "https://blog.apify.com/best-web-scraping-tools/", "title": "6. Octoparse", "domain": "blog.apify.com" }
  ],
  "citedSourcesCount": 6,
  "answerExcerpt": "**Apify is the best all-around choice for developers**: it combines ready-made scrapers (“Actors”) with custom code, cloud runs, scheduling, and storage…",
  "country": "US",
  "countryApplied": true,
  "inputTokens": 6325,
  "providerCostUsd": 0.00168,
  "errorCode": null,
  "fetchedAt": "2026-10-22T05:46:32.698Z"
}
```

## Similar tools

- [Google Autocomplete Scraper](https://cliqtomedia.com/actors/google-autocomplete-scraper/)
- [Website JSON-LD Structured Data Scraper](https://cliqtomedia.com/actors/website-jsonld-structured-data-scraper/)
- [XML Sitemap URLs Extractor](https://cliqtomedia.com/actors/xml-sitemap-urls-extractor/)
- [Website Metadata & Open Graph Scraper](https://cliqtomedia.com/actors/website-metadata-open-graph-scraper/)
- [Google Ads Transparency Scraper - Ad Text, No Login](https://cliqtomedia.com/actors/google-ads-transparency-scraper/)
- [Google Images Scraper - Image URLs, Sizes & Source Pages](https://cliqtomedia.com/actors/google-images-scraper/)
