Website SEO Audit & Broken Link Checker
Pricing
Pay per event
Website SEO Audit & Broken Link Checker
Crawl your own website politely (robots.txt always honoured) and get a per-page SEO audit: titles, meta descriptions, headings, canonicals, redirects, duplicates and broken links. Nothing stored after the run.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Puneet
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Crawl your own site politely and get a page-by-page SEO audit plus a list of broken links, as clean JSON, in one run.
Point the Actor at the home page of a site you own (or are allowed to test). It follows internal links, optionally seeds the crawl from your XML sitemap, and checks each HTML page for the problems that cost rankings and clicks: missing or duplicate titles, weak meta descriptions, heading problems, canonical mistakes, noindex tags, images without alt text, thin pages, redirect chains, mixed content and broken links. You get one dataset row per page and a site-wide summary.
No browser, no login, no API key, no third-party SEO database. robots.txt is always obeyed and there is no switch to turn that off.
What people use it for
- Agencies and freelancers: schedule a weekly run per client and diff the issue counts.
- In-house SEO and web teams: catch broken links and accidental
noindextags after a release. - Site migrations: crawl before and after, compare redirect chains, titles and canonicals.
- Content audits: find thin pages, duplicate titles and duplicate descriptions in one table.
- Developers: call it from CI after a deploy and fail the pipeline when
brokenLinksis not empty.
What it checks (per page)
| Area | Issue codes |
|---|---|
| Status | http-error, redirected, redirect-chain, slow-response (over 3 s) |
| Title | missing-title, title-too-long (over 60), title-too-short (under 10), duplicate-title |
| Description | missing-meta-description, meta-description-too-long (over 160), meta-description-too-short (under 50), duplicate-meta-description |
| Headings | missing-h1, multiple-h1 |
| Indexing | noindex (meta robots or X-Robots-Tag), missing-canonical, canonical-elsewhere |
| Page setup | missing-lang, missing-viewport, missing-open-graph, invalid-json-ld |
| Content | thin-content (under 150 words), images-missing-alt |
| Security | mixed-content (http resources on an https page) |
| Links | broken-links (4xx/5xx, DNS failure, timeout, connection refused) |
Each page also carries a simple healthScore (100 minus 20 per error and 5 per warning), the title, H1, description length, word count, canonical, language, structured-data types found (JSON-LD @type), link counts and the broken links found on that page.
Sample output
{"url": "https://example.org/pricing","status": 200,"title": "Pricing","titleLength": 7,"metaDescriptionLength": 0,"h1Count": 1,"wordCount": 212,"canonical": "https://example.org/pricing","structuredDataTypes": ["Product"],"brokenLinkCount": 1,"brokenLinks": [{"url": "https://example.org/old-guide", "status": 404, "reason": "HTTP 404"}],"issues": ["title-too-short", "missing-meta-description", "broken-links"],"issueCount": 3,"healthScore": 75}
The SITE_SUMMARY record in the key-value store lists issue counts by type and severity, duplicate titles, every broken link with the page it was found on, links that could not be verified, URLs skipped because of robots.txt and crawl notes.
Inputs
| Input | What it does |
|---|---|
| Start URLs | 1 to 5 home pages. Only pages on the same host are crawled |
| Max pages | Pages fetched in total (1 to 2000, default 50) |
| Max link depth | Clicks from the start page (0 to 20, default 5) |
| Seed from sitemap.xml | Adds URLs from the sitemap(s) listed in robots.txt or at /sitemap.xml |
| Check links | HEAD-checks links that were not crawled, including external ones |
| Max extra link checks | Cap on those checks (0 to 3000, default 300) |
| Delay between page requests | 500 to 10000 ms. A higher Crawl-delay in robots.txt wins |
| Crawl URLs with query strings | Off by default, to avoid endless filter and sort variants |
Bad input (no URL, not an http(s) address, too many start URLs) stops the run at once with a plain message and no charge beyond the start event. If every start URL is unreachable or disallowed by robots.txt the run fails with the reason for each.
Pricing
Pay per event: $0.005 per run plus $0.003 per audited page. A 100-page site costs about $0.31. Pages that return errors (404, 500, unreachable), URLs blocked by robots.txt and non-HTML files are free, and nothing is charged past the Maximum cost per run you set.
Good to know
- Polite by design. One request at a time per host, at least 500 ms apart, a declared user agent (
SiteAuditLinkChecker), retries with back-off on 429/5xx. External links are checked with HEAD only, at most once per second per host. - Access refusals are not "broken". A 401, 403, 429 or 999 answer is listed as unverifiable. The Actor never retries around it, never solves captchas and never signs in.
- Static HTML only. Pages are read as the server delivers them, without running JavaScript. Content that only appears after scripts run is not seen.
- Private networks are refused, redirects included (localhost, internal IPs, cloud metadata addresses).
- Pages larger than 3 MB are truncated before parsing. Sitemaps ending in
.gzare skipped. - Link checks are best effort: some servers answer HEAD requests differently from browsers, and busy hosts can time out.
Privacy and rights
Audit only sites you own or have permission to test. The Actor does not extract email addresses, phone numbers or any personal profile data, and it keeps nothing after the run: results live only in your own run's dataset and key-value store, plus run-health counters (runs started, succeeded, failed, last error) in a named store in your account.
Built on httpx, BeautifulSoup and lxml. This is an independent tool and is not affiliated with any search engine or SEO software vendor.