AI Crawler Robots.txt Auditor avatar

AI Crawler Robots.txt Auditor

Pricing

Pay per usage

Go to Apify Store
AI Crawler Robots.txt Auditor

AI Crawler Robots.txt Auditor

Fetch a public website's robots.txt and report which AI crawlers (GPTBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot, Bytespider, and more) are blocked, allowed, or defaulted. Returns an AI-visibility readiness score with recommendations for GEO and AI-SEO strategy.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Sanskar Jaiswal

Sanskar Jaiswal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

AI Crawler Robots.txt Auditor fetches a public website's robots.txt and reports which AI crawlers are blocked, allowed, or have no explicit rule. It checks ~20 known AI crawler user-agent tokens (GPTBot, OAI-SearchBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot, Bytespider, Meta-ExternalAgent, AppleBot, and more), computes an AI-visibility readiness score, and returns recommendations for GEO and AI-SEO strategy.

Use cases

  • SEO and GEO teams deciding which AI products may use their content for training and retrieval.
  • AI-SEO consultants auditing client robots.txt files for ChatGPT, Claude, Perplexity, and Google AI Overviews visibility.
  • Site migration QA teams confirming robots.txt AI crawler policy did not regress.
  • Content licensing teams documenting which AI crawlers a publisher allows or blocks.
  • Developer-tool builders adding AI crawler policy checks to monitoring workflows.

Input

FieldTypeRequiredDescription
startUrlstringYesPublic website URL to audit. The actor fetches /robots.txt. HTTP and HTTPS are supported. Private IP ranges and URL credentials are blocked.
timeoutSecondsintegerNoTimeout for the robots.txt HTTP request. Default: 10. Minimum: 3. Maximum: 30.

Output

Each run pushes one dataset item.

FieldTypeDescription
inputUrlstringThe URL provided as input.
siteOriginstringNormalized website origin checked by the actor.
robotsUrlstringURL of robots.txt that was fetched.
robotsFoundbooleanWhether a parseable robots.txt was returned.
statusinteger or nullHTTP status of the robots.txt response.
contentTypestringResponse content type for robots.txt.
checkedAtstringISO timestamp for the audit.
scoreintegerAI-visibility readiness score from 0 to 100.
gradestringLetter grade: A, B, C, D, or F.
findingsarrayStructured checks with name, status, and points.
recommendationsarrayPlain-language fixes for missing or unclear AI crawler policy.
sitemapsarraySitemap URLs declared in robots.txt.
crawlersarrayPer-crawler results: name, operator, userAgent, purpose, matchedToken, status, disallowPaths, allowPaths.
blockedarrayNames of crawlers explicitly blocked.
allowedarrayNames of crawlers explicitly allowed.
noRulearrayNames of crawlers with no explicit rule in robots.txt.
partialarrayNames of crawlers with partial Disallow rules.
errorstring or nullFetch error message, if any.

Per-crawler status values

StatusMeaning
blockedAn explicit User-agent group for this crawler contains Disallow: / (or equivalent root block).
allowedAn explicit User-agent group for this crawler exists and does not block the root.
partialAn explicit User-agent group for this crawler contains non-root Disallow rules.
no-ruleNo explicit User-agent group for this crawler was found.

Example input

{
"startUrl": "https://example.com",
"timeoutSeconds": 10
}

Example output

{
"inputUrl": "https://example.com",
"siteOrigin": "https://example.com",
"robotsUrl": "https://example.com/robots.txt",
"robotsFound": true,
"status": 200,
"contentType": "text/plain",
"checkedAt": "2026-08-05T00:00:00.000Z",
"score": 62,
"grade": "D",
"findings": [
{ "name": "robots.txt found", "status": "pass", "points": 20 },
{ "name": "AI crawler coverage", "status": "warn", "points": 42 }
],
"recommendations": [
"GPTBot is explicitly blocked. Unblock it to allow inclusion in OpenAI AI products if your GEO/AI-SEO strategy favors visibility."
],
"sitemaps": ["https://example.com/sitemap.xml"],
"crawlers": [
{
"name": "GPTBot",
"operator": "OpenAI",
"userAgent": "GPTBot",
"purpose": "Powers ChatGPT training and retrieval.",
"matchedToken": "GPTBot",
"status": "blocked",
"disallowPaths": ["/"],
"allowPaths": []
},
{
"name": "ClaudeBot",
"operator": "Anthropic",
"userAgent": "ClaudeBot",
"purpose": "Powers Claude model training.",
"matchedToken": "ClaudeBot",
"status": "allowed",
"disallowPaths": [],
"allowPaths": ["/"]
}
],
"blocked": ["GPTBot", "Bytespider"],
"allowed": ["ClaudeBot"],
"noRule": ["PerplexityBot"],
"partial": [],
"error": null
}

Security

The actor only fetches public HTTP and HTTPS URLs. It rejects URL credentials, private IPv4 literals, private IPv6 literals, and hostnames that resolve to private IP ranges. Redirects are followed manually and revalidated before each follow-up request. Response bodies are capped before parsing.

Pricing

Suggested pay-per-event pricing:

EventPrice
Actor start$0.005
Site audited$0.01

This keeps single-domain AI crawler policy checks inexpensive while charging proportionally for successful dataset results.

FAQ

Does this actor block or unblock crawlers on my site?

No. It only reads and reports the existing robots.txt policy. It does not modify any files or submit any changes.

Which AI crawlers does it check?

It checks ~20 known AI crawler user-agent tokens including GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, anthropic-ai, Google-Extended, Googlebot-Extended, PerplexityBot, Perplexity-User, CCBot, Bytespider, Meta-ExternalAgent, AppleBot, Amazonbot, YouBot, Diffbot, Omgilibot, ImagesiftBot, and Timpibot.

Does it require login or credentials?

No. It only fetches the public robots.txt file.

Does it enforce robots.txt semantics for crawling?

No. It is an audit and reporting tool. It surfaces directives so GEO and AI-SEO teams can make explicit policy choices. It is not a robots.txt enforcement engine.

What keep metric should be used?

Keep or improve this actor if it receives organic Store impressions, runs, revenue, or inbound questions within 60 to 90 days. Archive it if there is no discovery and no usage.