SEO Audit Crawler - Find What Broke Since Last Crawl avatar

SEO Audit Crawler - Find What Broke Since Last Crawl

Pricing

from $10.00 / 1,000 site auditeds

Go to Apify Store
SEO Audit Crawler - Find What Broke Since Last Crawl

SEO Audit Crawler - Find What Broke Since Last Crawl

Find what broke on your site since the last crawl: pages that now 404, new noindex, changed canonicals, titles, H1s and schema, redirect chains and broken internal links, ranked by severity with a plain-English summary and Slack/Discord alert. Re-run after every release.

Pricing

from $10.00 / 1,000 site auditeds

Rating

0.0

(0)

Developer

mohamed alaya

mohamed alaya

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Security

Limited permissions

Share

Most SEO crawlers give you a 400-row report of everything that is wrong with a site. After a release, a migration or a CMS change, the useful question is different: what broke since the last crawl?

This Actor crawls your site, remembers the result, and on every re-run tells you what got worse: a page that was 200 and now 404s, a noindex that appeared, a canonical that now points elsewhere, a removed H1 or title, structured data that vanished, new redirect chains and broken internal links. Findings are ranked critical / high / medium / low and summarised in plain English at the top, with an optional Slack or Discord alert. (Formerly "SEO Regression Auditor"; it also absorbs the page-level diff of the Site Diff Engine.)

What it catches

CategoryWhat is compared with the last crawlSeverity
Status codesA URL that was OK and now returns 4xx/5xx or is unreachablecritical
IndexabilityNew noindex (meta or X-Robots-Tag), new robots.txt disallowcritical
CanonicalsCanonical removed, or changed to another URLhigh
Titles and H1Title or H1 removed (high), reworded (medium)high / medium
Structured dataA JSON-LD type that disappeared, JSON-LD blocks that stopped parsinghigh
Broken linksNew broken internal links, with the pages that link to themhigh
RedirectsNew redirect chains (2+ hops) and loopsmedium
SitemapPages that left the sitemapmedium
Meta descriptionRemoved (medium), reworded (low)medium / low
Page textBody text mostly rewritten (low) or shrunk by half (high)low / high
HygieneDuplicate titles, length limits, heading order, orphan pagesmedium / low

Also reported: fixed issues (what got better) and a 0-100 health score with its change since last time.

Sample output

{
"type": "summary", "site": "https://example.com", "isBaseline": false,
"headline": "2 critical, 0 high, 1 medium, 0 low changes since the last crawl (score 83 -> 78).",
"whatBroke": [
"CRITICAL: https://example.com/usage was HTTP 200, now HTTP 404",
"CRITICAL: NEW noindex on https://example.com/install",
"MEDIUM: https://example.com/usage was in the sitemap last run and is gone now"
],
"severityCounts": { "critical": 2, "high": 0, "medium": 1, "low": 0, "info": 0 },
"score": 78, "previousScore": 83, "scoreDelta": -5
}
{ "type": "change", "kind": "title-changed", "severity": "medium",
"url": "https://example.com/changelog",
"summary": "Title changed on https://example.com/changelog: \"Changelog\" -> \"Release notes\"",
"before": "Changelog", "after": "Release notes" }
{ "type": "issue", "severity": "high", "regression": "NEW", "category": "canonical",
"key": "canonical-elsewhere:https://example.com/changelog", "detail": { "canonicalTargets": ["https://example.com/index"] } }

Row types: summary (one per site), change (page-level before/after), issue (current problems, marked NEW / EXISTING), fixed, page-error, error.

How it works

  1. Crawl up to maxPages pages (sitemap first, topped up from internal links) and status-check up to maxLinksChecked more internal links, following redirects hop by hop.
  2. Audit every page and store a compact snapshot: status, title, meta description, H1, canonical, robots directives, JSON-LD types, a fingerprint of the body text.
  3. Compare with the snapshot saved by the previous run (named key-value store, one record per site).
  4. Output ranked findings, update the stored baseline, optionally send the alert.

First run = baseline. It outputs everything it finds but reports no regressions. Schedule the Actor (daily, or after every deploy via an Apify webhook/API call) and the second run onwards shows what changed.

Input

FieldDefaultWhat it does
startUrlshttps://example.comSites to audit. Each has its own baseline
maxPages40Pages fetched and audited in full
maxLinksChecked150Extra internal links that only get a status check
useSitemaptrueDiscover pages from sitemap.xml and detect orphan pages
includePatterns / excludePatternsemptySubstring filters for internal URLs
detectContentChanges, contentChangePercenttrue, 25Body text change detection and its threshold
onlyRegressionsfalseAfter the baseline, output only changes and new/fixed issues
resetBaselinefalseForget the stored crawl and start over
webhookUrl, alertMinSeverityempty, highSlack/Discord/any webhook; fires only on re-runs that find regressions
titleMin/MaxLength, descMin/MaxLength15/60, 50/160Length thresholds
stateStoreNameseo-regression-auditor-stateName of the baseline store; use one per client

Run with {} to try it on example.com.

Pricing

Pay per event:

EventPriceWhen
Site audited$0.01per site per run
Regression found$0.01per critical or high regression that is new this run, capped at 20 per site per run ($0.20 max)

Baseline runs, clean re-runs, and medium/low/info findings only cost the $0.01 site fee. A clean re-run of a 40-page site is $0.01 total. Findings that are two views of the same fault (for example "H1 removed" and "missing H1" on one page) are billed once.

Use cases

  • After every release: schedule or trigger a run and get a short list instead of a spreadsheet.
  • Agencies: one run, many client sites, one baseline store name per client.
  • Migrations and redesigns: compare before and after, catch lost canonicals, redirects and noindex.
  • Watch someone else's site: note when a competitor changes titles, H1s or structured data.

FAQ

Does it run JavaScript? No. It audits the HTML a crawler receives without rendering. Content added by JavaScript is not seen (that is also what most AI and many search crawlers see first).

How many pages can it audit? Up to 2000 audited pages and 5000 status-checked links per site per run. Larger sites: use includePatterns per section.

Is the score comparable with Lighthouse or other tools? No. It is this Actor's own 0-100 health score (penalties per issue type) and is meant for comparing a site with its own past, not with other sites.

Why was nothing reported on the first run? The first run is a baseline. Run it again later.

Can it miss a regression? Yes, anything outside the crawled sample (maxPages, maxLinksChecked) and anything that needs JavaScript or a login. Body text changes are estimated with a similarity sketch, not an exact diff. Orphan-page checks are only as good as the sitemap and the pages crawled.

Does it respect robots.txt? The crawl is an owner-style audit and fetches the pages you point it at. Disallowed pages are reported as an indexability finding rather than skipped. Only use it on sites you are allowed to audit.

Integrations

Works with Make, Zapier, n8n, Slack/Discord webhooks, the Apify API and scheduler, and Apify's MCP server for agents. Trigger it from your CI/CD after a deploy with the Apify API, then read summary.whatBroke.

If it caught something for you, a review on the Store page helps others find it. Issues and ideas are welcome on the Actor page.