# Bulk Website Health & 404 Broken Link Checker (`deepaksheoran172/website-health-checker`) Actor

High-speed bulk website health checker, HTTP status verifier, 404 broken link detector, and meta/canonical SEO auditor for B2B lead enrichment in Clay.com and n8n.

- **URL**: https://apify.com/deepaksheoran172/website-health-checker.md
- **Developed by:** [Deepak Sheoran](https://apify.com/deepaksheoran172) (community)
- **Categories:** SEO tools, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 url health & broken link audits

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

<p align="center">
  <img src="https://raw.githubusercontent.com/deepakshe/apify-b2b-super-actors/main/assets/actor_icons/website-health-checker.png" width="96" height="96" alt="Website Health, Uptime & Performance Auditor Icon" style="border-radius: 20px; box-shadow: 0 8px 24px rgba(0,0,0,0.18);" />
</p>

<p align="center">
  <a href="https://apify.com/deepaksheoran172/website-health-checker"><img src="https://img.shields.io/badge/Apify_Store-Active_PPE-blue?style=for-the-badge&logo=apify" alt="Apify Store" /></a>
  <a href="https://apify.com/deepaksheoran172/website-health-checker"><img src="https://img.shields.io/badge/Launch_Discount-60%25_OFF-success?style=for-the-badge" alt="60% Launch Discount" /></a>
  <img src="https://img.shields.io/badge/Architecture-Zero--Proxy_Fast-informational?style=for-the-badge" alt="Zero-Proxy Fast" />
  <img src="https://img.shields.io/badge/QA_Validation-Verified_Pass-brightgreen?style=for-the-badge" alt="Verified QA Pass" />
</p>

## Website Health & Broken Link Checker — Security-Hardened SEO Auditor

> **Stop Paying $199–$499/Month for Heavy SEO Crawler Retainers. Audit 404s, Broken Images, Redirect Loops & Response Latency for $0.001 Base Fee ($1.00 / 1,000 runs).**

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue?logo=apify)](https://apify.com/deepaksheoran172/website-health-checker)
[![Pricing](https://img.shields.io/badge/Pricing-Pay--Per--Event%20\($0.001%20base\)-green)](#cost-anchoring--pricing)
[![Validation Guarantee](https://img.shields.io/badge/🛡️%20Execution-Diagnostic%20Reporting-orange)](#fair-execution-guarantee)
[![MCP Ready](https://img.shields.io/badge/MCP%20Server-Ready-purple)](https://mcp.apify.com/?actors=deepaksheoran172/website-health-checker)

***

### ⚡ The Pain vs. Instant Relief

Broken links destroy conversions, damage buyer trust, and leak hard-won search rankings:

- **The Catastrophic Cost of Broken URLs:** Silent 404s on high-intent landing pages, broken checkout image assets, or 500 server errors on key CTA links cost digital marketing agencies thousands in lost client revenue and wasted ad spend.
- **The 1-Click Solution:** Run lightweight, recursive HTTP crawler audits with SSRF security protection. Discovers dead links, missing image assets, circular redirect loops, and cross-origin leaks in seconds without clunky desktop software.

***

### 💰 Cost Anchoring vs. Legacy SaaS

| Solution | Cost | Setup & Overhead | Performance |
|---|---|---|---|
| **Enterprise Crawlers (Ahrefs, Semrush)** | **$199 – $499 / month** | Monthly subscription lock-in | Restricted crawl credits, heavy dashboards |
| **Desktop Crawlers (Screaming Frog)** | **$259 / year per license** | Local CPU & RAM intensive | Cannot trigger programmatically via webhooks |
| **Website Health & Broken Link Checker** | **$0.001 per run ($1.00 / 1,000 runs)** | **Instant (Zero Setup)** | **Lightweight Python standard library, serverless API** |

*(Pay-Per-Event Primary Event `url-health-check` assessed at $0.001 upon run start. Audits up to configured `maxPages` \[default 20, max 100 pages] under the base fee with zero per-link surcharges. Standard platform compute credits apply; Free plan includes $5.00/month).*

***

### 🛡️ Fair-Execution Guarantee

> **Automated SSRF & Reachability Diagnostics:** If the target URL is unreachable, resolves to private/blocked IP ranges (anti-SSRF protection), or encounters DNS resolution failure, the Actor safely terminates and outputs structured diagnostic records. You never waste compute on unresolvable target domains.

***

### 🚀 Key Capabilities

- **Dead Link (404/500) & Missing Image Discovery:** Inspects hyperlinks (`<a>`) and embedded images (`<img>`) across internal site pages.
- **Redirect Chain & Loop Tracking:** Follows up to 5 redirect hops, flagging circular loops and insecure HTTP-to-HTTPS downgrade hops.
- **Strict SSRF Defense:** Hardened against Server-Side Request Forgery by rejecting private (RFC 1918), loopback, link-local, and cloud metadata IP ranges.
- **Polite Crawling Engine:** Parses `robots.txt` automatically and applies configurable polite delay intervals between page requests.

***

### 🔌 Plug-and-Play Integrations

#### 1. Claude Desktop & Cursor IDE (MCP Server)

Integrate website auditing directly into your agentic workflow:

```json
{
  "mcpServers": {
    "website-health-checker": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-fetch", "https://mcp.apify.com/?actors=deepaksheoran172/website-health-checker"]
    }
  }
}
```

#### 2. Clay.com HTTP Enrichment

Audit outbound prospect websites automatically before launching email campaigns:

- **Method:** `POST`
- **URL:** `https://api.apify.com/v2/acts/deepaksheoran172~website-health-checker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN`
- **Body:**
  ```json
  {
    "startUrl": "https://{{company.domain}}",
    "maxPages": 10,
    "timeout": 8.0
  }
  ```

#### 3. n8n & Make.com Automated Cron

Import our pre-built n8n template (`tool2_website_health_checker_n8n.json`) to trigger automatic weekly health checks of client websites and pipe broken link reports straight into Slack or Jira.

***

### 📥 Input Parameters & 1-Click Prefill

Ready to run instantly — pre-filled with test data so you can click **"Start"** immediately:

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `startUrl` | String | **Yes** | `https://example.com` | Target website URL to crawl and audit. |
| `maxPages` | Integer | No | `20` | Max internal pages to crawl (1–100). |
| `timeout` | Number | No | `10.0` | Request timeout per URL in seconds. |
| `delay` | Number | No | `0.5` | Polite delay between requests (0.25–5.0s). |
| `userAgent` | String | No | Custom UA | Custom HTTP User-Agent header string. |

***

### 📤 Output Artifacts

1. **Dataset**: Granular per-link audit results containing `source_page`, `destination_url`, `status_code`, `issue_type`, and `redirect_chain`.
2. **Key-Value Store**:
   - `HEALTH_CHECK_RESULTS.csv`: Full tabular export ready for client reporting.
   - `SUMMARY_REPORT.json`: High-level broken link totals, crawled page counts, and health score.

***

### ❓ High-Intent B2B FAQs

##### Q: How does this protect against SSRF vulnerabilities?

**A:** Every outbound DNS query resolves against an active firewall filter that blocks `127.0.0.1`, `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, and AWS/GCP instance metadata IP `169.254.169.254`.

##### Q: Can I run this on a scheduled daily or weekly cron?

**A:** Yes. Use Apify Schedules, n8n, Make.com, or a standard curl webhook to trigger recursive site audits on any recurring cron cadence.

##### Q: Does it require browser rendering like Puppeteer or Playwright?

**A:** No. It utilizes a hyper-optimized HTTP engine that downloads only headers and lightweight HTML, saving 95%+ compute cost and completing audits in seconds. *(Note: Single Page Applications where hyperlinks are injected exclusively via client-side JavaScript execution rather than server-rendered HTML will not have JS-rendered links crawled. For client-side dynamic JavaScript crawling, a headless Playwright Actor is recommended).*

***

### 🚀 Ready to Audit Your Website Health?

Audit 404s, broken assets, and redirect loops across your target site in seconds:

1. Click **Try for free** at the top right of this page.
2. Enter your target domain in `startUrl` (e.g. `https://yourwebsite.com`).
3. Download `HEALTH_CHECK_RESULTS.csv` or view granular findings in the Apify Dataset tab.

[![Try Free on Apify](https://img.shields.io/badge/Run%20on%20Apify-Try%20Free%20\($5%20Credit\)-blue?style=for-the-badge\&logo=apify)](https://apify.com/deepaksheoran172/website-health-checker)

# Changelog

This Actor's version history is a separate document: https://apify.com/deepaksheoran172/website-health-checker/changelog.md

# Actor input Schema

## `startUrl` (type: `string`):

The initial website URL to crawl and audit for broken links, images, and health status.

## `maxPages` (type: `integer`):

Maximum number of distinct internal pages to crawl (1 - 100).

## `timeout` (type: `number`):

Timeout in seconds for each HTTP request.

## `delay` (type: `number`):

Polite delay between consecutive requests to prevent target server rate limiting.

## `userAgent` (type: `string`):

Custom User-Agent header string sent with HTTP requests.

## Actor input object example

```json
{
  "startUrl": "https://example.com",
  "maxPages": 20,
  "timeout": 10,
  "delay": 0.5,
  "userAgent": "WebsiteHealthChecker/1.0 (Apify Actor)"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrl": "https://example.com"
};

// Run the Actor and wait for it to finish
const run = await client.actor("deepaksheoran172/website-health-checker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrl": "https://example.com" }

# Run the Actor and wait for it to finish
run = client.actor("deepaksheoran172/website-health-checker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrl": "https://example.com"
}' |
apify call deepaksheoran172/website-health-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,deepaksheoran172/website-health-checker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/MQ4wt5sZNzo1YBAAH/builds/Bqzg9KBHlcUn5SHwY/openapi.json
