Website Health Report avatar

Website Health Report

Pricing

Pay per event

Go to Apify Store
Website Health Report

Website Health Report

Comprehensive website health audit in a single run. Checks HTTP status, SSL certificate, DNS resolution, security headers, meta tags, response time, and robots.txt. Returns a unified health score (0-100) with per-category grades.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Categories

Share

Comprehensive website health audit in a single run. Checks HTTP status, SSL certificates, DNS resolution, security headers, meta tags, and response time. Returns a unified health score (0-100) with per-category grades.

What does Website Health Report do?

Website Health Report takes a list of URLs and runs 6 independent checks on each one: HTTP connectivity, SSL certificate validity, DNS resolution, security headers compliance, meta tag completeness, and page performance. Each check produces its own score and grade (A-F), and a weighted overall health score combines them into a single number.

Every issue found is categorized by severity (critical/warning/info) with a specific message explaining the problem.

Use cases

  • Agencies — Run a quick health check on all client websites in one batch
  • DevOps — Monitor SSL expiry, DNS resolution, and security headers across infrastructure
  • SEO professionals — Audit meta tags, canonical links, and Open Graph tags
  • Web developers — Validate new deployments with a single comprehensive check
  • Security teams — Identify missing security headers across domains

Why use Website Health Report?

  • 6 checks in one run — HTTP, SSL, DNS, security headers, meta tags, performance
  • Unified score — Single 0-100 health score with A-F grade
  • Per-category breakdown — Individual scores and grades for each check category
  • Issue tracking — Every problem listed with severity and specific message
  • Batch processing — Audit up to 200 URLs in a single run
  • Fast — Parallel checks per URL, typically 2-5 seconds each

What does it check?

CategoryWeightWhat it checks
HTTP20%Status code, HTTPS, redirect chains, connectivity
SSL20%Certificate validity, expiry date, issuer
DNS10%A records, MX records, NS records, redundancy
Headers20%HSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy
Meta15%Title, description, viewport, charset, Open Graph, canonical, lang
Performance15%Response time, HTML size, inline script/style count

Input parameters

ParameterTypeRequiredDefaultDescription
urlsstring[]YesWebsite URLs to audit
maxUrlsintegerNo50Maximum URLs to audit per run
timeoutPerUrlSecsintegerNo30Timeout per URL in seconds

Output example

{
"url": "https://example.com",
"domain": "example.com",
"healthScore": 76,
"healthGrade": "B",
"httpGrade": "A",
"sslGrade": "A",
"dnsGrade": "A",
"headersGrade": "F",
"metaGrade": "C",
"performanceGrade": "A",
"httpScore": 100,
"sslScore": 95,
"dnsScore": 85,
"headersScore": 20,
"metaScore": 55,
"performanceScore": 100,
"issues": [
{ "category": "headers", "severity": "critical", "message": "Missing security header: strict-transport-security" },
{ "category": "headers", "severity": "warning", "message": "Missing security header: content-security-policy" },
{ "category": "meta", "severity": "warning", "message": "Missing meta description" }
],
"issueCount": 11,
"criticalCount": 1,
"warningCount": 8,
"auditedAt": "2026-03-01T20:00:00.000Z"
}

Grading scale

GradeScore range
A90-100
B75-89
C55-74
D35-54
F0-34

How much does it cost?

This actor uses pay-per-event pricing:

EventPriceDescription
Actor start$0.035Charged once per run
URL audited$0.003Charged per URL audited

Example costs:

  • 1 URL: $0.035 + $0.003 = $0.038
  • 10 URLs: $0.035 + (10 x $0.003) = $0.065
  • 100 URLs: $0.035 + (100 x $0.003) = $0.335

Using the Apify API

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('YOUR_ACTOR_ID').call({
urls: ['https://example.com', 'https://mysite.com'],
maxUrls: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
console.log(`${item.url}: ${item.healthScore}/100 (${item.healthGrade}) — ${item.issueCount} issues`);
item.issues.filter(i => i.severity === 'critical').forEach(i => {
console.log(` CRITICAL: ${i.message}`);
});
});

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("YOUR_ACTOR_ID").call(run_input={
"urls": ["https://example.com", "https://mysite.com"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['url']}: {item['healthScore']}/100 ({item['healthGrade']})")
for issue in item["issues"]:
if issue["severity"] == "critical":
print(f" CRITICAL: {issue['message']}")

Integrations

  • Google Sheets — Export health reports to spreadsheets for client reporting
  • Slack — Get alerts when websites score below a threshold
  • Webhooks — Trigger automated remediation workflows
  • n8n / Make — Schedule weekly health audits with notification pipelines

Tips and best practices

  • Audit all your domains regularly — SSL expiry and header changes can happen without warning
  • Focus on critical issues first: missing HSTS and expired SSL are the highest-risk findings
  • Use maxUrls to batch large domain lists efficiently
  • The issues array is sorted by check order — filter by severity for prioritized action lists
  • Pair with Website Change Monitor for ongoing surveillance after initial audit

Compliance

This actor makes standard HTTP requests to audit publicly accessible websites. It checks SSL certificates via TLS handshake and DNS records via standard resolution. No authentication is used. No private data is accessed.