WCAG 2.2 Accessibility Auditor โ Bulk axe-core
Pricing
from $50.00 / 1,000 url auditeds
WCAG 2.2 Accessibility Auditor โ Bulk axe-core
Bulk WCAG 2.2 accessibility auditor. Render sites with Chrome, scan with axe-core, return violations, severity, and score.
Pricing
from $50.00 / 1,000 url auditeds
Rating
0.0
(0)
Developer
NexGenData
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
โฟ WCAG 2.2 Accessibility Auditor โ bulk axe-core
Give it a list of page URLs. Each page is rendered in headless Chrome, scanned with axe-core 4.10.0, and returned as a structured WCAG 2.2 report.
๐ Sample Output

url | audit_engine | wcag_version | total_violations | total_passes | severity_breakdown |
|---|---|---|---|---|---|
| https://en.wikipedia.org/wiki/Web_accessibility | axe-core 4.10.0 | 2.2 | 4 | 32 | {'critical': 0, 'serious': 4, 'moderate': 0, 'minor': 0} |
Real rows from run ciYlYZJVljq0lfVYM on build 0.0.15 (2026-09-24), unedited apart from masked emails/phones and shortened long text; fields the source does not publish are empty.
โ๏ธ Sample inputs
This is the Store example input โ the same input Apify's automated check runs โ so it is proven to return rows on the current build. Paste it into the input form, or send it through the API, CLI or a schedule:
{"urls": ["https://example.com/","https://www.python.org/"],"wcagTags": ["wcag2a","wcag2aa","wcag21aa","wcag22aa"],"timeoutMs": 25000}
๐งพ JSON sample record
One real record from run ciYlYZJVljq0lfVYM (emails/phones masked, long text shortened):
{"url": "https://en.wikipedia.org/wiki/Web_accessibility","audit_engine": "axe-core 4.10.0","wcag_version": "2.2","total_violations": 4,"total_passes": 32,"total_incomplete": 3,"total_inapplicable": 30,"severity_breakdown": {"critical": 0,"serious": 4,"moderate": 0,"minor": 0},"wcag_tag_coverage": {"wcag2aa": 1,"wcag143": 1,"TTv5": 3,"EN-301-549": 3,"ACT": 2,"wcag2a": 2,"wcag141": 1,"wcag244": 1,"wcag412": 1,"section508": 1,"wcag22aa": 1,"wcag258": 1,"cat.color": 2,"TT13.c": 1,"EN-9.1.4.3": 1,"TT13.a": 1,"EN-9.1.4.1": 1,"cat.name-role-value": 1,"section508.22.a": 1,"TT6.a": 1,"EN-9.2.4.4": 1,"EN-9.4.1.2": 1,"cat.sensory-and-visual-cues": 1},"accessibility_score": 0,"top_violations": [{"rule_id": "color-contrast","impact": "serious","description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds","help": "Elements must meet minimum color contrast ratio thresholds","help_url": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI","wcag_tags": ["wcag2aa","wcag143"],"affected_nodes": 15,"sample_selectors": ["tr:nth-child(2) > .sidebar-content > .sidebar-list.mw-collapsed.mw-collapsible > .mw-collapsible-toggle-collapsed.mw-collapsible-toggle.mw-collapsible-toggle-default > .mw-collapsible-text","tr:nth-child(3) > .sidebar-content > .sidebar-list.mw-collapsed.mw-collapsible > .mw-collapsible-toggle-collapsed.mw-collapsible-toggle.mw-collapsible-toggle-default > .mw-collapsible-text","tr:nth-child(4) > .sidebar-content > .sidebar-list.mw-collapsed.mw-collapsible > .mw-collapsible-toggle-collapsed.mw-collapsible-toggle.mw-collapsible-toggle-default > .mw-collapsible-text"],"sample_html": ["<span class=\"mw-collapsible-text\">show</span>","<span class=\"mw-collapsible-text\">show</span>","<span class=\"mw-collapsible-text\">show</span>"],"failure_summary": "Fix any of the following:\n Element has insufficient color contrast of 4.05 (foreground color: #3366cc, background color: #ddddff, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"},{"rule_id": "target-size","impact": "serious","description": "Ensure touch targets have sufficient size and space","help": "All touch targets must be 24px large, or leave sufficient space","help_url": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI","wcag_tags": ["wcag22aa","wcag258"],"affected_nodes": 11,"sample_selectors": ["a[title=\"Template:Disability sidebar\"]",".sidebar-navbar > .navbar.navbar-mini.plainlinks > ul > .nv-talk > a[rel=\"mw:WikiLink\"]",".sidebar-navbar > .navbar.navbar-mini.plainlinks > ul > .nv-edit > a[rel=\"mw:WikiLink\"]"],"sample_html": ["<a rel=\"mw:WikiLink\" href=\"https://en.wikipedia.org/wiki/Template:Disability_sidebar\" title=\"Template:Disability sidebar\"><abbr title=\"View this template\">v</abbr></a>","<a rel=\"mw:WikiLink\" href=\"https://en.wikipedia.org/wiki/Template_talk:Disability_sidebar\" title=\"Template talk:Disability sidebar\"><abbr title=\"Discuss this template\">t</abbr></a>","<a rel=\"mw:WikiLink\" href=\"https://en.wikipedia.org/wiki/Special:EditPage/Template:Disability_sidebar\" title=\"Special:EditPage/Template:Disability sidebar\"><abbr title=\"Edit this template\">e</abbr></a"],"failure_summary": "Fix any of the following:\n Target has insufficient size (6.8px by 16px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 12.4px instead of at least 24px."},{"rule_id": "link-name","impact": "serious","description": "Ensure links have discernible text","help": "Links must have discernible text","help_url": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI","wcag_tags": ["wcag2a","wcag244","wcag412"],"affected_nodes": 6,"sample_selectors": ["#mwAss","#mwA0I","#mwA2s"],"sample_html": ["<a href=\"#cite_ref-sec1095_1-1\" id=\"mwAss\"><span class=\"mw-linkback-text\" id=\"mwAsw\">2</span></a>","<a href=\"#cite_ref-Shawn_Lawton_Henry_14-1\" id=\"mwA0I\"><span class=\"mw-linkback-text\" id=\"mwA0M\">2</span></a>","<a href=\"#cite_ref-w3.org_18-1\" id=\"mwA2s\"><span class=\"mw-linkback-text\" id=\"mwA2w\">2</span></a>"],"failure_summary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"},{"rule_id": "link-in-text-block","impact": "serious","description": "Ensure links are distinguished from surrounding text in a way that does not rely on color","help": "Links must be distinguishable without relying on color","help_url": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI","wcag_tags": ["wcag2a","wcag141"],"affected_nodes": 3,"sample_selectors": ["#mwAdA","#mwAeg","#mwAe0"],"sample_html": ["<a rel=\"mw:WikiLink\" href=\"https://en.wikipedia.org/wiki/Anti-discrimination_Accessibility_Act?action=edit&redlink=1\" title=\"Anti-discrimination Accessibility Act (page does not exist)\" class=\"new","<a rel=\"mw:WikiLink\" href=\"https://en.wikipedia.org/wiki/Biwako_Millennium_Framework?action=edit&redlink=1\" title=\"Biwako Millennium Framework (page does not exist)\" class=\"new\" typeof=\"mw:Localiz","<a rel=\"mw:WikiLink\" href=\"https://en.wikipedia.org/wiki/Manila_Accessible_Information_and_Communications_Technologies_Design_Recommendations?action=edit&redlink=1\" title=\"Manila Accessible Inform"],"failure_summary": "Fix any of the following:\n The link has insufficient color contrast of 2.99:1 with the surrounding text. (Minimum contrast is 3:1, link text: #bf3c2c, surrounding text: #202122)\n The link has no styling (such as underline) to distinguish it from the surrounding text"}]}
๐ Related Actors
More from the NexGenData Social, video & reviews family:
- Review Intelligence to Notion โ Cross-Platform Review Feed API
- StackOverflow Scraper โ Q&A & Dev Trends
- Universal Video Extractor โ Any URL to Downloadable Video
- YouTube Comments Scraper โ Video Comment API
- YouTube Transcript Scraper โ Captions & Text
- YouTube Scraper โ Video Metadata, Stats & Download Links
6 more in this family on the NexGenData Store page.
๐ต Pricing
| Event | Price |
|---|---|
| URL audited (one page rendered and successfully scanned) | $0.05 โ about 20 audits per $1 |
| Actor start | $0.005 per run, per GB of memory (minimum 1) |
You are charged only for pages that were actually rendered and audited. A page that could not be loaded โ blocked, timed out, DNS failure โ is not charged and is not written to the dataset; it is listed in the run's OUTPUT record and in the run status message instead.
๐ What you get
One dataset row per audited page, with these exact fields:
| Field | Type | Meaning |
|---|---|---|
url | string | The page audited |
audit_engine | string | axe-core 4.10.0 |
wcag_version | string | 2.2 |
total_violations | int | Number of failing axe rules |
total_passes | int | Number of rules that passed |
total_incomplete | int | Rules axe could not decide (needs human review) |
total_inapplicable | int | Rules with nothing on the page to test |
severity_breakdown | object | {critical, serious, moderate, minor} rule counts |
wcag_tag_coverage | object | Count of failing rules per WCAG tag (wcag2aa, wcag22aa, โฆ) |
accessibility_score | int | 0โ100, derived from violation severity ร affected nodes |
top_violations | array | Up to 25 failing rules, worst first โ see below |
Each entry in top_violations:
rule_id, impact, description, help, help_url, wcag_tags, affected_nodes, sample_selectors (up to 3 CSS selectors), sample_html (up to 3 snippets, 200 chars each), failure_summary.
Note on accessibility_score: it is this actor's own heuristic (critical โ15, serious โ8, moderate โ3, minor โ1, per affected node, capped at 20 nodes per rule, clamped to 0). It is a triage aid, not a certification, and it is not produced by axe-core. Nothing here is a legal conformance audit โ axe-core catches roughly the automatable subset of WCAG; manual testing is still required for a conformance claim.
โ๏ธ Input
| Field | Type | Notes |
|---|---|---|
urls | array of strings | Required. One URL per line. Bare hostnames are upgraded to https://. Also accepts startUrls with {"url": โฆ} objects. |
wcagTags | array of strings | Optional. Leave empty for the WCAG 2.2 AA set: wcag2a, wcag2aa, wcag21aa, wcag22aa. Other values: wcag21a, best-practice. |
timeoutMs | integer | Optional. Per-page load timeout, 5000โ120000. Default 25000. |
proxyCountry | string | Optional. Two-letter country used only for residential retries after a block. |
An empty input ({}) does no work and charges nothing โ the run succeeds with 0 rows and a message naming urls.
๐ Blocked pages
A page that refuses the direct request (connection reset, timeout, TLS failure) is retried up to 3 more times through the Apify residential proxy, with a fresh session on each attempt. Only after all attempts fail is the page recorded as unaudited โ and never charged.
๐ฆ How runs end
- Rows delivered โ status message reports how many pages were audited and charged, and how many were not.
- Every requested page unreachable โ the run FAILS with the first cause named. A blocked site is never reported as a clean audit.
- Browser could not start โ the run FAILS; nothing is charged.
- Run time limit reached โ the run stops cleanly before the platform timeout, keeps the pages already audited, and says "stopped early at the run time limit". Remaining URLs are listed in
OUTPUT.skipped_urls. - Nothing to do โ missing
urlssucceeds with 0 rows and says which field to fill in.
โฐ Schedule it
Run on a schedule (0 8 * * 1) to watch accessibility regressions over time.
๐ค Use with AI agents
Point Claude, the OpenAI Agents SDK, an n8n flow, or any MCP-aware client at it.
Run WCAG 2.2 Accessibility Auditor on my input and return the structured results.
Agentic payments (x402): supports agentic payment via USDC.
๐ Related tools
Lighthouse Bulk Checker ยท Page Speed Analyzer
A NexGenData utility actor. axe-core is MPL-2.0, ยฉ Deque Systems.