GEO / AEO Website Audit — AI Search Readiness avatar

GEO / AEO Website Audit — AI Search Readiness

Pricing

$1.00 / 1,000 site auditeds

Go to Apify Store
GEO / AEO Website Audit — AI Search Readiness

GEO / AEO Website Audit — AI Search Readiness

Audit public websites for GEO and AEO readiness: AI crawler access, robots.txt, llms.txt, sitemaps, Schema.org, social metadata, scores, and prioritized fixes.

Pricing

$1.00 / 1,000 site auditeds

Rating

0.0

(0)

Developer

Kunteper Koyu

Kunteper Koyu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

14 hours ago

Last modified

Share

Audit public pages for the technical signals used by AI search and answer engines. Get a practical 0–100 score, crawler policy checks, structured-data findings, and prioritized fixes for generative engine optimization (GEO), answer engine optimization (AEO), and technical SEO.

What you get

  • HTTP status, redirects, title, meta description, canonical URL, Open Graph, and Twitter metadata
  • Schema.org / JSON-LD detection with discovered @type values
  • robots.txt policy checks for GPTBot, ChatGPT-User, PerplexityBot, ClaudeBot, and Google-Extended
  • sitemap and /llms.txt discovery
  • a score, letter grade, and actionable findings for every URL
  • one clean dataset row per audited page, ready for export or API use

Common use cases

  • audit a site before a GEO/AEO consulting engagement
  • find pages that AI crawlers cannot access
  • prioritize missing schema, metadata, sitemap, and llms.txt work
  • monitor client or portfolio sites on a schedule
  • enrich SEO dashboards, reports, and content inventories

Quick start

  1. Click Try for free or Run.
  2. Add one or more public page URLs.
  3. Keep the default checks enabled and start the run.
  4. Open Dataset to view, filter, or export the results.
{
"urls": ["https://example.com", "https://apify.com"],
"concurrency": 10,
"timeoutSeconds": 20,
"includeSitemapCheck": true,
"includeLlmsTxtCheck": true
}

Example result

{
"inputUrl": "https://example.com",
"finalUrl": "https://example.com/",
"statusCode": 200,
"ok": true,
"score": 82,
"grade": "B",
"title": "Example Domain",
"canonicalUrl": "https://example.com/",
"hasSchemaOrg": true,
"schemaTypes": ["Organization"],
"hasSitemap": true,
"hasLlmsTxt": false,
"aiCrawlerPolicy": {
"GPTBot": "allowed",
"ChatGPT-User": "unknown",
"PerplexityBot": "unknown",
"ClaudeBot": "unknown",
"Google-Extended": "unknown"
},
"findings": [{
"code": "LLMS_TXT_NOT_FOUND",
"severity": "info",
"message": "llms.txt was not found at the site root."
}],
"checkedAt": "2026-07-09T03:00:00.000Z"
}

Run by API

Set APIFY_TOKEN in your environment. Replace it with a secret-manager reference in production; never commit it.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/rtworule~ai-search-readiness-auditor/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls":["https://example.com"],"includeSitemapCheck":true,"includeLlmsTxtCheck":true}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('rtworule/ai-search-readiness-auditor').call({
urls: ['https://example.com'],
includeSitemapCheck: true,
includeLlmsTxtCheck: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("rtworule/ai-search-readiness-auditor").call(run_input={
"urls": ["https://example.com"],
"includeSitemapCheck": True,
"includeLlmsTxtCheck": True,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Pricing

This Actor uses pay per event. A site-audited event costs $0.001 per stored result: 100 audited pages cost $0.10 and 1,000 cost $1.00 in event charges. Apify applies a $0.01 minimum run charge. Failed inputs that cannot produce a stored diagnostic row are not charged as a result event. The Actor respects the run's maximum total charge.

Integrations and automation

  • schedule weekly audits in Apify and send dataset results to a webhook
  • connect Make, Zapier, or n8n through the Apify integration or API
  • export CSV/XLSX for client reports, Looker Studio, Sheets, or a data warehouse
  • trigger a Slack or email alert when score, grade, or crawler policy changes
  • use deterministic URL fields to compare current results with an earlier dataset

FAQ and troubleshooting

Does this guarantee AI citations or rankings? No. The score measures technical readiness signals; rankings and citations depend on content quality, authority, relevance, and engine behavior.

Why is metadata missing even though I see it in a browser? This is a fast HTTP/static-HTML audit. Metadata rendered only by JavaScript is not evaluated.

Why was a URL rejected? Only public HTTP/HTTPS destinations are accepted. URLs with credentials and local, private, reserved, or metadata-service destinations are blocked for safety.

Why is a crawler policy unknown? The site's robots.txt may not define a rule for that crawler, or the file may not be available.

A run timed out. What should I change? Reduce concurrency for a slow host or increase timeoutSeconds up to 60.

Responsible use, limitations, and support

The Actor reads user-provided public pages and same-origin root files (robots.txt, sitemap.xml, and llms.txt). It does not log in, bypass access controls, or collect private data. The HTML sample is capped at 256 KiB. Sitemap discovery does not crawl every sitemap URL. Users are responsible for the URLs they submit and their downstream use.

If a valid public page produces an unexpected result, open an issue from the Actor page with the run ID, affected URL, and expected behavior. Do not include credentials or sensitive data.

More tools from this developer