WCAG Accessibility Audit Crawler
Pricing
from $20.00 / 1,000 audited pages
WCAG Accessibility Audit Crawler
Crawls a list of URLs (or a start URL up to a depth/page limit) and runs an axe-core WCAG audit on each page, returning only rule violations: no page text, no form data, no cookies.
Pricing
from $20.00 / 1,000 audited pages
Rating
0.0
(0)
Developer
Pavel Staurouski
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Scans a list of URLs (or crawls from one start URL) and runs a full axe-core WCAG 2.1 AA audit on each page.
What you get
One record per audited page, containing only the accessibility rule violations found: rule ID, impact level (critical/serious/moderate/minor), a human-readable description, a link to the official rule documentation, how many elements are affected, and CSS selectors pointing to them.
What it does not do
No screenshots, no page text, no form data, no cookies. Output is limited to the rule violations themselves, so it's safe to point at pages that contain sensitive or personal content — this Actor never reads or stores it.
Why you might need this
The European Accessibility Act's compliance deadline (28 June 2025) has already passed. EU member states can now fine non-compliant private-sector sites (e-commerce, banking, transport) and exclude them from public contracts that require a WCAG 2.1 AA conformance statement. A one-off manual audit goes stale the moment a developer ships the next redesign; agencies and in-house teams responsible for ongoing compliance need a recurring, automatable check they can run on every deploy or on a schedule, not a point-in-time report.
Input
A list of URLs, or a single start URL with a crawl depth and page limit.
{"startUrls": [{ "url": "https://example.com/" }],"maxPages": 20}
Sample output
One real record (this Actor's own axe-core scan, run against its test fixture,
test/fixtures/broken.html, through its own buildPageRecord() field mapping; a live run
reports the real page URL you gave it, and whatever violations and selectors axe-core finds
on that page's own markup):
{"url": "https://example.com/contact","auditedAt": "2026-10-13T20:33:05.273Z","violationCount": 2,"violations": [{"id": "image-alt","impact": "critical","description": "Images must have alternative text","helpUrl": "https://dequeuniversity.com/rules/axe/4.13/image-alt?application=playwright","nodeCount": 1,"selectors": ["img"]},{"id": "label","impact": "critical","description": "Form elements must have labels","helpUrl": "https://dequeuniversity.com/rules/axe/4.13/label?application=playwright","nodeCount": 1,"selectors": ["input"]}]}
A page that fails to load (navigation timeout, DNS failure, and similar) pushes a
different-shaped record instead, { "url", "auditedAt", "error" }, with no violations
key at all -- it never pushes a record with "error": null alongside a violations array.
Pricing
Pay per run started, plus per page audited. See the Pricing tab for exact rates.