SEO Audit Crawler: Site Audit, Broken Links & On-Page SEO
Pricing
from $2.10 / 1,000 audited pages
SEO Audit Crawler: Site Audit, Broken Links & On-Page SEO
Crawl a website and audit every page: titles, meta descriptions, H1, canonicals, noindex, broken links, redirects, alt text, structured data, speed. Per-page score plus an HTML report.
Pricing
from $2.10 / 1,000 audited pages
Rating
0.0
(0)
Developer
Momi
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 hours ago
Last modified
Categories
Features
Share
Crawl any website and get a page-by-page SEO audit with a score from 0 to 100, a list of concrete issues for every page, and a ready-to-share HTML report. Built for SEO consultants, agencies, web developers and site owners who need a fast technical check without installing desktop software.
What does SEO Audit Crawler do?
It starts from a URL, follows internal links like a search engine would, and checks every HTML page for:
- Status codes: 4xx and 5xx pages, redirect chains.
- Titles: missing, too short, too long, duplicated across pages.
- Meta descriptions: missing, too short, too long, duplicated.
- Headings: missing or multiple H1.
- Indexing: noindex in meta robots or X-Robots-Tag, canonical pointing elsewhere, missing canonical.
- Links: broken internal links (with the pages that contain them), optional broken external links.
- Images: images without alt text.
- Mobile & security: missing viewport, plain HTTP, mixed content.
- Content & sharing: thin content (under 200 words), missing Open Graph, missing JSON-LD structured data (detected types are listed).
- Speed: server responses slower than your threshold.
- International SEO: hreflang alternates and the html lang attribute.
Why use it?
- Pay only for audited pages: no subscription. A 100-page audit costs a few cents (see the pricing tab).
- Actionable output: pages are sorted from worst to best score, each issue has a severity (error, warning, notice) and details such as the broken URLs or the measured length.
- Client-ready report: an HTML summary with the average score, issue totals and the pages to fix first.
- Automate it: schedule weekly audits and send results to Google Sheets, Slack or email through Apify integrations, or call it from your own code and AI agents.
- Polite crawling: own user agent, robots.txt respected, adjustable concurrency.
How to use it
- Enter the Website URL (for example
https://example.com). - Set Max pages (start with 50 to 200 for a first look).
- Optionally turn on Check external links.
- Click Start. When the run finishes, open the HTML audit report in the Output tab, or export the dataset to Excel, CSV or JSON.
Input
| Field | Default | Description |
|---|---|---|
startUrl | required | Page to start from. |
maxPages | 100 | Pages to audit; also caps the cost. |
maxDepth | 5 | Clicks away from the start URL. |
includeSubdomains | false | Also crawl subdomains. |
excludePatterns | [] | Skip URLs containing these fragments. |
checkExternalLinks | false | Check outgoing links too. |
maxExternalLinks | 200 | Limit of external URLs to check. |
titleMin / titleMax | 30 / 60 | Title length thresholds. |
descriptionMin / descriptionMax | 70 / 160 | Meta description thresholds. |
slowPageMs | 2000 | Slow response threshold in milliseconds. |
maxConcurrency | 5 | Parallel requests (1 to 10). |
respectRobotsTxt | true | Skip URLs disallowed by robots.txt. |
Output
One dataset row per page (worst pages first):
{"url": "https://example.com/blog","status": 200,"score": 79,"title": "Blog","titleLength": 4,"metaDescription": null,"h1": ["Latest posts"],"canonical": "https://example.com/blog","wordCount": 412,"imagesMissingAlt": 3,"structuredDataTypes": ["BreadcrumbList"],"responseTimeMs": 380,"inboundInternalLinks": 12,"issues": [{ "code": "TITLE_TOO_SHORT", "severity": "warning", "message": "Title is shorter than the recommended minimum.", "details": "4 characters" },{ "code": "MISSING_DESCRIPTION", "severity": "warning", "message": "Missing meta description." },{ "code": "IMAGES_MISSING_ALT", "severity": "warning", "message": "Images without alt text.", "details": "3 of 8 images" }]}
The Issues dataset view lists one row per issue, handy for spreadsheets. The key-value store also contains SUMMARY (JSON) and REPORT (HTML).
Use it from code or AI agents
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('jobdata_labs/seo-audit-crawler').call({ startUrl: 'https://example.com', maxPages: 100 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
The Actor is also available to AI agents through the Apify MCP server.
Scoring
Each page starts at 100. Every error removes 15 points, every warning 6, every notice 2 (minimum 0). Thresholds for titles, descriptions and speed are configurable.
FAQ
Does it render JavaScript? No. It reads the HTML returned by the server, like most SEO crawlers in their default mode. Sites that build all content in the browser will show thin content.
Can I audit a site I don't own? Yes, for public pages. The crawler identifies itself and respects robots.txt. Keep concurrency low on small sites.
Why is an external link marked broken? Only clear failures count: 404, 410, 5xx or an unreachable host. Sites that block bots with 401, 403 or 429 are not reported.
How is this different from a sitemap tool? It follows real links and inspects each page's content. To track which pages appear or disappear over time, use Sitemap Change Monitor.