🔧 ADA Website Fix-It Report — Remediation Plan avatar

🔧 ADA Website Fix-It Report — Remediation Plan

Pricing

$5,000.00 / 1,000 remediation reports

Go to Apify Store
🔧 ADA Website Fix-It Report — Remediation Plan

🔧 ADA Website Fix-It Report — Remediation Plan

Turn accessibility scan results into developer-ready remediation reports. Plain-English explanations, AI code fixes, cost estimates, fix-by timeline, competitor benchmarking. $5/page, no subscription.

Pricing

$5,000.00 / 1,000 remediation reports

Rating

0.0

(0)

Developer

Alexander Maksimchuk

Alexander Maksimchuk

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

28 minutes ago

Last modified

Share

🔧 ADA Website Fix-It Report

Turn accessibility scan results into developer-ready remediation reports. Every violation gets a plain-English explanation, AI-generated code fix, cost estimate, and recommended fix-by timeline. Includes competitor benchmarking and markdown export — everything agencies need to sell remediation and developers need to execute fixes.

📋 Table of Contents

🤔 What is this?

ADA Website Fix-It Report takes raw accessibility scan data and transforms it into actionable, developer-ready remediation documentation. Instead of handing developers a list of rule IDs, this Actor translates each violation into plain English ("Text is too hard to read against its background color"), generates a working code snippet to fix it, estimates labor hours and dollar costs, and sets a recommended fix-by timeline based on severity.

It also scans competitor websites and includes a benchmark comparison in the report — so agencies can show prospects exactly where they stand vs their competitors. Output in JSON, markdown, or both.

Perfect for: agencies pitching remediation services, dev teams receiving actionable fix tickets, and compliance officers documenting remediation timelines.

🚀 How to use

Step 1: Provide URLs or scan results

You have two options:

Option A — Scan + Report (all-in-one):

{
"startUrls": [{ "url": "https://example.com" }]
}

The Actor scans each URL with axe-core, then generates the full remediation report.

Option B — Report from existing scan:

{
"scanResult": [<dataset items from ADA Scanner Actor>]
}

Skip re-scanning by feeding results from our companion Actor: ADA Website Compliance Checker.

Step 2: Add competitors (optional)

{
"startUrls": [{ "url": "https://yoursite.com" }],
"competitorUrls": [
{ "url": "https://competitor1.com" },
{ "url": "https://competitor2.com" }
]
}

The Actor scans competitor sites and includes a benchmark comparison table in the report.

Step 3: Choose output format

reportFormatOutput
jsonStructured JSON in dataset + key-value store (default)
markdownHuman-readable markdown report in key-value store
bothJSON + markdown

Step 4: Run + export

Click Start. Results appear in:

  • Dataset — Per-page remediation items (push individually)
  • Key-value storeOUTPUT key with aggregated report + markdown

Quick start (API)

{
"startUrls": [{ "url": "https://example.com" }],
"competitorUrls": [{ "url": "https://competitor.com" }],
"reportFormat": "both"
}

📥 Input

FieldTypeDefaultDescription
startUrlsarrayURLs to scan + report. Format: [{ "url": "https://..." }]
scanResultarrayPre-existing scan results JSON (from Scanner Actor). Skips re-scanning.
competitorUrlsarrayOptional competitor URLs for benchmark comparison
reportFormatstringjsonOutput format: json, markdown, or both
llmModelstringautoLLM model for code snippet generation

Note: Provide either startUrls or scanResult — not both. If scanResult is provided, the Actor skips scanning and goes straight to report generation.

📤 Output

Per-page remediation (dataset)

Each scanned page produces a remediation report pushed to the dataset:

FieldTypeDescription
urlstringPage URL
pageTitlestringPage title
scanDatestringISO 8601 scan timestamp
remediationSummaryobjectTotal cost (low/high), hours, violations by severity, grade, risk, fix-by date
remediationItemsarrayEach violation with plain English, code snippet, cost, hours, help URL
itemsByPriorityobjectItems grouped: critical, serious, moderate, minor

Per-violation item

FieldTypeDescription
ruleIdstringaxe-core rule ID (e.g., color-contrast)
impactstringSeverity: critical, serious, moderate, minor
plainEnglishstringHuman-readable description (e.g., "Text is too hard to read against its background color")
technicalDescriptionstringaxe-core's technical description
affectedElementsintegerNumber of elements affected
codeSnippetstringAI-generated code fix (HTML/CSS)
costLownumberEstimated cost — low end (USD)
costHighnumberEstimated cost — high end (USD)
estimatedHoursnumberEstimated labor hours
helpUrlstringLink to Deque's remediation guide
examplesarrayUp to 3 affected elements with CSS selector, HTML snippet, failure summary

Aggregated output (key-value store)

FieldTypeDescription
reportDatestringReport generation timestamp
totalPagesintegerPages scanned
totalCostLownumberTotal estimated cost — low end
totalCostHighnumberTotal estimated cost — high end
totalHoursnumberTotal estimated labor hours
overallGradestringOverall compliance grade (A–F)
overallRiskstringOverall lawsuit risk level
recommendedFixBystringDate by which critical issues should be addressed
reportsarrayPer-page remediation reports
competitorsarrayCompetitor benchmark results (if provided)
markdownReportstringFull markdown report (if reportFormat includes markdown)

📄 JSON output example

Here's real output from scanning example.com (clean site) and a fictional broken site:

Clean site result

{
"url": "https://example.com",
"pageTitle": "Example Domain",
"scanDate": "2026-07-04T02:15:33.841Z",
"remediationSummary": {
"totalCostLow": 0,
"totalCostHigh": 0,
"totalHours": 0,
"criticalCount": 0,
"seriousCount": 0,
"moderateCount": 0,
"minorCount": 0,
"recommendedFixBy": "2026-10-02",
"grade": "A",
"lawsuitRisk": "Low",
"complianceScore": 100
},
"remediationItems": [],
"itemsByPriority": {
"critical": [],
"serious": [],
"moderate": [],
"minor": []
}
}

Site with violations

{
"url": "https://broken-site.example",
"pageTitle": "ACME Corp — Home",
"scanDate": "2026-07-04T02:20:15.123Z",
"remediationSummary": {
"totalCostLow": 88,
"totalCostHigh": 185,
"totalHours": 2.8,
"criticalCount": 1,
"seriousCount": 2,
"moderateCount": 1,
"minorCount": 0,
"recommendedFixBy": "2026-07-18",
"grade": "D",
"lawsuitRisk": "High",
"complianceScore": 62
},
"remediationItems": [
{
"ruleId": "html-has-lang",
"impact": "serious",
"plainEnglish": "Page is missing language declaration (needed for screen readers)",
"technicalDescription": "Ensures every HTML document has a lang attribute",
"affectedElements": 1,
"codeSnippet": "<html lang=\"en\">",
"costLow": 5,
"costHigh": 10,
"estimatedHours": 0.1,
"helpUrl": "https://dequeuniversity.com/rules/axe/html-has-lang",
"examples": [
{
"target": ["html"],
"html": "<html>",
"failureSummary": "Fix any of the following:\n The <html> element does not have a lang attribute"
}
]
},
{
"ruleId": "image-alt",
"impact": "critical",
"plainEnglish": "Images are missing text descriptions for screen reader users",
"technicalDescription": "Ensures <img> elements have alternate text or a role of none or presentation",
"affectedElements": 2,
"codeSnippet": "<!-- Add alt text to images -->\n<img src=\"/logo.png\" alt=\"ACME Corp logo\">",
"costLow": 16,
"costHigh": 30,
"estimatedHours": 0.4,
"helpUrl": "https://dequeuniversity.com/rules/axe/image-alt",
"examples": [
{
"target": ["img.hero-logo"],
"html": "<img src=\"/logo.png\" class=\"hero-logo\">",
"failureSummary": "Fix any of the following:\n Element does not have an alt attribute"
}
]
},
{
"ruleId": "color-contrast",
"impact": "serious",
"plainEnglish": "Text is too hard to read against its background color",
"technicalDescription": "Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds",
"affectedElements": 1,
"codeSnippet": "/* Increase contrast: minimum 4.5:1 for normal text */\n.cta-button {\n color: #595959 !important;\n}",
"costLow": 15,
"costHigh": 30,
"estimatedHours": 0.5,
"helpUrl": "https://dequeuniversity.com/rules/axe/color-contrast",
"examples": [
{
"target": [".cta-button"],
"html": "<a href=\"/contact\" class=\"cta-button\">Contact Us</a>",
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.8:1"
}
]
},
{
"ruleId": "label",
"impact": "moderate",
"plainEnglish": "Form fields are missing descriptive labels",
"technicalDescription": "Ensures every form element has a label",
"affectedElements": 1,
"codeSnippet": "<label for=\"input-id\">Field label</label>\n<input id=\"input-id\" type=\"text\" name=\"field\">",
"costLow": 20,
"costHigh": 40,
"estimatedHours": 0.5,
"helpUrl": "https://dequeuniversity.com/rules/axe/label",
"examples": [
{
"target": ["#newsletter-email"],
"html": "<input type=\"email\" id=\"newsletter-email\" placeholder=\"Email\">",
"failureSummary": "Fix any of the following:\n Form element does not have an explicit label"
}
]
}
],
"itemsByPriority": {
"critical": [{ "ruleId": "image-alt", "..." : "..." }],
"serious": [
{ "ruleId": "html-has-lang", "..." : "..." },
{ "ruleId": "color-contrast", "..." : "..." }
],
"moderate": [{ "ruleId": "label", "..." : "..." }],
"minor": []
}
}

Competitor benchmark (when competitorUrls provided)

{
"competitors": [
{
"url": "https://competitor1.com",
"pageTitle": "Competitor 1 — Home",
"score": 85,
"grade": "B",
"risk": "Low",
"totalViolations": 2,
"critical": 0,
"serious": 1
},
{
"url": "https://competitor2.com",
"pageTitle": "Competitor 2 — Home",
"score": 45,
"grade": "F",
"risk": "High",
"totalViolations": 8,
"critical": 2,
"serious": 3
}
]
}

💰 How much does it cost?

$5 per page report. Includes axe-core scan + AI-generated code snippets + cost estimation + competitor benchmarking. No subscription needed.

Cost examples

Use casePagesCompetitorsCost
Single page report10$5
Full page report + 2 competitors12$5 (competitor scans included)
5-page website audit50$25
Agency pitch (prospect + 3 competitors)13$5
Client portfolio (10 sites × 1 page)100$50
Full website remediation plan (20 pages)200$100

Money-saving tip: Run our free ADA Scanner first to identify sites with violations. Only run this report on sites that need remediation. Feed scanner results via scanResult input to skip re-scanning and save on compute.

🎯 Use cases

  • Agency pitch tool — Scan prospect site, generate report showing violations + cost + fix timeline. Hands the prospect a ready-made remediation proposal
  • Developer handoff — Code snippets + cost estimates give developers everything needed to start fixing. No guessing what "accessible" means
  • Compliance documentation — Generate reports with fix-by dates for legal teams, insurance, and audit trails
  • Portfolio scoring — Bulk scan client sites, rank by compliance score, prioritize remediation budget
  • Competitive analysis — Show prospects where they rank vs competitors on accessibility. "Your site is Grade D, your competitor is Grade B — here's what they're doing right"
  • Pre-litigation assessment — Document known violations + remediation timeline. Shows good-faith compliance efforts

🔗 Integrations

Chain with ADA Scanner

Feed scanner results directly into this Actor to skip re-scanning:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
# Step 1: Scan
scan_run = client.actor("upstanding_biobot/ada-wcag-compliance-scan").call(run_input={
"startUrls": [{"url": "https://example.com"}]
})
scan_results = client.dataset(scan_run["defaultDatasetId"]).list_items().items
# Step 2: Generate report (no re-scan needed)
report_run = client.actor("upstanding_biobot/ada-remediation-report").call(run_input={
"scanResult": scan_results,
"reportFormat": "both"
})
report = client.key_value_store(report_run["defaultKeyValueStoreId"]).get_record("OUTPUT")

AI agents (MCP)

Both Actors work with the Apify MCP server (https://mcp.apify.com). AI agents can chain scanner → report autonomously:

User: "Check example.com for accessibility issues and give me a fix plan"
Agent: [runs scanner][feeds results to report Actor][returns markdown report]

Automation platforms

  • Zapier — New scan result → trigger report Actor → email PDF to client
  • Make (Integromat) — Schedule weekly accessibility monitoring → generate report → post to Slack
  • Custom webhooks — Apify webhooks trigger downstream processing on report completion
  • LangChain/LlamaIndex — Feed report data to LLMs for automated fix prioritization

Yes. This Actor performs automated accessibility scans on public web pages and generates reports based on those scans. It uses axe-core (open-source, MPL 2.0) — the same engine used by accessibility auditors worldwide.

  • What it does: Loads public web pages, runs WCAG rules, generates remediation guidance
  • What it doesn't do: It does not modify, hack, or breach any website
  • ADA context: ADA Title III lawsuits related to website accessibility have surged — over 4,500 filed in 2023 alone. Automated accessibility testing is a recognized best practice for documenting compliance efforts. Having scan results + remediation timeline demonstrates good-faith effort
  • Cost estimates: Labor hours and dollar ranges are based on industry averages for front-end developer work. Actual costs vary by developer, region, and project complexity
  • Not legal advice: This report does not constitute legal advice or guarantee legal compliance. Consult an ADA attorney for legal assessment

🔧 Troubleshooting

ProblemCauseFix
Empty report (0 items)Site had no violations, or scan found nothingCheck the remediationSummary.grade — if it's "A", the site is clean. If "F" with 0 items, the page didn't render
"No startUrls or scanResult" errorNeither input providedProvide either startUrls or scanResult (from the Scanner Actor)
Code snippets look genericLLM endpoint not configured or unreachableActor falls back to template snippets when LLM is unavailable. Check llmModel setting
Competitor scan timeoutCompetitor site slow or blockingRemove problematic competitor URL or try again
Markdown report missingreportFormat not set to markdown or bothSet reportFormat: "both" to get JSON + markdown
Duplicate violations scanned twiceProvided both startUrls and scanResultUse one or the other. If both provided, scanResult takes priority

❓ FAQ

🛠️ Tech stack

  • axe-core — Deque's WCAG testing engine (90+ rules)
  • Playwright — Headless Chromium browser automation
  • AI code generation — LLM-powered code snippet generation for remediation
  • Apify SDK — Platform integration, dataset, key-value store

🔧 Companion Actors

Complete your audit pipeline with these related tools:

ActorWhat it doesPrice
Website Health Check9-in-1 audit: accessibility + security + SSL + broken links + SEO + performance$3/URL
ADA Compliance CheckerScan any website for WCAG violations. Feed results to this Actor via scanResult$2/scan
llms.txt GeneratorGenerate llms.txt + check AI bot access. Boost AI search visibilityFREE
AI Citation MonitorTrack brand mentions in AI search responses$0.50/query
  1. Health Check — Run broad 9-check audit first ($3/URL)
  2. ADA Scanner — Deep-dive accessibility violations ($2/scan)
  3. ADA Fix-It Report (this Actor) — Generate developer-ready remediation plan ($5/page)
  4. llms.txt Generator — Ensure AI search engines can find your site (FREE)
  5. AI Citation Monitor — Track whether AI models mention your brand ($0.50/query)

💬 Feedback & issues

Found a bug? Have a feature request? Want better cost estimates for your region?

  • Apify Console — Use the Issues tab on this Actor's page
  • Review — Leave a rating/review on the Actor's Store page
  • Direct — We monitor all feedback through the Apify platform

This Actor is not affiliated with Deque Systems. axe-core is an open-source project licensed under MPL 2.0. Cost estimates are based on industry averages and are not guaranteed.