AI Crawler Access & AEO Audit avatar

AI Crawler Access & AEO Audit

Pricing

$15.00 / 1,000 url auditeds

Go to Apify Store
AI Crawler Access & AEO Audit

AI Crawler Access & AEO Audit

Fetches each URL as 14 AI and search crawlers next to a real browser, names the firewall that blocks them, checks robots.txt, JSON-LD, answer-first content, freshness, hreflang and llms.txt, and returns ready-to-paste fixes. Reports in 30 languages. By AISeeWhy.

Pricing

$15.00 / 1,000 url auditeds

Rating

0.0

(0)

Developer

AISeeWhy

AISeeWhy

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

9 minutes ago

Last modified

Features

Limited permissions

Share

Can AI search and AI assistants read your pages, and if they can't, what exactly do you change?

This Actor fetches each URL as 14 real AI and search crawlers plus curl, and once as a normal browser from the same IP. It also checks robots.txt rules for 16 crawler tokens, including Google-Extended and Applebot-Extended. It compares the responses and tells you which crawler is blocked, which firewall or CDN did it, and what to paste to fix it. It also checks what helps a page get quoted in AI answers: robots.txt rules per crawler, structured data, answer-first content, freshness dates, sitemaps, hreflang and llms.txt.

You get findings with evidence and ready-to-paste fixes: a robots.txt diff, a Cloudflare rule, JSON-LD blocks, a draft llms.txt. There is no vague 0–100 score.

What it checks

AreaWhat you learn
Crawler accessFor each of GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot, Perplexity-User, Googlebot, Bingbot, Applebot, CCBot, Bytespider, Meta-ExternalAgent and curl, it shows whether the crawler gets the same page as a browser, or a 403, a challenge page, a stub page or a redirect. The firewall is identified: Cloudflare, Akamai, Vercel, Sucuri, Imperva or AWS WAF.
robots.txtRules per crawler under RFC 9309, including Google-Extended and Applebot-Extended. It flags conflicts between robots.txt and what the server actually does, and gives a diff that fixes them. It also notes whether Content-Signal is present.
ContentWhether there is a 40–60 word answer under the H1, whether headings are phrased as questions, whether the page links to outside sources, whether the content only appears after JavaScript runs, and whether the email address is hidden by obfuscation.
Structured dataArticle author and dates, SoftwareApplication offers, an identifiable publisher, sameAs, FAQPage. It also catches broken JSON-LD.
Freshness & discoveryWhether dateModified matches the sitemap lastmod, whether the page is in the sitemap, whether hreflang links are reciprocal and canonical-consistent, and whether llms.txt exists (a draft is generated if not).

Training vs. search crawlers

Blocking a training crawler (GPTBot, ClaudeBot, CCBot, Bytespider, Meta-ExternalAgent, Google-Extended, Applebot-Extended) is a policy choice. It is reported as P3 with a note, not as an error. Blocking a search or user-fetch crawler (OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User and others) means AI answers can't cite you, so it is P1.

What the access test can and cannot prove

The requests come from Apify's servers, not from each vendor's verified IP ranges. A result shows how your firewall treats that user agent from an unverified IP. Firewalls that verify crawlers by IP may treat the real crawler differently. Every block finding says this. If even the browser request is blocked, you get one "inconclusive" finding instead of 15 false alarms.

Input

FieldDescription
urlsPage URLs to audit. A missing https:// is added.
sitemapUrlOptional. Audits the pages in this sitemap or sitemap index (.xml.gz works).
maxUrlsThe most pages per run. Default 100, maximum 5000.
languageThe report language, one of 30 (en, de, es, fr, ja, zh-Hans, ru, …).
botsOptional subset of the crawlers.
includeMarkdownAdds a readable Markdown report to each item.

If you give no URL and no sitemap, the Actor runs a free demo audit of https://example.com/, so you can see the output format.

{ "urls": ["https://example.com/pricing"], "sitemapUrl": "https://example.com/sitemap.xml", "maxUrls": 50, "language": "en" }

Output

Each audited URL produces one dataset item:

{
"url": "https://example.com/guide/",
"final_url": "https://example.com/guide/",
"counts": { "P1": 1, "P2": 1, "P3": 2 },
"findings": [
{
"id": "access.blocked", "priority": "P1", "bot": "OAI-SearchBot", "bot_class": "search",
"title": "OAI-SearchBot is blocked",
"detail": "A request with the OAI-SearchBot user agent got status 403 or a challenge page, while a browser got the page. …",
"evidence": { "status": 403, "control_status": 200, "waf": "cloudflare" },
"fixes": [ { "kind": "cloudflare", "title": "Let OAI-SearchBot through in Cloudflare", "body": "Cloudflare dashboard → Security → WAF → …" } ]
}
],
"passed": ["robots.ok", "schema.ok"],
"billable": true
}

The key-value store gets a SUMMARY table with one row per URL.

Priorities: P1 is critical (AI answers can't read or cite the page), P2 is important, and P3 is nice to have or a policy choice.

Pricing

You pay per audited URL. You are not charged for URLs that could not be audited: the page did not respond, returned an error status, or blocked even a normal browser. Those items have "billable": false. If you set a spending limit on the run, the Actor stops cleanly when it is reached.

Also available

  • An MCP server, so AI agents can call the same audit directly (coming soon).
  • A free one-URL check at aiseewhy.com.

Made by AISeeWhy. Questions or false positives: open an issue on the Actor page.