Ai Visibility Checker avatar

Ai Visibility Checker

Under maintenance

Pricing

from $0.10 / actor start

Go to Apify Store
Ai Visibility Checker

Ai Visibility Checker

Under maintenance

Measure how visible a brand is inside AI-generated answers across ChatGPT, Gemini, Claude, and Perplexity. For every question you provide, this Actor asks each selected AI answer engine, waits for the response to finish streaming, and extracts a structured record

Pricing

from $0.10 / actor start

Rating

0.0

(0)

Developer

Muhammad Bilal

Muhammad Bilal

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

4 days ago

Last modified

Share

Measure how visible a brand is inside AI-generated answers across ChatGPT, Gemini, Claude, and Perplexity.

Apify SDK Playwright TypeScript

Overview

For every question you provide, this Actor asks each selected AI answer engine, waits for the response to finish streaming, and extracts a structured record: whether your brand is mentioned, its position, the sentiment, the competitors named alongside it, and the citations/URLs used. It then computes a Visibility Score and a Recommendation Score and produces per-answer dataset rows plus aggregate JSON / Markdown / CSV reports.

Key capabilities

  • Multi-engine querying via pluggable Playwright adapters (ChatGPT, Gemini, Claude, Perplexity)
  • Deterministic, fully-tested parser (brand mention, position, sentiment, competitors)
  • Citation extraction with domain normalization and categorization
  • Scores: composite Visibility Score (0-100) and Recommendation Score (0-100)
  • Proxy rotation, stealth, cookies, captcha/login-wall handling, screenshots on failure
  • Strict TypeScript, ESLint, Prettier, and a comprehensive Jest test suite

Architecture

src/
├── main.ts # Actor.main() entry point (pipeline orchestration)
├── types.ts # Actor-specific input/record/summary types
├── config/index.ts # Input validation → strict config
├── analysis/index.ts # RawAnswer → record, scores, summary
├── report/index.ts # Markdown report builder
└── shared/ # Reusable library (identical across all 3 actors)
├── types.ts # Provider-agnostic domain types
├── logging/ # Structured logger over Apify log
├── retry/ # Exponential backoff with jitter
├── validation/ # Input validators
├── prompt/ # Prompt builder (context-aware)
├── parser/ # Answer parsing (pure, fixture-tested)
├── citations/ # URL/domain extraction + categorization
├── statistics/ # Small stat helpers
├── export/ # Dataset writer, CSV, Markdown, KV reports
├── browser/ # Playwright launcher, stealth, screenshots
├── adapters/ # AI platform adapters (base + 4 providers + registry)
└── engine/ # Cross-platform answer collection (DI-friendly)

The pipeline: validate → build tasks → collect answers (Playwright adapters) → parse → analyze → persist.

Configuration / Input

FieldTypeDefaultDescription
brandstring (required)Brand to measure
questionsstring[] (required)Questions asked on every platform
industrystringCategory context (e.g. "CRM software")
countrystringMarket context (e.g. "United States")
platformsstring[]all fourChatGPT, Gemini, Claude, Perplexity
knownCompetitorsstring[][]Improves position/competitor accuracy
headlessbooleantrueHeadless browser
screenshotOnFailurebooleantrueSave screenshots to KV store on failure
maxRetriesinteger2Retries per (platform, question)
askTimeoutMsinteger90000Max wait per answer
useApifyProxybooleantrueRoute through Apify Proxy (residential)
cookiesarray[]Session cookies for authenticated platforms

Input example

{
"brand": "HubSpot",
"industry": "CRM software",
"country": "United States",
"questions": ["best CRM for startups", "best CRM for small business", "HubSpot alternatives"],
"platforms": ["ChatGPT", "Gemini", "Claude", "Perplexity"]
}

Output

Dataset record (one per question × platform)

{
"question": "best CRM for startups",
"platform": "ChatGPT",
"brand": "HubSpot",
"brandMentioned": true,
"position": 1,
"sentiment": "positive",
"competitors": ["Salesforce", "Pipedrive", "Zoho CRM"],
"citations": [{ "url": "https://www.g2.com/products/hubspot/reviews", "domain": "g2.com", "category": "review" }],
"urls": ["https://www.g2.com/products/hubspot/reviews"],
"answer": "…",
"answeredAt": "2026-01-01T00:00:00.000Z",
"error": null
}

Key-Value Store artifacts

  • SUMMARY — aggregate JSON (scores, per-platform stats, top competitors)
  • REPORT — human-readable Markdown report
  • EXPORT_CSV — flat CSV export of all records

Scores

  • Visibility Score = 100 × (0.5·mentionRate + 0.3·positionQuality + 0.2·sentiment)
  • Recommendation Score = share of answers where the brand is in the top 3 and not negative

Rate limits & known limitations

  • AI answer engines frequently require authentication (ChatGPT, Claude, Gemini). Supply session cookies for reliable results. Perplexity generally works anonymously.
  • UI selectors change often; selectors live in src/shared/adapters/* and are easily updated.
  • Captchas/login walls are detected; the Actor waits, then records a graceful error for that answer.
  • Sentiment/position are heuristic (lexicon + structure), not a hosted LLM, keeping runs cheap & deterministic.

Deployment

npm install # install dependencies
npm run build # compile TypeScript → dist/
npm test # run the Jest suite
npm run lint # ESLint
npx playwright install chromium # local browser (Docker image already has it)
apify push # deploy to Apify
apify run --purge # run locally

The Docker image is apify/actor-node-playwright-chrome:22 (Chromium preinstalled); npm run build runs during the image build.

Testing guide

npm test runs unit, parser (fixture-based), retry, validation, statistics, adapter (mock page), engine integration, and full end-to-end (browserless) tests. Fixtures live in tests/fixtures/.

Troubleshooting

SymptomCauseFix
All answers error: login wallNot authenticatedProvide cookies
error: captcha …Bot check triggeredEnable Apify residential proxy; retry
Empty answersSelectors changedUpdate src/shared/adapters/<platform>.ts

Version history

  • 1.0.0 — Initial production release: four adapters, parser, scoring, reports, full test suite.