Broken Link Checker avatar

Broken Link Checker

Pricing

Pay per event

Go to Apify Store
Broken Link Checker

Broken Link Checker

Crawl supplied websites to find dead internal and outbound links with status codes, anchor context, redirect hints, and source pages.

Pricing

Pay per event

Rating

0.0

(0)

Developer

太郎 山田

太郎 山田

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

8 hours ago

Last modified

Share

SEO teams, web operations, agencies, and content QA teams use this actor to turn Public websites supplied by the user into a clean dataset for Site QA & Content Intelligence Pack. Provide focused source inputs, keep the first run small, and expand only after the output shape is useful. Each emitted row includes source context, timestamps, and fields designed for monitoring, QA, research, or workflow handoff.

Store Quickstart

Start with one domain and a shallow crawl depth, then expand depth and URL limits after the first broken-link report is useful.

Recommended first run:

{
"startUrls": [
"https://example.com"
],
"maxDepth": 1,
"limit": 100,
"delivery": "dataset",
"dryRun": false
}

Input examples

Shallow crawl

{
"startUrls": [
"https://example.com"
],
"maxDepth": 1,
"limit": 100,
"delivery": "dataset",
"dryRun": false
}
{
"startUrls": [
"https://example.com/blog"
],
"includeExternalLinks": true,
"maxDepth": 2,
"limit": 200,
"delivery": "dataset",
"dryRun": false
}

Webhook audit

{
"startUrls": [
"https://example.com/docs"
],
"maxDepth": 1,
"delivery": "webhook",
"webhookUrl": "https://example.com/webhook",
"dryRun": false
}

Input Examples

{
"pages": [
"https://example.com/article"
]
}

Example: Bulk site map audit

{
"pages": [
"https://example.com/",
"https://example.com/blog"
],
"maxLinksPerPage": 200
}
{
"pages": [
"https://example.com/"
],
"externalOnly": true,
"maxLinksPerPage": 100
}

Sample output

{
"meta": {
"actorName": "broken-link-checker",
"actorTitle": "Broken Link Checker",
"bundle": "Site QA & Content Intelligence Pack",
"fetchedAt": "2026-05-06T00:00:00.000Z",
"totalRows": 1
},
"rows": [
{
"actorName": "broken-link-checker",
"rowType": "broken_link",
"sourcePage": "https://example.com/docs",
"targetUrl": "https://example.com/missing",
"statusCode": 404,
"anchorText": "old page",
"linkType": "internal",
"fetchedAt": "2026-05-06T00:00:00.000Z"
}
],
"warnings": []
}

Output fields

  • rowType
  • sourcePage
  • targetUrl
  • statusCode
  • anchorText
  • linkType
  • redirectChain
  • severity
  • fetchedAt

Rows also include source URLs, fetch timestamps, warnings when a source is partial, and stable IDs when the workflow supports recurring change detection.

Pricing and no-change runs

$0.001 actor start and $0.008 per broken-link finding row. Healthy/no-issue checks should avoid default dataset charges.

The default dataset is the billable surface. Dry runs, validation-only runs, missing-key warnings, and unchanged recurring polls should not write payable default-dataset rows.

Compliance guardrails

  • Crawl only supplied public sites with reasonable limits.
  • Use for technical SEO, QA, and maintenance workflows.
  • Do not use aggressive crawl settings against sites you do not control.
  • Do not use provider emblems or wording that implies approval by an upstream data provider.

See also

Use these follow-on Actors when you want a capped, decision-ready report instead of more raw rows. They use public or user-provided inputs, respect maxChargeUsd, and do not promise rankings, revenue, conversion lifts, or sales outcomes.