Website SEO & Accessibility Auditor
Pricing
from $5.00 / 1,000 audited website pages
Website SEO & Accessibility Auditor
Audit public website pages for SEO metadata, accessibility basics, HTTP errors, and content quality issues.
Pricing
from $5.00 / 1,000 audited website pages
Rating
0.0
(0)
Developer
sky zhong
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Audit public website pages for practical SEO and accessibility problems without browser automation, logins, cookies, or external APIs. The Actor follows same-site links, optionally reads XML sitemaps, and writes one transparent result per audited page.
What you get
Each dataset row includes:
- HTTP status, final URL, content type, response size, and load time
- title, meta description, H1 count, canonical URL, HTML language, robots directives, and indexability
- Open Graph fields and detected JSON-LD types
- missing image
altattributes - buttons and links without detectable accessible names
- form controls without detectable labels
- skipped heading levels
- internal and external link counts
- a 0–100 SEO score, a 0–100 accessibility score, and detailed issue codes
The OUTPUT record in the default key-value store contains aggregate status codes, average scores, top issues, failed pages, duplicate titles, and duplicate meta descriptions.
Common use cases
- audit a new landing page before launch
- monitor a marketing site for missing SEO metadata
- find repeated titles and descriptions after a migration
- create a first-pass accessibility backlog for developers
- schedule a recurring website health check and export results as JSON, CSV, XML, or Excel through Apify
- call the Actor from an API, Make, Zapier, or an AI agent that needs structured web-quality data
Quick start
Use this input in Apify Console or through the API:
{"startUrls": [{ "url": "https://example.com/" }],"maxPages": 50,"maxCrawlDepth": 1,"discoverSitemaps": true,"respectRobotsTxt": true,"includeSubdomains": false,"maxConcurrency": 5,"delayMs": 300,"requestTimeoutSecs": 30}
For one-page checks, set maxCrawlDepth to 0. For a broader crawl, increase it gradually and keep maxPages at a predictable limit.
Input reference
| Field | Default | Purpose |
|---|---|---|
startUrls | required | One or more public HTTP(S) start pages |
maxPages | 50 | Hard cap across all sites, from 1 to 500 |
maxCrawlDepth | 1 | Same-site link depth, from 0 to 5 |
discoverSitemaps | true | Read Sitemap: entries and try /sitemap.xml |
respectRobotsTxt | true | Check robots rules before fetching pages |
includeSubdomains | false | Include child subdomains of each start hostname |
includePatterns | [] | Optional shell-style URL allow patterns |
excludePatterns | [] | Optional shell-style URL deny patterns |
maxConcurrency | 5 | Concurrent workers across sites |
delayMs | 300 | Minimum request spacing per origin |
requestTimeoutSecs | 30 | Timeout for each request |
Scoring methodology
The SEO score starts at 100 and applies documented deductions for non-2xx responses, missing or unusually sized titles and descriptions, missing or multiple H1 headings, missing canonical, language and viewport metadata, and noindex directives.
The accessibility score starts at 100 and applies bounded deductions for missing page language, image alt attributes, accessible button/link names, form labels, and heading-order skips. Empty alt="" is reported separately but is not automatically treated as an error because it can be correct for decorative images.
Scores are prioritization aids, not guarantees. Every deduction is backed by a visible issue code in the same dataset row.
Pricing
This Actor is designed for pay per event billing. Apify's synthetic apify-default-dataset-item event is charged once when one page-level result is written to the default dataset. The source includes a suggested launch price of $0.005 per page; the live event and price must be confirmed in the Actor's Apify Console monetization settings. Do not add a second custom per-page event, because that would charge the same result twice.
Users control cost with maxPages and Apify's maximum charge per run. When the spending limit is reached, the Actor stops gracefully.
Safety and responsible use
- Only public HTTP and HTTPS targets are supported.
- Localhost, private, loopback, link-local, reserved, multicast, and other non-public addresses are blocked.
- Every redirect target is validated before it is requested.
- Response bodies are capped at 5 MB.
- Crawling stays within the hostname scope of each start URL unless child subdomains are explicitly enabled.
- Binary and common static-asset extensions are skipped.
robots.txtis respected by default, including a bounded crawl delay.- The Actor does not accept cookies, credentials, custom headers, stealth settings, or login sessions.
Only audit websites you are authorized to access and follow applicable site terms and laws.
Limitations
This is a static server-rendered HTML audit. It does not execute JavaScript and is not a Lighthouse performance run. It cannot evaluate color contrast, keyboard behavior, focus order, video captions, ARIA widget behavior, or content visible only after client-side rendering.
The accessibility result is not a WCAG certification or legal compliance opinion. Use it as a fast automated first pass and follow with browser-based and manual testing.
Run locally
Python 3.11 or newer is required.
python -m venv .venv.venv/Scripts/pip install -r requirements.txtpython -m unittest discover -s tests -vapify run
For a local Actor run without Apify CLI, place the input at storage/key_value_stores/default/INPUT.json and run python -m my_actor. To exercise pay-per-event behavior locally, set ACTOR_TEST_PAY_PER_EVENT=true.
Output example
{"url": "https://example.com/","statusCode": 200,"title": "Example Domain","h1Count": 1,"seoScore": 75,"accessibilityScore": 100,"issueCodes": ["TITLE_TOO_SHORT","META_DESCRIPTION_MISSING","CANONICAL_MISSING"]}
Support
When reporting a problem, include the run ID, a public example URL, and the unexpected issue code. Do not send passwords, cookies, API tokens, or private-site content.
FAQ
Why does the result differ from Lighthouse? This Actor audits returned HTML without launching a browser. Lighthouse executes a browser and measures a different, broader set of signals.
Can it audit a login-only site? No. Credentials, cookies, and private networks are intentionally unsupported.
Why was a page skipped? Check errorCode, URL patterns, hostname scope, robots.txt, the page cap, and the run spending limit.
Can I resell the report? You may use and export Actor results, subject to the audited website's terms and applicable law.