SEO Audit Tool - Technical On-Page SEO Checker & Score
Pricing
from $20.00 / 1,000 page auditeds
SEO Audit Tool - Technical On-Page SEO Checker & Score
Check the SEO of a website or page: technical and on-page audit of titles, meta descriptions, canonicals, robots, hreflang, headings, alt text, structured data, broken links, robots.txt and sitemap, with a 0-100 score and issue list per page. Site crawl. $20 per 1,000 pages; failed pages are free.
Pricing
from $20.00 / 1,000 page auditeds
Rating
0.0
(0)
Developer
Tenfold Fleet
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does SEO Audit Tool do?
SEO Audit Tool runs a technical and on-page SEO audit of any website and returns one row per page with a 0-100 SEO score, a prioritized issue list (error / warning / notice) and every on-page signal search engines read: title and meta description length, canonical URL, robots meta and X-Robots-Tag, hreflang, H1-H3 headings, word count, image alt text, internal and external links, broken links, mixed content, Open Graph and Twitter Card tags, JSON-LD structured data, robots.txt and XML sitemap.
Audit a list of URLs, or switch on crawl mode to audit a whole site: it starts from your URL and follows internal links and the sitemap.xml, breadth-first, up to the page limit you set. Plain HTTP requests, no browser, so it's fast: about 100 pages per minute. Use it as an SEO audit API, a bulk website SEO checker, or a lightweight Screaming Frog alternative in the cloud.
Why use an SEO audit tool?
- ๐ Technical SEO audits for clients: get structured, sortable findings instead of a PDF, then export to Google Sheets or Excel.
- ๐ท๏ธ Find missing or duplicate titles and meta descriptions across a whole site (see the
SUMMARYrecord). - ๐ Find broken links (404, 410, 5xx, dead domains, bad SSL) on every page.
- ๐ฆ Check indexability: noindex tags, X-Robots-Tag headers, robots.txt blocks and canonicals pointing elsewhere.
- ๐ ๏ธ Monitor SEO in CI or on a schedule: run after each deploy and alert when the score drops.
- ๐ค Feed AI agents and SEO dashboards with a factual, scored snapshot of any page via API or MCP.
Runs on the Apify platform, so you get an API, scheduling, webhooks and integrations with Make, Zapier, n8n, Google Sheets and Slack.
What data can it extract?
| Field | What you get |
|---|---|
score, issues[], errorCount, warningCount, noticeCount | 0-100 SEO score and issues with code, severity and a plain-English message |
statusCode, redirectChain[], responseTimeMs, pageSizeBytes | HTTP status, every redirect hop with its status, server response time, HTML size |
isHttps, mixedContent[] | HTTPS check and HTTP resources loaded on HTTPS pages |
title, titleLength, metaDescription, metaDescriptionLength | Title and description with character counts |
canonicalUrl, canonicalIsSelf, metaRobots, xRobotsTag, isIndexable, blockedByRobotsTxt | Indexability signals |
hreflang[], lang, viewport, charset | International and mobile signals |
h1, h2, h3 (+ counts), wordCount | Heading texts and visible word count |
imagesCount, imagesMissingAlt, imagesMissingAltSample[] | Image alt-text coverage |
internalLinks, externalLinks, nofollowLinks, brokenLinks[] | Link counts and broken links (optional check) |
openGraph, twitterCard | All og: and twitter: tags |
schemaTypes[] | Structured data types from JSON-LD and microdata (Organization, Product, Article...) |
robotsTxt, sitemaps[] | Site-level robots.txt and XML sitemap presence |
How to run an SEO audit of a website
- Click Try for free.
- Paste one or more URLs into URLs to audit.
- To audit a whole site, switch on Crawl each site and set Max pages per site.
- Optionally switch on Check for broken links.
- Click Start, then sort the table by Score to see the weakest pages first. Download as JSON, CSV, Excel or HTML, or fetch results through the API.
How much does it cost?
You pay $0.02 per page successfully audited ($20 per 1,000 pages), Apify platform usage included. Pages that fail are free: unreachable sites, timeouts, HTTP 4xx/5xx responses and bot-protection pages are returned as error rows and never charged. Set a maximum cost per run in the run options and the audit stops when it is reached. Apify's free plan includes monthly credit, enough to audit hundreds of pages at no cost.
How is the SEO score calculated?
Every page starts at 100. Each issue found subtracts a fixed number of points (minimum score 0):
| Issue code | Severity | Points |
|---|---|---|
title-missing | error | -15 |
not-https | error | -15 |
noindex | error | -15 |
blocked-by-robots-txt | error | -15 |
mixed-content | error | -10 |
viewport-missing | error | -10 |
broken-links | error | -10 |
meta-description-missing | warning | -8 |
h1-missing | warning | -8 |
redirect-chain (2+ redirects) | warning | -5 |
slow-response (over 2,000 ms) | warning | -5 |
images-missing-alt | warning | -5 |
title-too-long (over 60 characters) | warning | -4 |
page-too-large (HTML over 1 MB) | warning | -4 |
structured-data-invalid (JSON-LD that doesn't parse) | warning | -4 |
canonical-missing | notice | -3 |
lang-missing | notice | -3 |
thin-content (under 200 words) | notice | -3 |
title-too-short (under 30 characters) | notice | -2 |
meta-description-too-long (over 160 characters) | notice | -2 |
meta-description-too-short (under 70 characters) | notice | -2 |
multiple-h1 | notice | -2 |
canonical-points-elsewhere | notice | -2 |
open-graph-missing (no og:title or og:image) | notice | -2 |
structured-data-missing | notice | -2 |
robots-txt-missing | notice | -2 |
sitemap-missing | notice | -2 |
noindex counts robots meta tags (robots, googlebot) and X-Robots-Tag headers that apply to Google. broken-links is only checked when Check for broken links is on.
Input
{"urls": ["https://www.example.com"],"crawl": true,"maxPagesPerSite": 50,"checkBrokenLinks": true,"maxLinksToCheck": 50}
With crawl off (default), only the listed URLs are audited, which is ideal for checking a set of landing pages.
Output
One row per page. Example (shortened):
{"url": "http://bbc.co.uk/","finalUrl": "https://www.bbc.co.uk/","statusCode": 200,"score": 93,"errorCount": 0,"warningCount": 1,"noticeCount": 1,"issues": [{ "code": "redirect-chain", "severity": "warning", "message": "URL goes through 2 redirects before the final page." },{ "code": "title-too-short", "severity": "notice", "message": "Title is 10 characters; aim for 30-60." }],"redirectChain": [{ "url": "http://bbc.co.uk/", "statusCode": 301 }, { "url": "https://bbc.co.uk/", "statusCode": 301 }],"responseTimeMs": 606,"title": "BBC - Home","titleLength": 10,"metaDescriptionLength": 144,"canonicalUrl": "https://www.bbc.co.uk/","canonicalIsSelf": true,"isIndexable": true,"hreflang": [{ "lang": "en-gb", "url": "https://www.bbc.co.uk/" }],"h1Count": 1,"h1": ["BBC Homepage"],"wordCount": 1405,"imagesCount": 87,"imagesMissingAlt": 0,"internalLinks": 121,"externalLinks": 16,"schemaTypes": ["CollectionPage", "NewsMediaOrganization", "ItemList"],"robotsTxt": true,"sitemaps": ["https://www.bbc.co.uk/sitemap.xml"],"error": null}
The run also saves a SUMMARY record in the key-value store with, per site: pages audited, average score, the most common issues, and duplicate titles and meta descriptions with the URLs that share them.
Tips
- Bare domains work:
example.comis fetched ashttps://example.com, with anhttp://fallback. - Crawl mode skips files (PDF, images, ZIP), pages disallowed by robots.txt, and links that redirect to another domain.
- Broken-link results are cached, so links in the site header and footer are checked only once per run.
- If a site blocks datacenter traffic, enable Apify Proxy in the input.
FAQ
Does it render JavaScript?
No. It reads the HTML the server returns, the same first view Google gets before rendering. That keeps it fast and cheap. Pages built entirely in the browser (empty HTML shells) will show low word counts and missing headings, which is itself a useful SEO signal.
Does it measure Core Web Vitals?
No. It reports server response time and HTML size. For lab Core Web Vitals use Google PageSpeed Insights.
Why is a link I know works reported as broken?
Some servers reject automated requests. To avoid false alarms, only definite failures count as broken: HTTP 404, 410 and 5xx (except 503), dead domains, refused connections and invalid SSL certificates. Bot-blocking responses (400, 401, 403, 429, 999...) and timeouts are not reported. Failed HEAD requests are retried with GET.
Can I audit thousands of pages?
Yes. Add as many URLs as you like, or set Max pages per site up to 5,000 in crawl mode. At about 100 pages per minute, 5,000 pages take close to an hour, so raise the run Timeout for very large crawls (the SUMMARY record is saved as the run goes). Use the run's maximum-cost setting to cap spend.
Disclaimer
This tool reads publicly available web pages only, the same way a search engine crawler does. Only audit sites you own or have permission to test, and respect each site's terms of service.