WCAG Accessibility Audit

live$0.01/domain auditedSignal Detection

Last updated October 19, 2026

Audit any website for WCAG 2.1 and 2.2 AA accessibility issues with axe-core in a real browser. One row per domain: issues by severity, top failing rules, sample elements, a score, and European Accessibility Act exposure signals. Optional statement, Impressum, and privacy checks.

Features

  • Audit any website for WCAG 2.1 and 2.2 AA accessibility issues with axe-core in a real browser.
  • One row per domain: issues by severity, top failing rules, sample elements, a score, and European Accessibility Act exposure signals.
  • Optional statement, Impressum, and privacy checks.
  • Pay per event: Domain audited at $0.01.

Input

domainstringoptional

Domain. One website domain, for example mambabuilt.com. Protocol and path are stripped and the homepage is audited. Required unless the Domains list is filled.

domainsarrayoptional

Domains (batch). Optional. A list of domains, one per line. One row per domain. When this list is filled it is used instead of the single Domain field.

standardstringoptional

Standard. Which rule set axe-core runs. ADA runs the WCAG 2.1 AA set, the level the ADA Title II rule names. EN 301 549 runs the rules axe maps to the European standard the EAA points to.

pagesstringoptional

Pages per domain. 1 audits the homepage only. 2 to 5 adds pages from the sitemap, or from the homepage navigation when there is no sitemap. Each page after the first is charged as page-audited. Sent as a string so Clay columns work as is.

viewportstringoptional

Viewport. Desktop renders at 1280 by 800. Mobile renders at 390 by 844 with touch, which is where reflow and target size issues show.

compliance_checksarrayoptional

Compliance checks. Optional page checks, charged once per domain as compliance-checked when any is selected. Presence only, never a legal verdict.

skipCachestringoptional

Skip cache. Leave as false to reuse an identical audit from the last 24 hours. Set to true to audit fresh, for example right after a fix ships.

max_charge_usdstringoptional

Maximum charge for this run (USD). Optional, in USD, for example 1.50. The run stops before starting a domain that could take its charges past this amount, so no row is cut in half. Leave empty to rely only on the maximum cost per run you set in Apify. The run also stops cleanly when that Apify maximum is reached.

Output schema

json
{
  "domain": "string",
  "url_audited": "string",
  "standard": "string",
  "viewport": "string",
  "pages_requested": "integer",
  "pages_audited": "integer",
  "urls_audited": "array",
  "violations_total": "integer",
  "violations_critical": "integer",
  "violations_serious": "integer",
  "violations_moderate": "integer",
  "violations_minor": "integer",
  "violation_nodes_total": "integer",
  "passes": "integer",
  "incomplete": "integer",
  "top_rules_json": "string",
  "sample_selectors_json": "string",
  "score": "integer",
  "eaa_exposure": "boolean",
  "eaa_signals": "array",
  "compliance_checks_requested": "array",
  "accessibility_statement_found": "boolean",
  "accessibility_statement_url": "string",
  "overlay_detected": "null",
  "overlay_vendor": "null",
  "privacy_policy_found": "null",
  "privacy_policy_url": "null",
  "impressum_found": "null",
  "impressum_url": "null",
  "impressum_fields_present": "null",
  "us_privacy_choice_link_found": "null",
  "gpc_well_known_found": "null",
  "render_status": "string",
  "render_ms": "integer",
  "axe_version": "string",
  "from_cache": "boolean",
  "row_status": "string",
  "error_reason": "null",
  "billable_events_json": "string",
  "checked_at": "string"
}

Pricing

$0.01per domain audited

Pay-per-event billing on the Apify platform. You are charged only when the actor returns a result. No subscription, no seat license.

Free-tier Apify accounts include monthly free compute. Upgrade for higher concurrency and volume.

Available on