Refused access (401, 403, 429)

response_codes.internal_access_restricted
Priority
Medium
Severity
Warning

What we look for

These pages answered with a status code (the server's three-digit reply) of 401 (login needed), 403 (access forbidden) or 429 (too many requests).

Why it matters

Search engines cannot get past a login or a refusal, so these pages stay out of their results. That is right for private areas and wrong for any page you want found.

How to fix

Remove the login or block from any page you want in search results, in your server, CDN or CMS settings. For a 429, re-run the crawl more slowly, with a higher --delay or a lower --concurrency, to see whether this crawl set off the limit.

What it cannot know

A 429 can be caused by the speed of this crawl rather than by how the site treats search engines.

Seen in a real crawl

From a crawl of Millbrook Hardware (the broken fixture), a test site from Raptor’s fixture suite.

Medium

2 pages refuse access to Raptor

  • /forbiddenStatus 403 — access forbidden
  • /rate-limitedStatus 429 — rate limited
Paths on http://127.0.0.1:8001raptor 0.3.0, 17 Oct 2026

Where you’ll see it

The id is stable, and every surface uses it, so it’s the thing to search for or hand to an agent.

Terminal
When it is one of the five findings under Fix first, raptor crawl prints the id under it.
Check: response_codes.internal_access_restricted
crawl.json and the CSV
The crawl JSON names the finding by this id, and so do the CSV and raptor_query.
"check_id": "response_codes.internal_access_restricted"
The HTML report
This link opens the finding in the report, and each finding shows its id.
crawl.html#finding=response_codes.internal_access_restricted
MCP
raptor_findings with this check_id returns the finding in full, with a fix brief ready to paste into a task. If it didn’t fire, it says why.
raptor_findings {
  "job_id": "...",
  "check_id": "response_codes.internal_access_restricted"
}