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.
| Operation | Endpoint | Credits |
|---|---|---|
| Run a site audit | POST /v1/site-audit/run | 0 |
| Get a site audit | GET /v1/site-audit | 0 |
| List audit issues | GET /v1/site-audit/issues | 0 |
| List audited pages | GET /v1/site-audit/pages | 0 |
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
| Plan | Pages per audit |
|---|---|
| Pro and Lifetime | 200 |
| Agency | 500 |
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 tohttps://www.example.com/, the audit crawlswww.example.comand 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
RankParseand follows the rules for therankparseagent, else the*group. A blocked page is recorded asblocked, 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_sourceare 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
200HTML 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_verifiedorplan_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, withretry_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
| Issue | What it means | Details fields |
|---|---|---|
http_4xx | Page returns a 4xx error | status, linked_from |
http_5xx | Page returns a server error | status, linked_from |
fetch_failed | Page could not be fetched | error_code, linked_from |
broken_internal_link | Page links to a broken internal URL | count, targets |
missing_title | Page has no title | none |
noindex_in_sitemap | Sitemap lists a page marked noindex | source |
Warnings
| Issue | What it means | Details fields |
|---|---|---|
duplicate_title | Title used by several pages | shared_with, others |
duplicate_description | Meta description used by several pages | shared_with, others |
missing_description | Page has no meta description | none |
missing_h1 | Page has no H1 heading | none |
redirect_chain | URL redirects more than once | hops, chain |
sitemap_url_redirects | Sitemap lists a URL that redirects | final_url |
sitemap_url_blocked | Sitemap lists a URL blocked by robots.txt | none |
canonical_to_error | Canonical points to a page that does not answer 200 | canonical, status, redirects |
slow_response | Page is slow to respond | response_ms |
missing_viewport | Page has no viewport tag | none |
no_sitemap | No XML sitemap found | none |
Notices
| Issue | What it means | Details fields |
|---|---|---|
noindex | Page is marked noindex | source |
canonical_elsewhere | Canonical points to another URL | canonical |
title_too_long | Title is longer than 60 characters | length |
title_too_short | Title is shorter than 20 characters | length |
description_too_long | Meta description is longer than 160 characters | length |
multiple_h1 | Page has more than one H1 | count |
thin_content | Page has little text | words |
images_missing_alt | Images without alt text | missing, total |
missing_lang | Page does not declare its language | none |
link_to_redirect | Page links to internal URLs that redirect | count, targets |
orphan_in_sitemap | Sitemap page with no internal links to it | none |
not_in_sitemap | Indexable page missing from the sitemap | none |
deep_page | Page is more than 3 clicks from the home page | depth |
large_page | Page HTML is larger than 1 MB | none |
Rules worth knowing:
- Title, description, H1 and thin-content checks skip pages marked
noindex, which never appear in search results. duplicate_titleandduplicate_descriptioncompare indexable pages only: a variant with a canonical to another page, or anoindexpage, is meant to repeat its original.not_in_sitemapis 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_responsemeans the server took over 3 seconds.thin_contentmeans under 200 words.title_too_longis over 60 characters andtitle_too_shortunder 20.description_too_longis over 160.deep_pageis 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.