Website SEO Audit & Site Audit Crawler: Technical SEO + AEO/GEO
Pricing
$10.00 / 1,000 page auditeds
Website SEO Audit & Site Audit Crawler: Technical SEO + AEO/GEO
GEO audit + website SEO audit + site audit crawler with AI search readiness (AEO/GEO) score + technical SEO. One URL in: each page and site scored 0-100 for meta, broken links, soft 404s, schema, llms.txt, GPTBot/ClaudeBot, answerability. Fix plan + client report. 10 pages free, then $0.01/page
Pricing
$10.00 / 1,000 page auditeds
Rating
0.0
(0)
Developer
Umair Saleem Mohammad Saleem
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Security
Limited permissionsShare
Answer first: this actor is an SEO audit and site audit crawler with an AEO / GEO (AI search) score built in. Give it one URL. It crawls the site and scores every page and the whole site from 0 to 100 for technical SEO (meta tags: title, meta description, canonical, robots/noindex, viewport, lang, Open Graph and Twitter tags; broken internal links, soft 404s, schema / JSON-LD) and AI search readiness (llms.txt, GPTBot / ClaudeBot / PerplexityBot access, answer-first passages, freshness). You get each issue with a fix, a P1/P2/P3 fix plan and a client-ready Markdown report. The first 10 pages of every run are free, then $0.01 per page ($10 per 1,000). You only pay for real, indexable HTML pages: broken URLs, soft 404s, bot-protection pages, noindex and robots-blocked URLs are listed but never billed, and your maximum cost per run is respected to the cent.
| Quick facts | |
|---|---|
| Best for | SEO audit, site audit, technical SEO audit, meta tag check, internal broken link check, schema / JSON-LD validation, AEO audit, GEO audit, llms.txt check, AI crawler robots.txt check, client SEO reports |
| Languages | Any language and character set: pages are decoded with their real charset (UTF-8, Shift_JIS, EUC-JP, GBK, Windows-1251...), and Chinese/Japanese/Korean/Thai word counts are measured properly. Tested 20 Oct 2026 on itmedia.co.jp (Shift_JIS) and zenn.dev (Japanese) |
| Input | One start URL (plus optional page cap and URL filters) |
| Output | One row per page (score, 6 category scores, issues + fixes) and one site summary (site score, fix plan, broken links, AI crawler table) + Markdown report |
| Price | First 10 pages free every run, then $0.01 per audited page ($10 per 1,000). No start fee. Broken, soft-404, bot-challenge, noindex and robots-blocked URLs are never billed |
| Needs | No API keys, no proxies, no login |
| Not included | JavaScript rendering, Core Web Vitals, backlinks, rankings, external link checks, image alt audit |
Try it now: the input is prefilled with https://plausible.io and 10 pages, so the first run is free. Swap in your own URL.
What you get
Two record types in the dataset (plus two files in the key-value store):
| Output | What it is |
|---|---|
page records | One per audited page: overall score, 6 category scores, critical/warning counts, top 5 fixes, the full issue list (id, severity, category, message, fix), the raw measurements behind each score and charged (free or billed) |
site-summary record | Site score, category averages, P1/P2/P3 fix plan, top issues ranked by severity and pages hit, score distribution, 10 lowest-scoring pages, duplicate titles and descriptions, broken internal URLs, soft 404s (softNotFoundPages), URLs that refused the crawler (blockedPages: HTTP 401/403/429 or a bot challenge), AI crawler access table |
SUMMARY (key-value store) | Same site summary as JSON, handy for APIs and agents |
REPORT (key-value store) | A Markdown client report: score table, findings, fix plan, lowest pages, method. Paste it into Google Docs or Notion |
The 6 categories (and their weight in the score)
| Category | Weight | What is checked |
|---|---|---|
| AI crawler access + llms.txt | 20% | Is the page allowed for GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot and Google-Extended in robots.txt? Is there a /llms.txt? Is a sitemap declared in robots.txt? |
| Answerability (AEO) | 25% | One H1, a 50-160 character meta description, question-style H2/H3, answer-first passages (40-170 words right under a heading, the length AI engines lift), lists/tables, enough server-rendered text, author or organisation signals, FAQ blocks |
| Structured data + entity | 20% | JSON-LD present and parseable, required properties for 19 common types (Article, Product, Offer, FAQPage, HowTo, Organization, LocalBusiness, BreadcrumbList, Review, Event...), placeholder text, Organization/Person entity, BreadcrumbList on inner pages, microdata detection |
| Freshness | 15% | Newest credible date from <time>, meta tags, visible "Updated" text and JSON-LD dateModified, checked against sitemap lastmod. FRESH (≤30 days), WARN (31-90), STALE (90+), MISSING_DATE, SITEMAP_MISMATCH. The site score also flags "deploy-stamped" dates shared by most pages |
| Share preview | 10% | og:title, og:description, absolute og:image, twitter:card, og:url, og:type, truncation risk, title drift |
| Technical basics | 10% | Absolute canonical, <html lang>, viewport, indexable (meta robots and X-Robots-Tag), title present and length, HTTPS, broken internal URLs |
Bands: 80-100 STRONG · 65-79 GOOD · 50-64 FAIR · 35-49 POOR · 0-34 CRITICAL. A page loses points only for things actually found on it, so the score moves when you fix them.
Input
{"startUrl": "https://plausible.io","maxPages": 10,"maxConcurrency": 5,"respectRobotsTxt": true,"useSitemap": true,"skipNoindexPages": true,"includeSubdomains": false,"excludeUrlPatterns": ["/tag/", "/author/"]}
| Field | Default | What it does |
|---|---|---|
startUrl (required) | Homepage or any page. Redirects are followed (www to non-www etc.) | |
maxPages | 20 | Pages audited and your cost cap. 10 = free preview, 50 = standard audit, 500+ = full site |
maxConcurrency | 5 | Parallel requests. Drops to 1 automatically if robots.txt sets a Crawl-delay (the delay is honoured, up to 60 s per page) |
respectRobotsTxt | true | Skips disallowed URLs and honours Crawl-delay |
useSitemap | true | Pages found through links go first, then sitemap URLs fill the rest. Sitemap lastmod feeds the freshness check. Sitemap indexes and gzipped sitemaps (.xml.gz) are read; on very large sites reading stops after 30 files / ~40 s so the crawl starts quickly (crawl.sitemapTruncated) |
skipNoindexPages | true | Login, cart and thank-you pages marked noindex are listed but not audited and not billed |
includeSubdomains | false | Also crawl blog.example.com etc. |
excludeUrlPatterns | [] | Substrings, or a regex wrapped in slashes |
Sample output (real run on plausible.io, 18 Oct 2026, 50 pages)
This is an unedited run of the current build: {"startUrl": "https://plausible.io", "maxPages": 50}. It took under 4 seconds: 10 free pages + 40 billed, which is $0.40 at today's price. 290 URLs were discovered, 4 noindex pages (login, register) were skipped for free and 0 URLs were broken.
Download the full sample (all 50 page rows + the site summary, public, no login): JSON · CSV · Excel. It is the same dataset this run produced, so you can check every score against its issues before you spend anything.
Site score: 78/100 GOOD · AI crawler access 80 · Answerability 77 · Schema 70 · Freshness 70 · Share preview 83 · Technical 100 · 30 pages STRONG, 20 GOOD.
Page scores view (the default dataset table, 6 of 50 rows):
| Page | Score | AI crawler access | Answerability | Schema | Freshness | Share preview | Technical | First fix |
|---|---|---|---|---|---|---|---|---|
| plausible.io/ | 74 GOOD | 80 | 80 | 85 | 20 | 80 | 100 | Add Organization JSON-LD with name, url, logo and sameAs links to official profiles |
| plausible.io/docs | 82 STRONG | 80 | 65 | 85 | 100 | 80 | 100 | Open each H2 with a self-contained 40-170 word answer before the details |
| plausible.io/docs/website-settings | 73 GOOD | 80 | 65 | 85 | 40 | 80 | 100 | Open each H2 with a self-contained 40-170 word answer before the details |
| plausible.io/docs/change-plan | 73 GOOD | 80 | 60 | 85 | 40 | 90 | 100 | Open each H2 with a self-contained 40-170 word answer before the details |
| plausible.io/docs/consolidated-views | 78 GOOD | 80 | 80 | 85 | 40 | 90 | 100 | Add a named author (articles) or Organization schema (site-wide) |
| plausible.io/docs/google-analytics-import | 90 STRONG | 80 | 90 | 85 | 100 | 90 | 100 | Add a named author (articles) or Organization schema (site-wide) |
What the site summary told plausible.io to fix first:
- P1 · Publish /llms.txt (the site returns 404 for it; GPTBot, ClaudeBot, PerplexityBot and the other major AI crawlers are all allowed)
- P1 · Add Organization JSON-LD to the homepage (no Organization entity, no sameAs)
- P2 · Write answer-first passages on 14 docs pages
- P2 · Add a date to the homepage (no visible, meta, JSON-LD or sitemap date)
- P3 · Review 18 docs pages last dated more than 90 days ago
Site summary record (shortened):
{"type": "site-summary","site": "plausible.io","siteScore": 78,"band": "GOOD","pagesAudited": 50,"freePages": 10,"billedPages": 40,"categoryScores": { "crawlerAccess": 80, "answerability": 77, "structuredData": 70, "freshness": 70, "sharePreview": 83, "technical": 100 },"categoryNotes": {"crawlerAccess": ["all 6 major AI crawlers allowed at /", "no /llms.txt", "Sitemap: declared in robots.txt"],"structuredData": ["JSON-LD on 50/50 pages", "types: Answer, BreadcrumbList, FAQPage, ListItem, Question, WebSite", "0 invalid block(s) of 125"],"freshness": ["MISSING_DATE=1 · FRESH=20 · WARN=11 · STALE=18"]},"fixPlan": [{ "priority": "P1", "category": "crawlerAccess", "fix": "Publish /llms.txt", "how": "A plain-text index of your top 10-20 pages with one-line summaries, served at /llms.txt" },{ "priority": "P1", "category": "structuredData", "fix": "Add Organization JSON-LD to the homepage", "how": "name, url, logo, sameAs (official profiles), contactPoint; only facts you can verify" },{ "priority": "P2", "category": "answerability", "fix": "Write answer-first passages on 14 page(s)", "how": "Open each H2 with a 40-170 word self-contained answer" },{ "priority": "P3", "category": "freshness", "fix": "Review 18 stale page(s)", "how": "Refresh evergreen guides that still get traffic" }],"topIssues": [{ "id": "FEW_ANSWER_PASSAGES", "severity": "warning", "issue": "Fewer than 2 answer-first passages (40-170 words) under headings", "count": 14 },{ "id": "NO_ORGANIZATION_ENTITY", "severity": "warning", "issue": "Homepage has no Organization/Person entity", "count": 1 }],"scoreDistribution": { "strong": 30, "good": 20, "fair": 0, "poor": 0, "critical": 0 },"brokenPages": [],"aiCrawlerAccess": { "robotsTxt": "found", "llmsTxt": false, "sitemapUrls": 165,"bots": { "GPTBot": "allowed", "OAI-SearchBot": "allowed", "ChatGPT-User": "allowed", "ClaudeBot": "allowed", "PerplexityBot": "allowed", "Google-Extended": "allowed" } },"crawl": { "respectRobotsTxt": true, "skippedByRobots": 0, "noindexSkippedFree": 4, "urlsDiscovered": 290, "avgResponseMs": 15 }}
One page record, the homepage (shortened):
{"type": "page","url": "https://plausible.io/","httpStatus": 200,"title": "Plausible Analytics | Simple, privacy-friendly Google Analytics alternative","score": 74,"band": "GOOD","crawlerAccess": 80, "answerability": 80, "structuredData": 85, "freshness": 20, "sharePreview": 80, "technical": 100,"criticalCount": 0,"warningCount": 2,"topFixes": ["Add Organization JSON-LD with name, url, logo and sameAs links to official profiles.","Show a visible \"Updated\" date and add JSON-LD dateModified + sitemap lastmod on the same day."],"issues": [{ "severity": "warning", "category": "structuredData", "id": "NO_ORGANIZATION_ENTITY", "message": "Homepage has no Organization/Person entity", "fix": "Add Organization JSON-LD with name, url, logo and sameAs links to official profiles." },{ "severity": "warning", "category": "freshness", "id": "MISSING_DATE", "message": "No visible Updated date, <time>, meta or JSON-LD date", "fix": "Show a visible \"Updated\" date and add JSON-LD dateModified + sitemap lastmod on the same day." },{ "severity": "info", "category": "technical", "id": "TITLE_LENGTH", "message": "Title is 75 characters (aim for 15-60)", "fix": "Keep titles 15-60 characters so they do not truncate." },{ "severity": "info", "category": "sharePreview", "id": "SHARE_WARNING", "message": "og:title differs from <title> (share drift)", "fix": "Trim titles to 60 and descriptions to 160 characters; add og:url/og:type." }],"details": { "h1Count": 1, "questionHeadings": 2, "answerPassages": 4, "wordCount": 1386, "listsAndTables": 11, "faqBlock": false,"schemaTypes": ["WebSite"], "sameAs": false, "freshness": { "status": "MISSING_DATE", "bestDate": null },"sharePreview": { "status": "WARN", "ogTitle": "Plausible Analytics", "twitterCard": "summary_large_image" }, "indexable": true, "aiBotsBlocked": [] },"crawlDepth": 0,"foundVia": "start URL","responseTimeMs": 81}
The REPORT file from the same run starts like this:
# SEO + AI Search Readiness Report: plausible.ioDate: 2026-10-18 · Pages audited: 50 · Start URL: https://plausible.io/## Site score: 78/100 (GOOD)| Category | Score | Weight ||---|---|---|| AI crawler access + llms.txt | 80 | 20% || Answerability (AEO) | 77 | 25% |
What a run costs
You pay only for pages actually audited. The first 10 pages of every run are free. There is no start fee.
Never billed: broken URLs (4xx/5xx), soft 404s ("Page not found" served with HTTP 200), bot-protection and challenge pages (Cloudflare, Akamai, AWS WAF, Incapsula, DataDome), URLs that answer 401/403/429, noindex pages, robots-blocked URLs, redirects to a page already audited, JSON/text endpoints that are mislabelled as HTML, and files (images, PDFs, feeds). If the start URL itself refuses the crawler, the run ends with a clear note and costs $0. The same goes for an empty or mistyped URL or a domain that does not resolve: the run still succeeds with one explanation row (status: EMPTY_INPUT, INVALID_URL or UNREACHABLE) and costs $0, so scheduled runs and agent pipelines don't break.
Spend cap: set a maximum cost per run and the crawl stops exactly there, even with 20 parallel requests (budget is reserved before each billed page).
Run timeout: the crawl stops shortly before the run's timeout, so the site summary, fix plan and REPORT are always written and you keep everything you paid for (crawl.stoppedByTimeout: true plus a note). Earlier builds could hit the timeout on slow or Crawl-delay sites and end with page rows but no summary.
| Pages audited | You pay |
|---|---|
| 10 | $0 (free in every run) |
| 25 | $0.15 |
| 50 | $0.40 |
| 100 | $0.90 |
| 500 | $4.90 |
| 1,000 | $9.90 |
Set Maximum cost per run in the run options and the crawl stops cleanly when it is reached. The actor runs on 512 MB with plain HTTP (no headless browser), so runs are fast: our 100-page test runs finished in under 15 seconds of compute.
How it compares (live Apify Store prices, verified 30 Oct 2026)
List prices on the Apify Free plan, read from the Apify Store API on 30 October 2026 (user counts from the same API). Some actors charge less on higher Apify plans.
| Actor | Price per page | Free pages | Cost for 100 pages | AI search (AEO/GEO) checks | Main strength |
|---|---|---|---|---|---|
| cygnix_labs/site-seo-aeo-audit (this) | $0.01 | 10 every run | $0.90 | Yes: llms.txt, 6 AI crawlers per URL, answer passages, freshness | SEO + AEO in one weighted 0-100 score, site fix plan, Markdown client report |
| smart-digital/complete-seo-audit-tool | $0.04 | No | $4.00 | Mostly no | Most used (787 users, 102 in the last 30 days), browser crawl, Core Web Vitals, accessibility |
| lofomachines/geo-technical-audit | $0.035 per result + $0.02 start | No | ~$3.52 | Yes | GEO / AI search optimisation checks |
| acebuilds/seo-audit-crawler | $0.03 | No | $3.00 | No | Real-user Core Web Vitals (INP), JS rendering |
| logiover/website-seo-audit-crawler | $0.01 per result (+ tiny start fee) | No | ~$1.00 | No | On-page analyzer, CSV export |
| dltik/geo-site-audit | $0.01 (+ tiny start fee) | No | ~$1.00 | Yes | GEO / AI readiness only, no full SEO crawl |
| santhej/website-seo-audit | $0.005 per audit + $0.004 per crawled page + $0.001 start | No | ~$0.90 | No | On-page checker with speed metrics |
| lindenwerk/seo-audit-crawler | $0.008 + $0.01 per site summary | No | ~$0.81 | Yes: AI bots, llms.txt | Bulk site lists, broken + external links |
| tidytools/seo-audit-crawler | $0.005 | No (broken pages free) | $0.50 | No | Browser fallback for blocked sites |
| fayoussef/seo-geo-aeo-audit | $0.0045 per result | No | ~$0.45 | Yes | Separate SEO / GEO / AEO scores, HTML report |
| scrapemint/seo-site-audit-scraper | $0.003 per page row | No | $0.30 | No | Redirect chains, image alt coverage |
| saliga/seo-site-audit | $0.003 (+ tiny start fee) | No | ~$0.30 | No | Cheapest per page, plain on-page checks |
Honest take. We are not the cheapest per page: saliga, scrapemint, fayoussef, tidytools and lindenwerk cost less on large crawls. Of the pay-per-page audits above, this is the only one with free pages: audits of up to 10 pages cost $0 every run. Pick this one when you want classic SEO and AI search readiness weighted into one score, a site-level P1/P2/P3 fix plan and a report you can hand to a client, with small audits (up to 10 pages) free every time. If you need Core Web Vitals, JavaScript rendering or accessibility checks, use smart-digital or acebuilds instead; this actor reads server HTML only.
For AI agents / MCP
When an agent should call this actor: the user asks for an SEO audit, site audit, technical SEO check, AEO audit, GEO audit, "is my site ready for ChatGPT / AI search", an llms.txt check, or a list of broken internal links for one website.
Connect the Apify MCP server with only this actor enabled (works in Claude, ChatGPT, Cursor, VS Code, Codex and any MCP client):
https://mcp.apify.com?tools=cygnix_labs/site-seo-aeo-audit
Or search for it with the default server: search-actors keywords such as SEO audit, site audit, AEO audit, GEO audit, llms.txt.
Example call-actor input:
{"startUrl": "https://example.com","maxPages": 30,"respectRobotsTxt": true,"useSitemap": true}
What to read from the result: the dataset row with "type": "site-summary" holds siteScore, band, categoryScores, fixPlan (priority, fix, how), topIssues, brokenPages and aiCrawlerAccess. Page rows ("type": "page") hold url, score, topFixes and issues. The key-value store has SUMMARY (JSON) and REPORT (Markdown) you can return to the user as is.
Cost control for agents: Keep maxPages at 10 for a free first pass; 30-50 pages covers most small sites for $0.40 or less. Pass maxTotalChargeUsd in callOptions to hard-cap spend. This actor is pay-per-event, so it also works with Apify agentic payments (no Apify account needed for the agent).
Example prompt: "Run an SEO and AI search audit on example.com, 30 pages, and give me the top 5 fixes with the pages they affect."
FAQ
Does it render JavaScript? No. It reads the HTML the server sends, which is exactly what GPTBot, ClaudeBot, PerplexityBot and most AI crawlers read. If a page scores low on "server-rendered text", that is a real finding: AI engines probably cannot see that content either.
Will a high score get me cited by ChatGPT or rank on Google? Nobody can promise that, and we don't. The score measures readiness: whether AI engines and search engines are allowed in, can extract clean answers and can trust what they find. It does not measure rankings, traffic or citations.
Does it respect robots.txt? Yes, by default. Disallowed URLs are skipped (and counted in crawl.skippedByRobots), and a Crawl-delay drops the crawl to one request at a time and is waited between pages (capped at 60 s). Example: news.ycombinator.com asks for 30 s, so 20 pages take about 10 minutes; give such runs a longer timeout. Our user-agent is CygnixSiteAudit. If robots.txt disallows the start URL itself, the run ends with a note and costs $0.
How do I keep cost under control? maxPages is a hard cap, and you can set a maximum cost per run. A 10-page run is always free, so try it on your own site first.
Why is a page missing from the results? It was noindex (see crawl.noindexPages), blocked by robots.txt, not HTML, broken (see brokenPages), a soft 404 (see softNotFoundPages), refused the crawler (see blockedPages), a redirect to a page already audited, or beyond maxPages. Links are followed breadth-first from the start URL, then sitemap URLs fill the remaining budget.
Can I audit several sites? One site per run keeps the summary clean. Use the API or a Task per site, or schedule monthly runs and compare scores.
Sites behind login or heavy anti-bot? Out of scope. No proxies are used. Pages that answer 401/403/429 or show a bot challenge are listed in blockedPages (not counted as broken, never billed), and the fix plan warns you: if our crawler is refused, AI crawlers may be refused too.
What is a soft 404 and why does it matter? A "Page not found" page that returns HTTP 200 instead of 404/410. Search engines may index it and AI engines may quote it. The audit lists each one in softNotFoundPages with the page that links to it, puts "Return a real 404/410" in the P1 fix plan, and does not bill it.
Is this an SEO audit or an AEO / GEO audit? Both in one crawl. Three of the six categories are classic SEO (technical basics, structured data, share preview); three are AI search readiness (AI crawler access + llms.txt, answerability, freshness). Each page gets one combined 0-100 score and all six sub-scores, so you can read it either way.
Does it find broken links? It finds broken internal URLs (4xx/5xx and failed fetches) discovered during the crawl and lists them in brokenPages with the status code and the page that linked to them (linkedFrom). External links are not checked.
Which meta tags does it check? On every page: <title> (present, 15-60 characters), meta description (present, 50-160 characters), canonical (present, absolute, self-referencing or pointing elsewhere), meta robots and X-Robots-Tag (noindex), viewport, <html lang>, og:title, og:description, og:image (absolute URL), og:url, og:type and twitter:card. The site summary also lists duplicate titles and duplicate meta descriptions across pages.
Does it work on Japanese, Chinese, Arabic or Cyrillic sites? Yes. Each page is decoded with its declared charset (HTTP header, BOM or <meta charset>), so titles and JSON-LD come out readable, and word counts for Chinese, Japanese, Korean and Thai text are estimated per character instead of per space (otherwise long pages look "thin"). Question headings ending in ? or ؟ count as questions.
Does it check llms.txt? Yes. It requests /llms.txt once per site, follows redirects (including bare domain ↔ www), and accepts any plain-text or Markdown file. An HTML soft-404, a JSON error, a binary file or a redirect to another path does not count. The fix plan tells you to publish one if it is missing.
What happens if I mistype the URL or the site is down? The run still finishes as SUCCEEDED and costs $0. You get one row with status EMPTY_INPUT, INVALID_URL or UNREACHABLE and a plain-English note (also in SUMMARY, REPORT and the run's status message). Earlier builds ended FAILED, which broke schedules and agent workflows.
Integrations
Run it through the Apify API, schedule it monthly, or send results to Google Sheets, Make, Zapier, n8n, Slack or a webhook.
Changelog
- 0.1.14 (2026-10-30): An empty start URL, a mistyped one (
exa mple.com,ftp://…, no dot in the host) or a domain that does not resolve used to end the run as FAILED. It now ends SUCCEEDED at $0 with one explanation row (status:EMPTY_INPUT/INVALID_URL/UNREACHABLE), plusSUMMARYandREPORT. Comparison table re-verified 30 Oct 2026. Price unchanged. - 0.1.13 (2026-10-29): Better llms.txt detection: redirects and bare ↔ www hosts are followed,
text/markdownfiles count, and HTML/JSON/binary responses or redirects to another path no longer count as an llms.txt. - 0.1.12 (2026-10-26): Rebuilt on the patched Node 22 base image (security update). No behaviour change.
- 0.1.11 (2026-10-20, afternoon): Reliability and accuracy fixes, all reproduced on real sites. (1) Pages in Shift_JIS, EUC-JP, GBK, Windows-1251 and other non-UTF-8 charsets were decoded as UTF-8: garbled titles in the dataset and report, wrong title lengths and false "Invalid JSON-LD" errors (itmedia.co.jp). Now decoded with the page's charset. (2) JSON-LD references such as
"parentOrganization": {"@type": "Organization", "@id": "#org"}were flagged "Organization missing required: name" on every page (joesstonecrab.com); references are no longer validated as blocks. (3) Japanese/Chinese/Korean/Thai pages were counted as a few "words", so long pages were flagged thin with no answer passages (zenn.dev/terms: 191 "words"). (4) Huge sitemap indexes could hold the run for minutes before the crawl started, and gzipped sitemaps were read as empty; sitemap reading is now bounded and.xml.gzis supported. (5) A run that reached its timeout ended with no site summary or report; the crawl now stops before the timeout and writes both. (6) Crawl-delay is now honoured up to 60 s (was silently capped at 10 s). (7) JSON endpoints served as text/html are skipped free instead of being scored. (8) Restaurant, Store, FoodEstablishment and other Organization subtypes count as an Organization entity. (9) An invalid regex inexcludeUrlPatternsno longer crashes the run. Price unchanged. - 0.1.8-0.1.10 (2026-10-20): Billing fixes: (1) a redirect to an already-audited URL (e.g.
/Pricing→/pricing, http → https) was audited and billed twice; now deduplicated. (2) With parallel requests the maximum cost per run could be overshot by one page and the summary over-counted billed pages; budget is now reserved before each billed page andbilledPagescounts real charges. (3) Soft 404s and HTTP 200 bot-challenge pages were scored and billed; now listed free insoftNotFoundPages/blockedPages. Also: 401/403/429 responses are reported as "refused the crawler" instead of "broken", a clear note when the start URL is blocked, achargedflag on every page row;billedPagesnow reads the platform's own charge counter. Verified: a $0.03 cap with 10 parallel requests stops at exactly 10 free + 3 billed pages. Price unchanged ($0.01/page, first 10 free). - 0.1.7 (2026-10-19): Price lowered to $0.01 per page ($10 per 1,000), first 10 pages still free. Public sample dataset links (JSON, CSV, Excel) for the 50-page plausible.io run. Rival prices re-verified 19 Oct 2026.
- 0.1.6 (2026-10-18): README and Store text rewritten answer-first for search and AI agents: SEO audit / site audit / AEO / GEO terms, quick facts, comparison re-verified against 8 named actors on 18 Oct 2026, "For AI agents / MCP" section with example input, more FAQ. Price unchanged ($0.015/page, first 10 free).
- 0.1.5 (2026-10-18): Real 50-page sample run on plausible.io, price set to $0.015/page.
More SEO and AEO tools by Cygnix Labs
- AEO & GEO Audit + llms.txt Checker (URL list)
- Internal Link Audit & Orphan Page Finder
- Content Decay Audit (Search Console)
- Keyword Cannibalization Checker (Search Console)
- Keyword Clustering + Content Briefs
- Search Intent Classifier
- Tech Stack Detector & Pixel Checker
- Free local SEO MCP server: cygnix-seo-mcp (
npx -y cygnix-seo-mcp)
Questions or a feature request? Open an issue on this actor's Issues tab. We answer within 24 hours.