Skip to Content
Site audit

Site audit

A multi-page technical SEO crawl of one of your verified websites, with the problems it finds, how to fix them and the pages affected.

A site audit crawls one website the way a search engine would, page by page, and reports broken pages and links, redirect chains, noindex and canonical problems, missing or duplicated titles and descriptions, thin pages, orphan pages and sitemap gaps. It runs in the background, usually within a few minutes, and is free of credits.

OperationEndpointCredits
Run a site auditPOST /v1/site-audit/run0
Get a site auditGET /v1/site-audit0
List audit issuesGET /v1/site-audit/issues0
List audited pagesGET /v1/site-audit/pages0

The AI visibility scan is different: it checks one page and a few well-known files every day for agent readiness. A site audit follows the links across the whole website.

Eligibility

A website can be audited only when both are true:

  • It is verified: an active, verified Google Search Console or Bing Webmaster Tools property that matches the website's host is attached to it.
  • The workspace is on a paid plan: Pro, Agency or Lifetime. The Free plan cannot run audits.

For a website that is not eligible, the three read operations answer 200 with eligible: false and a reason (not_verified or plan_required), and show no stored rows. The rows are kept, so they return after an upgrade. Run a site audit answers 400 site_audit_not_verified or 403 site_audit_plan_required.

Page budget

PlanPages per audit
Pro and Lifetime200
Agency500

Pass max_pages (at least 10) to crawl fewer. When the budget is reached the audit still completes, page_limit_reached is true, and the counts cover only the pages that were crawled.

How the crawl works

  • Start: the host the home page lands on becomes the crawl scope. If https://example.com/ redirects to https://www.example.com/, the audit crawls www.example.com and never leaves it.
  • Discovery: the home page, up to half of the budget from the website's XML sitemap (declared in robots.txt, else /sitemap.xml), and every internal link found on the pages it reads, one click deeper each time.
  • robots.txt is obeyed. The crawler identifies as RankParse and follows the rules for the rankparse agent, else the * group. A blocked page is recorded as blocked, not fetched.
  • What is skipped: other hosts, file URLs (images, PDFs, scripts, stylesheets, archives and the like), URLs with more than 3 query parameters (filter and sort links like these can multiply into endless pages), and tracking parameters such as utm_source are removed before comparing URLs.
  • What is read: each page is fetched with a 10 second limit and the first 1 MB is parsed. Redirects on the audited host are followed (up to 5) and recorded. A redirect to another host is recorded as that page's destination without being requested. Only a 200 HTML page that answers at its own URL is parsed for titles, headings, canonicals and links.
  • Verification and plan are re-checked while the audit runs. If either stops holding, the audit fails with not_verified or plan_not_included.
  • Stalled audits: an audit that stops making progress for 20 minutes is restarted, at most 3 times, and then fails with stalled.

Limits

  • One audit at a time per website. A second request while one is queued or running answers already_running.
  • One new audit per website every 30 minutes (throttled, with retry_after_seconds).
  • RankParse keeps the 3 newest audits of each website. Starting a new one deletes the oldest beyond that.

Statuses

An audit is queued, running, completed or failed. A failed audit has an error_code: home_unreachable (neither https:// nor http:// answered), home_redirects_off_site (the home page redirects to another website; only the verified host and its www variant are crawled), not_verified, plan_not_included, site_archived, invalid_host, enqueue_failed or stalled.

Each crawled page has a state: done (the server answered), error (no answer: timeout, connection failure), blocked (robots.txt) or pending (not reached yet).

Score

score is the share of checked pages with no error-level issue, from 0 to 100 (null when no page was checked). Warnings and notices do not lower it. It measures how many pages are free of hard problems, not how well the website ranks.

Issues

Every issue has a severity. Errors cost visits now, warnings are likely to, and notices are worth a look but are often deliberate: a noindex on a thank-you page or a canonical on a variant is not a mistake. Do not present notices as failures without saying so.

Errors

IssueWhat it meansDetails fields
http_4xxPage returns a 4xx errorstatus, linked_from
http_5xxPage returns a server errorstatus, linked_from
fetch_failedPage could not be fetchederror_code, linked_from
broken_internal_linkPage links to a broken internal URLcount, targets
missing_titlePage has no titlenone
noindex_in_sitemapSitemap lists a page marked noindexsource

Warnings

IssueWhat it meansDetails fields
duplicate_titleTitle used by several pagesshared_with, others
duplicate_descriptionMeta description used by several pagesshared_with, others
missing_descriptionPage has no meta descriptionnone
missing_h1Page has no H1 headingnone
redirect_chainURL redirects more than oncehops, chain
sitemap_url_redirectsSitemap lists a URL that redirectsfinal_url
sitemap_url_blockedSitemap lists a URL blocked by robots.txtnone
canonical_to_errorCanonical points to a page that does not answer 200canonical, status, redirects
slow_responsePage is slow to respondresponse_ms
missing_viewportPage has no viewport tagnone
no_sitemapNo XML sitemap foundnone

Notices

IssueWhat it meansDetails fields
noindexPage is marked noindexsource
canonical_elsewhereCanonical points to another URLcanonical
title_too_longTitle is longer than 60 characterslength
title_too_shortTitle is shorter than 20 characterslength
description_too_longMeta description is longer than 160 characterslength
multiple_h1Page has more than one H1count
thin_contentPage has little textwords
images_missing_altImages without alt textmissing, total
missing_langPage does not declare its languagenone
link_to_redirectPage links to internal URLs that redirectcount, targets
orphan_in_sitemapSitemap page with no internal links to itnone
not_in_sitemapIndexable page missing from the sitemapnone
deep_pagePage is more than 3 clicks from the home pagedepth
large_pagePage HTML is larger than 1 MBnone

Rules worth knowing:

  • Title, description, H1 and thin-content checks skip pages marked noindex, which never appear in search results.
  • duplicate_title and duplicate_description compare indexable pages only: a variant with a canonical to another page, or a noindex page, is meant to repeat its original.
  • not_in_sitemap is reported only when the whole sitemap was read. A sitemap larger than the 1,000 entries the audit reads would otherwise make every page past the cut look missing.
  • orphan_in_sitemap (a sitemap page no crawled page links to) is reported only when the crawl was not cut short by the page budget, because a page the crawl never reached would look like an orphan.
  • slow_response means the server took over 3 seconds. thin_content means under 200 words. title_too_long is over 60 characters and title_too_short under 20. description_too_long is over 160. deep_page is more than 3 clicks from the home page.
  • At most 5,000 issues are stored per audit, errors first.

MCP tools

run_site_audit, get_site_audit, get_site_audit_issues and get_site_audit_pages on the API-key MCP endpoint. The seo_audit playbook starts an audit first and reads it as evidence. See MCP server.

On this page