Back to Blog
Guide March 19, 2026 · 5 min read

Automated Accessibility Audits with One API Call

95% of websites fail accessibility checks. Not because developers are careless — because accessibility testing isn't automated. PageBolt's /audit endpoint makes it a one-line CI check.

The Problem: Manual Accessibility Testing

Your current accessibility workflow probably looks like:

  • Developer manually clicks through pages
  • Browser extension runs axe, highlights violations
  • Developer fixes them manually
  • QA tests screen reader (if there's time)
  • Edge cases slip through to production

It's slow, it's incomplete, and violations ship. A week after launch, a customer reports your new page is unusable with a screen reader. Now you're patching live code instead of fixing it before it shipped.

The Solution: /audit

PageBolt's /audit endpoint runs axe-core (the industry standard) on any URL and returns violations organized by severity. One API call. Full audit. Violations sorted.

const response = await fetch('https://pagebolt.dev/api/v1/audit', {
  method: 'POST',
  headers: {
    'x-api-key': process.env.PAGEBOLT_API_KEY,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ url: 'https://yoursite.com/new-feature' })
});

const data = await response.json();
console.log(data.violations);
// [
//   { severity: 'critical', count: 2, violations: [...] },
//   { severity: 'serious', count: 5, violations: [...] },
//   { severity: 'minor', count: 12, violations: [...] }
// ]

Real Example: CI/CD Accessibility Gate

Block deployments if critical violations are detected. No feature ships without passing accessibility checks.

async function auditPageBeforeDeploy(stagingUrl) {
  console.log(`Auditing ${stagingUrl}...`);

  const response = await fetch('https://pagebolt.dev/api/v1/audit', {
    method: 'POST',
    headers: {
      'x-api-key': process.env.PAGEBOLT_API_KEY,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      url: stagingUrl,
      standard: 'wcag2aa' // or wcag21aa, section508
    })
  });

  const audit = await response.json();

  const critical = audit.violations.find(v => v.severity === 'critical');
  if (critical && critical.count > 0) {
    console.error(`❌ BLOCKED: ${critical.count} critical accessibility violations`);
    critical.violations.forEach(v => {
      console.error(`   - ${v.description}`);
      console.error(`     Fix: ${v.remediation}`);
    });
    process.exit(1); // Fail the build
  }

  const serious = audit.violations.find(v => v.severity === 'serious');
  if (serious && serious.count > 0) {
    console.warn(`⚠️  Warning: ${serious.count} serious violations`);
  }

  console.log('✅ Accessibility check passed');
  return true;
}

// In GitHub Actions:
await auditPageBeforeDeploy(process.env.STAGING_URL);

What /audit Returns

{
  "url": "https://yoursite.com/page",
  "tested_at": "2026-03-19T14:32:00Z",
  "passes": 25,
  "violations": [
    {
      "severity": "critical",
      "count": 2,
      "violations": [
        {
          "id": "color-contrast",
          "description": "Background and foreground colors do not have sufficient contrast",
          "elements_affected": 3,
          "impact": "Users with low vision cannot read the text",
          "remediation": "Change text color to #000000 or background to #ffffff",
          "help_url": "https://dequeuniversity.com/rules/axe/..."
        }
      ]
    }
  ]
}

Full details for every violation: severity, element count, remediation guidance, and a direct link to the axe documentation for that rule.

Use Cases

  • Deploy gate — Block CI/CD if critical violations detected
  • Compliance documentation — Prove WCAG 2.1 AA compliance to auditors
  • Competitor monitoring — Audit competitor sites weekly, compare maturity
  • Bulk auditing — Audit 100 pages on a schedule, track progress over time
  • Enterprise deals — Enterprise customers increasingly require accessibility certification

Cost vs. Manual Testing

ApproachTime per PageCoverageMonthly Cost (5 pages/week)
Manual developer testing30 min~70%$375+
PageBolt /audit<1 second~95%$29 (Starter)

Automated audits don't just cost less — they catch issues before they ship. Manual testing catches them in production.

Standards Supported

  • WCAG 2.0 Level A / AA / AAA
  • WCAG 2.1 Level A / AA / AAA
  • Section 508
  • axe best practices

Frequently Asked Questions

Does /audit work on JavaScript-rendered pages?+

Yes. PageBolt runs axe-core inside a real Chromium browser, so React, Next.js, Vue, and other SPAs are fully rendered before the audit runs. This catches violations that only appear after JavaScript execution — the same violations a real screen reader would encounter.

Can I audit pages that require login?+

Yes. Pass session cookies via the cookies parameter. This lets you audit authenticated pages like dashboards, account settings, and checkout flows — typically the pages with the worst accessibility coverage.

Is axe-core the same standard used by WCAG auditors?+

axe-core is the most widely used automated accessibility testing engine — it powers accessibility testing in Playwright, Cypress, Deque's commercial tools, and most enterprise accessibility programs. It tests for WCAG 2.0, WCAG 2.1, and Section 508. Automated tools like axe catch roughly 30-40% of all WCAG issues; the rest require manual testing. But axe catches the critical and serious violations that matter most for compliance.

Make accessibility testing automatic

Start free — 100 audits/month, no credit card.

Start Free at pagebolt.dev/pricing