SEO Site Audit — Website SEO Checker & Crawler avatar

SEO Site Audit — Website SEO Checker & Crawler

Pricing

from $3.00 / 1,000 page auditeds

Go to Apify Store
SEO Site Audit — Website SEO Checker & Crawler

SEO Site Audit — Website SEO Checker & Crawler

Crawl a website and audit every page for technical and on-page SEO: a 0-100 score, issues with fix hints, broken internal links, duplicate titles, orphan pages, canonical and robots problems, plus a site summary. $3 per 1,000 pages.

Pricing

from $3.00 / 1,000 page auditeds

Rating

0.0

(0)

Developer

Salih Küçükkayış

Salih Küçükkayış

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

Crawl a website and audit every page for technical and on-page SEO. Each page gets a 0-100 score and a list of issues with a severity and a fix hint: broken internal links, redirects, missing or duplicate titles and meta descriptions, headings, canonical and noindex problems, thin or duplicate content, images without alt text, structured data, mobile viewport, HTTPS and mixed content, slow pages, orphan pages and pages missing from the sitemap. A site summary adds robots.txt, sitemaps, HTTPS and www redirects, llms.txt and the technologies the site runs on.

$3 per 1,000 pages audited. Pages that robots.txt closes and URLs that do not answer are free. No platform usage fees.

Quick start

Press Start with the example input. It audits up to 50 pages of python.org:

{
"startUrls": ["https://www.python.org"],
"maxPagesToCrawl": 50
}

You get one dataset row per page, lowest score first (trimmed here; a real row from python.org):

{
"url": "https://www.python.org/about/help/",
"status": 200,
"score": 78,
"indexable": true,
"errors": 0,
"warnings": 2,
"notices": 4,
"issues": [
{
"id": "title-too-short",
"severity": "warning",
"message": "Title shorter than 30 characters",
"fix": "Make the title more descriptive (about 30-60 characters).",
"detail": 17
},
{
"id": "duplicate-description",
"severity": "warning",
"message": "Same meta description as other pages",
"fix": "Write a unique description for every page.",
"detail": ["https://www.python.org/", "https://www.python.org/jobs/", "https://www.python.org/about/"]
}
],
"title": "Help | Python.org",
"titleLength": 17,
"metaDescription": "The official home of the Python Programming Language",
"metaDescriptionLength": 52,
"h1": ["Help", "New to programming and to Python?", "…"],
"wordCount": 737,
"structuredData": ["WebSite"],
"internalLinks": 54,
"inlinks": 38,
"depth": 1,
"redirectingLinks": [
{ "url": "https://www.python.org/psf/", "finalUrl": "https://www.python.org/psf-landing/" }
],
"responseTimeMs": 58,
"htmlBytes": 38096
}

The run also saves a SUMMARY record: pages audited, average score, how many pages have each issue (errors first), and per site: robots.txt, sitemaps, whether HTTP redirects to HTTPS and the www variant to the main host, llms.txt, and technologies (CMS, framework, analytics, CDN, server).

What it checks

SeverityIssues
ErrorError status (4xx/5xx), no title, broken internal links, redirect loops, canonical pointing to a broken URL, noindex pages listed in the sitemap
WarningTitle too long or short, duplicate titles, missing or duplicate meta description, no H1, thin content (under 200 words), duplicate content, images without alt, no mobile viewport, plain HTTP, mixed content, slow server (over 1.5 s), redirect chains, orphan pages (in the sitemap, no links to them)
NoticeDescription length, several H1s, no or non-self canonical, noindex, no lang, large HTML, redirected URL, links to redirecting URLs, page missing from the sitemap, more than 3 clicks deep, no structured data, no Open Graph tags, nofollow on internal links

Score: 100 minus 20 per error, 7 per warning and 2 per notice (at least 0). Every issue in a row has an id, severity, message, fix and, where useful, a detail (a length, a count or the URLs involved).

Typical uses

  • Technical SEO audit of a client or your own site: sort by score, fix errors first.
  • After a migration or redesign: find broken internal links, redirect chains and pages that lost their titles or canonicals.
  • Sitemap hygiene: orphan pages, noindex pages in the sitemap, indexable pages missing from it.
  • Content checks: duplicate and thin pages, missing descriptions and H1s.
  • Recurring checks: schedule a weekly run and compare scores.
  • Give an AI agent an SEO tool through the Apify MCP server: "audit example.com and tell me what to fix first".

Input

FieldDefaultMeaning
startUrlsWebsites or sections to audit (example.com, https://example.com/blog/).
maxPagesToCrawl200Stop after this many pages (up to 50,000).
useSitemapstrueAlso audit pages listed in the XML sitemaps; needed for orphan and sitemap checks.
detectTechnologiestrueTechnologies of each site, from its homepage.
onlyPagesWithIssuesfalseWrite only pages with at least one issue (pages left out are free).
maxDepth20Clicks from the start page to follow.
includePatterns, excludePatternsRegular expressions to limit which URLs are crawled.

Output

One row per crawled page:

FieldMeaning
url, finalUrl, statusURL, URL after redirects, HTTP status
score, errors, warnings, notices, issuesScore and issues with fix hints
indexable200, not noindex, and canonical to itself (or none)
title, titleLength, metaDescription, metaDescriptionLengthTitle and description
h1, h2CountHeadings
canonical, metaRobots, xRobotsTag, lang, hreflangCountIndexing signals
wordCount, imageCount, imagesMissingAlt, structuredDataContent
internalLinks, inlinks, depth, inSitemapLinks on the page, links to it from crawled pages, clicks from the start page
brokenLinks, redirectingLinks, redirectChainInternal links to fix and the redirects of this URL
responseTimeMs, htmlBytes, contentType, mixedContentSpeed and size

Pages that robots.txt closes appear with blockedByRobots: true and are not charged.

What it costs

RunPrice
Small site, 50 pages$0.15
1,000 pages$3.00
Weekly audit of a 500-page site for a month$6.00

Pricing: $0.003 per page audited (any page that answered, including 404s, which are reported). Platform usage is included.

Next steps with your results

Good to know

  • Polite crawling. robots.txt is honoured for every page (user agent SEOSiteAudit), one request at a time per host with a short pause. Only pages of the sites you give are crawled; links to other sites are counted, not followed.
  • The HTML as served is audited, without running JavaScript. Pages that build their content in the browser (some single-page apps) may show fewer words and links than a browser sees.
  • Site-wide checks need the whole crawl, so rows are written when the crawl ends, or when it stops at the page limit, the spending limit or shortly before the run timeout. Pages linked from beyond the limit are not judged (their links count as unknown, not broken).
  • Redirects. A URL that redirects gets a short row of its own (status 301/302, finalUrl, finalStatus) and counts as one page; the page it leads to is audited in its own row.
  • Response time is the time until the server's first answer, measured from Apify's data center.
  • Private and internal addresses are refused. Technology detection uses the open Wappalyzer fingerprints (GPL-3.0).

FAQ

How is this different from Broken Link Checker? Broken Link Checker checks every link and image, including other sites. SEO Site Audit checks each page itself (titles, descriptions, headings, canonical, content, structured data…) and the links between your own pages.

Can I audit only part of a site? Yes: start at the section (https://example.com/blog/) and add /blog/ to includePatterns.

Am I charged for pages that fail? Pages that answer with an error (404, 500) are audited and charged, because the error is a finding. URLs that robots.txt closes, and hosts that cannot be reached, are free.

Can I run it from Make, Zapier, n8n, my own code or an AI agent? Yes, like any Apify Actor: through Apify's integrations, the Apify API or the Apify MCP server.

More from this developer

  • Lighthouse Bulk Audit: PageSpeed Insights scores, Core Web Vitals with real-user data and AI agent readiness for hundreds of URLs, $4 per 1,000 audits.
  • Broken Link Checker: crawl a site and find broken links, images and redirects.
  • Sitemap Extractor: every URL a website lists in its sitemaps, with lastmod, images and hreflang, $0.25 per 1,000 URLs.
  • Tech Stack Detector: which CMS, ecommerce platform, analytics and hosting a website uses, $1.50 per 1,000 websites.
  • Keyword Research: keyword ideas with volume, difficulty and search intent, $2 per 1,000 keywords.
  • Competitor Keywords: every Google keyword a domain or page ranks for, $2 per 1,000 rows.
  • Google SERP Rank Tracker: Google positions for your keywords by country and device, $2 per 1,000 result pages.

Code examples (curl, Python, Node.js, n8n) for this and the other Actors: github.com/msalihk/apify-actor-examples.

Questions or a missing feature: open an issue on the Actor page.