Internal Link Audit: Orphan Pages & Sitemap Crawl avatar

Internal Link Audit: Orphan Pages & Sitemap Crawl

Pricing

$2.00 / 1,000 page auditeds

Go to Apify Store
Internal Link Audit: Orphan Pages & Sitemap Crawl

Internal Link Audit: Orphan Pages & Sitemap Crawl

Find orphan pages, weak internal links, broken links and sitemap gaps. Sitemap crawl with inlink counts, anchors & fixes. First 25 free, then $0.002/page. No API keys.

Pricing

$2.00 / 1,000 page auditeds

Rating

0.0

(0)

Developer

Umair Saleem Mohammad Saleem

Umair Saleem Mohammad Saleem

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

21 hours ago

Last modified

Share

Answer first: this actor is an internal link audit and orphan page finder. Give it a sitemap (or a URL list). It crawls those pages and labels each one ORPHAN (no internal links in), WEAK (few links in), BROKEN_PAGE, HAS_BROKEN_LINKS or OK, with the pages that link to it, top anchor texts and a fix. It also lists URLs that are linked but missing from your sitemap. First 25 pages free every run, then $0.002 per page.

Quick facts
Best forOrphan page audits, internal linking audits, broken internal links, sitemap gaps, link depth / inlink counts
InputA sitemap URL (indexes followed) or a list of URLs
OutputOne row per page: issue, status, inlinks, linkedFrom[], topAnchors[], brokenLinksOnPage[], fix
PriceFirst 25 pages free every run, then $0.002 per page. No start fee
NeedsNo API keys, no proxies
Not includedJavaScript-injected links, external link checks

Why it matters

Orphan and weakly linked pages get crawled less, rank worse and are rarely cited by AI search. Internal linking is the cheapest SEO lever you control.

Input example

{
"sitemapUrl": "https://crawlee.dev/sitemap.xml",
"maxPages": 100,
"weakThreshold": 2,
"maxConcurrency": 5
}

Or pass a URL list instead of a sitemap:

{
"urls": ["https://example.com/", "https://example.com/about", "https://example.com/blog/post"],
"maxPages": 50,
"weakThreshold": 2,
"maxConcurrency": 5
}

Defaults: maxPages 50, weakThreshold 2, maxConcurrency 5. Sitemap indexes are followed (nested sitemaps up to depth 2). Provide either sitemapUrl or urls.

Issue types

IssueMeaning
ORPHAN0 inlinks from other crawled pages
WEAK1…weakThreshold inlinks (default threshold 2)
BROKEN_PAGEPage itself returned HTTP ≥400 (or failed)
HAS_BROKEN_LINKSPage is fine but links to internal URLs that are ≥400 / failed
OKEnough inlinks and no broken internal outlinks

Priority order in the dataset: BROKEN_PAGE → ORPHAN → HAS_BROKEN_LINKS → WEAK → OK.

Output (one row per page)

url, issue, status, inlinks, outlinksInternal, linkedFrom[], topAnchors[], brokenLinksOnPage[], fix

Sample:

[
{
"url": "https://crawlee.dev/blog/archive",
"issue": "ORPHAN",
"status": 200,
"inlinks": 0,
"outlinksInternal": 36,
"brokenLinksOnPage": [],
"linkedFrom": [],
"topAnchors": [],
"fix": "Link to this page from 3+ related pages (hub/category + body links), or remove it from the sitemap if it should not rank."
}
]

SUMMARY key-value: pagesAudited, byIssue counts, and linkedButNotInList (internal URLs linked from crawled pages but not in your sitemap/list, up to 200).

Pricing (pay per event)

First 25 pages in every run are free, then $2 per 1,000 pages ($0.002 per page audited).

What a run costs

Pages auditedYou pay
25$0 (free in every run)
100≈ $0.15
500≈ $0.95
1,000≈ $1.95
5,000≈ $9.95

(First 25 free each run.) Set a maximum charge per run in Apify run options; when the event spend cap is hit the actor stops cleanly (eventChargeLimitReached).

Notes

  • Inlinks are counted only among pages crawled in the run. For a full-site orphan check, raise Max pages to cover the whole sitemap.
  • Pages are read as server-rendered HTML (Cheerio). Links injected only by client-side JavaScript (SPA routers) are not seen — the same limitation most search and AI crawlers have.
  • Up to 100 linked-but-not-listed internal URLs are HEAD-checked for broken-link detection.

How it compares (live Apify Store prices, verified 18 Oct 2026)

List prices on the Apify Free plan, read from the Apify Store API on 18 October 2026.

ActorJob focusPriceFree pagesCost for 100 pages
cygnix_labs/internal-link-audit (this)Orphan + weak + broken internal + missing-from-sitemap, fix per page$0.002 / pageFirst 25 every run$0.15
dabooti/internal-link-graph-analyzerInternal-link graph + orphan candidates$0.001 / page + tiny start feeNo~$0.10
plainrows/broken-link-checkerBroken links, redirect chains, sitemaps$0.0015 / pageNo$0.15
ib4ngz/internal-link-opportunity-finderContextual link opportunities (not an orphan audit)$0.0065 / pageNo$0.65
searchshark/domain-internal-link-crawler-screamingfrog-alternativeFull link crawl, one row per link$0.001 / result + $0.01 startNodepends on link count
logiover/website-link-graph-crawlerLink graph crawl$0.0075 / itemNodepends on rows
nexgenwatch/internal-link-architecture-verifierArchitecture checks$0.05 / page + $0.02 startNo$5.02

Honest take. dabooti is cheaper per page ($0.001 vs $0.002) and bills every page. Here a 25-page client check costs $0 and 100 pages cost $0.15 vs about $0.10 there. Choose this one for free spot checks and for the orphan + broken + sitemap-gap labels with a fix per row; choose dabooti for very large crawls where only price matters.

For AI agents / MCP

When an agent should call this actor: the user asks to find orphan pages, check internal linking, find broken internal links, or see which pages are missing from the sitemap.

Connect the Apify MCP server with only this actor enabled (works in Claude, ChatGPT, Cursor, VS Code, Codex and any MCP client):

https://mcp.apify.com?tools=cygnix_labs/internal-link-audit

Or search for it with the default server: search-actors keywords such as internal links, orphan pages, broken links.

Example call-actor input:

{
"sitemapUrl": "https://example.com/sitemap.xml",
"maxPages": 200,
"weakThreshold": 2,
"maxConcurrency": 5
}

What to read from the result: rows are sorted BROKEN_PAGE → ORPHAN → HAS_BROKEN_LINKS → WEAK → OK; each has url, issue, inlinks, linkedFrom, topAnchors, brokenLinksOnPage and fix. SUMMARY has byIssue counts and linkedButNotInList (internal URLs missing from the sitemap).

Cost control for agents: Keep maxPages at 25 for a free first pass; raise it to cover the whole sitemap for a true orphan check. Pass maxTotalChargeUsd in callOptions to hard-cap spend. This actor is pay-per-event, so it also works with Apify agentic payments (no Apify account needed for the agent).

Example prompt: "Audit internal links on example.com from its sitemap (200 pages) and list orphan pages and broken internal links with fixes."

FAQ

Can I cap my spend? Yes. Set a max charge per run; the actor stops when eventChargeLimitReached is returned and you are not billed beyond that cap. Do sitemap indexes work? Yes. Nested <sitemapindex> files are followed up to depth 2, collecting <loc> URLs until Max pages is reached. Are nofollow links counted? No. Anchors with rel containing nofollow are skipped for both outlink and inlink graphs. How polite is concurrency? Default maxConcurrency is 5 (max 20). Keep it low on production sites so you do not hammer your own server. Does it need proxies or API keys? No. It fetches your pages directly with a polite user-agent. JavaScript-only SPAs? Only links present in the server HTML are audited. Pre-render or use a sitemap of real URLs if the site is client-rendered.

Why does a page show as ORPHAN when my menu links to it? Inlinks are counted only among pages crawled in the run. If the linking page was beyond maxPages, raise the cap. Links added only by JavaScript are not seen.

Integrations

Run via the Apify API, schedule weekly runs, or send results to Google Sheets, Make, Zapier, n8n, Slack or webhooks.

Changelog

  • 0.1.6 (2026-10-18): README rewritten answer-first for search and AI agents: quick facts, comparison re-verified against 6 named actors on 18 Oct 2026, "For AI agents / MCP" section with example input. Price unchanged ($0.002/page, first 25 free).
  • 0.1.2 (2026-10-16): Stronger orphan / internal-links / sitemap-crawl opening.

More SEO and AEO tools by Cygnix Labs

Questions or a feature request? Open an issue on this actor's Issues tab. We answer within 24 hours.