How it will work: 3 steps
- Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
best web scraping platformin Prompts. Each start is one run. - Download the resultsWhen 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.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
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_searchtool, 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
countryapplies only to OpenAI and Perplexity.
Who uses it
Brand teams
See how often AI assistants name you next to your rivals.
SEO and GEO teams
Find which pages AI answers cite for your topic.
In-house analysts
Run the same questions each week and compare the mention rate.
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.
Details
Step by step on Apify
- Open the Input tab.
- Keep the prefilled prompt
best web scraping platformor write your own under Prompts. - Enter your brand under Your brand (prefilled:
Apify). - 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.
- 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 for better results
- 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 and good to know
- 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
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"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"
}Data fields (28)
| Field | Type | Meaning |
|---|---|---|
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 (13)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Prompts required | prompts | array | ["best web scraping platform"] |
| Your brand required | brand | string | "Apify" |
| Other spellings of your brand | brandAliases | array | |
| Your website domain | brandDomain | string | |
| Competitors | competitors | array | |
| AI assistants to check | providers | array | ["gemini"] |
| Gemini API key | geminiApiKey | string | |
| OpenAI API key | openaiApiKey | string | |
| Perplexity API key | perplexityApiKey | string | |
| Country | country | string | |
| OpenAI model | openaiModel | string | |
| Perplexity preset | perplexityPreset | string | |
| Gemini model | geminiModel | string |