🔧 ADA Website Fix-It Report — Remediation Plan
Pricing
$5,000.00 / 1,000 remediation reports
🔧 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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
28 minutes ago
Last modified
Categories
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?
- How to use
- Input
- Output
- JSON output example
- How much does it cost?
- Use cases
- Integrations
- Is it legal?
- Troubleshooting
- FAQ
- Tech stack
- Feedback & issues
🤔 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
reportFormat | Output |
|---|---|
json | Structured JSON in dataset + key-value store (default) |
markdown | Human-readable markdown report in key-value store |
both | JSON + markdown |
Step 4: Run + export
Click Start. Results appear in:
- Dataset — Per-page remediation items (push individually)
- Key-value store —
OUTPUTkey with aggregated report + markdown
Quick start (API)
{"startUrls": [{ "url": "https://example.com" }],"competitorUrls": [{ "url": "https://competitor.com" }],"reportFormat": "both"}
📥 Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | — | URLs to scan + report. Format: [{ "url": "https://..." }] |
scanResult | array | — | Pre-existing scan results JSON (from Scanner Actor). Skips re-scanning. |
competitorUrls | array | — | Optional competitor URLs for benchmark comparison |
reportFormat | string | json | Output format: json, markdown, or both |
llmModel | string | auto | LLM model for code snippet generation |
Note: Provide either
startUrlsorscanResult— not both. IfscanResultis 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:
| Field | Type | Description |
|---|---|---|
url | string | Page URL |
pageTitle | string | Page title |
scanDate | string | ISO 8601 scan timestamp |
remediationSummary | object | Total cost (low/high), hours, violations by severity, grade, risk, fix-by date |
remediationItems | array | Each violation with plain English, code snippet, cost, hours, help URL |
itemsByPriority | object | Items grouped: critical, serious, moderate, minor |
Per-violation item
| Field | Type | Description |
|---|---|---|
ruleId | string | axe-core rule ID (e.g., color-contrast) |
impact | string | Severity: critical, serious, moderate, minor |
plainEnglish | string | Human-readable description (e.g., "Text is too hard to read against its background color") |
technicalDescription | string | axe-core's technical description |
affectedElements | integer | Number of elements affected |
codeSnippet | string | AI-generated code fix (HTML/CSS) |
costLow | number | Estimated cost — low end (USD) |
costHigh | number | Estimated cost — high end (USD) |
estimatedHours | number | Estimated labor hours |
helpUrl | string | Link to Deque's remediation guide |
examples | array | Up to 3 affected elements with CSS selector, HTML snippet, failure summary |
Aggregated output (key-value store)
| Field | Type | Description |
|---|---|---|
reportDate | string | Report generation timestamp |
totalPages | integer | Pages scanned |
totalCostLow | number | Total estimated cost — low end |
totalCostHigh | number | Total estimated cost — high end |
totalHours | number | Total estimated labor hours |
overallGrade | string | Overall compliance grade (A–F) |
overallRisk | string | Overall lawsuit risk level |
recommendedFixBy | string | Date by which critical issues should be addressed |
reports | array | Per-page remediation reports |
competitors | array | Competitor benchmark results (if provided) |
markdownReport | string | Full 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 case | Pages | Competitors | Cost |
|---|---|---|---|
| Single page report | 1 | 0 | $5 |
| Full page report + 2 competitors | 1 | 2 | $5 (competitor scans included) |
| 5-page website audit | 5 | 0 | $25 |
| Agency pitch (prospect + 3 competitors) | 1 | 3 | $5 |
| Client portfolio (10 sites × 1 page) | 10 | 0 | $50 |
| Full website remediation plan (20 pages) | 20 | 0 | $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
scanResultinput 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 ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")# Step 1: Scanscan_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
⚖️ Is it legal?
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
| Problem | Cause | Fix |
|---|---|---|
| Empty report (0 items) | Site had no violations, or scan found nothing | Check 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" error | Neither input provided | Provide either startUrls or scanResult (from the Scanner Actor) |
| Code snippets look generic | LLM endpoint not configured or unreachable | Actor falls back to template snippets when LLM is unavailable. Check llmModel setting |
| Competitor scan timeout | Competitor site slow or blocking | Remove problematic competitor URL or try again |
| Markdown report missing | reportFormat not set to markdown or both | Set reportFormat: "both" to get JSON + markdown |
| Duplicate violations scanned twice | Provided both startUrls and scanResult | Use 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:
| Actor | What it does | Price |
|---|---|---|
| Website Health Check | 9-in-1 audit: accessibility + security + SSL + broken links + SEO + performance | $3/URL |
| ADA Compliance Checker | Scan any website for WCAG violations. Feed results to this Actor via scanResult | $2/scan |
| llms.txt Generator | Generate llms.txt + check AI bot access. Boost AI search visibility | FREE |
| AI Citation Monitor | Track brand mentions in AI search responses | $0.50/query |
Recommended workflow
- Health Check — Run broad 9-check audit first ($3/URL)
- ADA Scanner — Deep-dive accessibility violations ($2/scan)
- ADA Fix-It Report (this Actor) — Generate developer-ready remediation plan ($5/page)
- llms.txt Generator — Ensure AI search engines can find your site (FREE)
- 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.