Ai Citation Finder
Under maintenancePricing
from $0.25 / actor start
Ai Citation Finder
Under maintenanceFind which websites influence AI answers by extracting and ranking the citations used by ChatGPT, Gemini, Claude, and Perplexity. For every question you provide, this Actor asks each selected AI answer engine, extracts every citation and URL from the answer, normalizes domains, and counts frequency.
Pricing
from $0.25 / actor start
Rating
0.0
(0)
Developer
Muhammad Bilal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
Find which websites influence AI answers by extracting and ranking the citations used by ChatGPT, Gemini, Claude, and Perplexity.
Overview
For every question you provide, this Actor asks each selected AI answer engine, extracts every citation and URL from the answer, normalizes domains, and counts frequency. It then ranks the most influential sources overall and per category (review sites, blogs, communities, forums, social, government, documentation, news).
Architecture
Identical shared library layout as the rest of the AI Actor ecosystem:
src/├── main.ts # Actor.main() entry point├── types.ts # Input/record/summary types├── config/index.ts # Input validation → strict config├── analysis/index.ts # citation extraction + per-domain aggregation├── report/index.ts # Final ranked markdown report└── shared/ # Reusable library (adapters, engine, parser, citations, …)
Pipeline: validate → build tasks → collect answers (Playwright adapters) → extract & normalize citations → count per (question, domain) → rank by category.
Input
| Field | Type | Default | Description |
|---|---|---|---|
questions | string[] (required) | — | Questions asked on every platform |
platforms | string[] | all four | ChatGPT, Gemini, Claude, Perplexity |
topN | integer | 20 | Domains per ranked category |
headless | boolean | true | Headless browser |
screenshotOnFailure | boolean | true | Screenshots to KV store on failure |
maxRetries | integer | 2 | Retries per (platform, question) |
askTimeoutMs | integer | 90000 | Max wait per answer |
useApifyProxy | boolean | true | Route through Apify Proxy |
cookies | array | [] | Session cookies for authenticated platforms |
Input example
{ "questions": ["best CRM for startups"] }
Output
Dataset record (one per question × domain)
{ "question": "best CRM for startups", "domain": "g2.com", "count": 12, "category": "review", "platforms": ["ChatGPT", "Perplexity"], "urls": ["https://www.g2.com/..."] }
Key-Value Store artifacts
SUMMARY— ranked top-lists:topDomains,topReviewSites,topBlogs,topCommunities,topForums,topSocialMedia,topGovernmentDomains,topDocumentationSites,topNewsREPORT— final ranked markdown reportEXPORT_CSV— flat CSV of all records
Domain categorization
Domains are normalized to their registrable form (www.G2.com/x → g2.com, apple.co.uk handled)
and classified into: review, blog, community, forum, social, government,
documentation, news, ecommerce, other.
Rate limits & known limitations
- Perplexity is citation-first and most reliable; ChatGPT/Claude/Gemini often need
cookies. - Citation coverage depends on whether the engine surfaces links for a given answer.
- Selectors live in
src/shared/adapters/*and can be updated without touching the pipeline.
Deployment
npm install && npm run build && npm test && npm run lintnpx playwright install chromium # local only; Docker image already has itapify push
Docker base image: apify/actor-node-playwright-chrome:22.
Testing guide
npm test runs citation/parser (fixture-based), retry, validation, statistics, adapter (mock page),
engine integration, and analysis tests. Fixtures live in tests/fixtures/.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Few/zero citations | Engine returned no links / auth wall | Provide cookies, prefer Perplexity |
error: captcha | Bot check | Enable residential proxy, retry |
Version history
- 1.0.0 — Initial production release.