AI Search Readiness Audit - GEO Check for ChatGPT & Perplexity avatar

AI Search Readiness Audit - GEO Check for ChatGPT & Perplexity

Pricing

from $5.60 / 1,000 page auditeds

Go to Apify Store
AI Search Readiness Audit - GEO Check for ChatGPT & Perplexity

AI Search Readiness Audit - GEO Check for ChatGPT & Perplexity

Score any web page 0–100 for Generative Engine Optimization: can ChatGPT, Claude, Perplexity and Google AI Overviews reach, read and cite it? Checks AI crawler access, llms.txt, noindex, schema, question headings, statistics, quotes and cited sources, and lists fixes in order. No LLM.

Pricing

from $5.60 / 1,000 page auditeds

Rating

0.0

(0)

Developer

Kobkoon Janngam

Kobkoon Janngam

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

AI Search Readiness Audit — GEO check for ChatGPT, Perplexity and AI Overviews

Score any web page 0–100 on whether AI search engines can reach it, read it and cite it, and get the fixes in order of impact. Generative Engine Optimization (GEO) for ChatGPT, Claude, Perplexity and Google AI Overviews, checked by fixed rules. No LLM is involved and you need no API key.

Quick start: press Start with no configuration. It audits three sample pages so one run shows the whole output. Then paste your own URLs: your blog posts, product pages, a competitor's page that keeps getting cited.

Built for SEO and content teams, agencies running GEO audits for clients, and AI agents that need a page's AI-readiness as data.

Sample output

From real runs on 31 October 2026:

urlscorebiggest fix
stripe.com88Publish a date (no dateModified or <time> found)
en.wikipedia.org/wiki/Generative_engine_optimization84Add /llms.txt
developers.google.com/search/docs/appearance/ai-features71Add Article or FAQPage JSON-LD (only breadcrumbs found)
www.theverge.com71robots.txt blocks ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot and Perplexity-User

Each row shows every check with its points (pts), its maximum (max) and the value it was judged on, so you can see exactly where each point went:

{
"url": "https://www.theverge.com/", "finalUrl": "https://www.theverge.com/",
"status": "ok", "httpStatus": 200, "score": 71, "title": "The Verge",
"checks": {
"aiCrawlerAccess": { "pts": 8, "max": 20, "value": { "blocked": ["ChatGPT-User", "Claude-SearchBot", "Claude-User", "PerplexityBot", "Perplexity-User"] }, "trainingBlocked": 6 },
"indexable": { "pts": 10, "max": 10, "value": "yes" },
"llmsTxt": { "pts": 0, "max": 5, "value": "missing" },
"structuredData": { "pts": 10, "max": 10, "value": ["NewsMediaOrganization", "ImageObject", "Person", "WebSite"] },
"statistics": { "pts": 8, "max": 8, "value": { "count": 81, "per1000Words": 29 } },
"quotations": { "pts": 5, "max": 5, "value": 10 },
"citations": { "pts": 7, "max": 7, "value": { "links": 21, "domains": 17 } },
"…": "…"
},
"fixes": [
"robots.txt blocks ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User from this page, so those answer engines cannot read or cite it. …",
"Add /llms.txt: a short Markdown index of your key pages for language models (llmstxt.org).",
"…"
],
"note": null, "checkedAt": "2026-10-31T15:30:12.000Z"
}

Rows run 1.5–2 KB and are capped well under 4 KB, small enough to hand straight to an AI agent. At most 8 fixes per page, biggest point loss first.

The checks

CheckPointsFull marks when
aiCrawlerAccess20robots.txt lets the answer crawlers read this path: OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Googlebot, Bingbot
indexable10No noindex, nosnippet or max-snippet:0 in a meta tag or X-Robots-Tag header
structuredData10JSON-LD or microdata with a content type: Article, FAQPage, Product, Organization…
statistics88+ figures (percentages, amounts, counts) per 1,000 words
citations73+ links to outside sources in the main content (navigation, footer and social links don't count)
llmsTxt5/llms.txt exists as text
questionHeadings52+ H2/H3 headings phrased as questions
quotations52+ quotations (<blockquote>, <q> or a quoted sentence)
freshness5A published or modified date in JSON-LD, meta tags or <time>
contentDepth5300+ words of main content
title, metaDescription4 + 4Present, 15–65 and 50–170 characters
canonical, singleH1, openGraph, answerFirst3 eachCanonical link; exactly one H1; og:title, og:description and og:image; first paragraph of 80 words or fewer

Training crawlers (GPTBot, ClaudeBot, Google-Extended, CCBot…) cost no points. Blocking model training is a legitimate choice and does not keep a page out of AI answers. The row still counts them in trainingBlocked.

Why these checks

The content checks come from the GEO study by Aggarwal et al., arXiv 2311.09735 (full text). It tested nine ways of rewriting a page across thousands of queries. Adding quotations, statistics and cited sources did best, raising a page's visibility in generative-engine answers by up to 40%. Keyword stuffing did no better than leaving the page alone. So this audit counts figures, quotes and outbound sources, and never counts keywords.

Access comes first because a page an engine cannot fetch cannot be cited. Each vendor documents which crawler feeds its answers: OpenAI, Anthropic and Perplexity. Google says AI Overviews draw on its normal Search index, with no extra requirements, and that nosnippet limits them (AI features and your website).

Input

FieldDefaultNotes
urls3 sample pagesFull page URLs; a bare domain audits its home page. Up to 200. A bad entry is skipped with a reason in the log and in SUMMARY; the rest still run.

FAQ

What does it fetch? The page, the site's robots.txt and its llms.txt. Nothing else. It follows at most 5 redirects and waits at most 15 seconds per request.

Does it run JavaScript? No. It reads the HTML the server sends, which is also what most AI crawlers read. Content that only appears after scripts run is invisible to them too.

Is the score what ChatGPT thinks of my page? No. Nobody outside OpenAI can know that. The score measures the things published research and the vendors' own documentation say matter, the same way every time, so you can track changes.

What if robots.txt disallows the page? If it disallows generic crawlers on that path, the page is not fetched. The row says so and you are not charged.

What am I charged for? One event per page fetched and scored. Pages that are unreachable, not HTML, or return an error are returned with the reason and not charged.

Works well with

Same publisher, same output conventions, same honest-failure rules:

Disclaimer

This Actor is unofficial and not affiliated with OpenAI, Anthropic, Perplexity, Google or any AI vendor, and the score is not theirs. It scrapes no website catalogue and calls no third-party API: it fetches only the pages you name, plus each site's robots.txt and llms.txt, identifying itself honestly in its user agent and honouring robots.txt.