🛡️ Security Headers Checker avatar

🛡️ Security Headers Checker

Pricing

from $7.00 / 1,000 results

Go to Apify Store
🛡️ Security Headers Checker

🛡️ Security Headers Checker

Audit HTTP security headers in bulk across hundreds of websites. Extract OWASP compliance grades and detect missing HSTS or CSP directives instantly.

Pricing

from $7.00 / 1,000 results

Rating

0.0

(0)

Developer

太郎 山田

太郎 山田

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Security Headers Checker API | OWASP Audit

Audit HTTP responses across hundreds of target websites instantly using this high-performance security headers checker. Engineering and DevSecOps teams rely on this solution to extract critical security header data and automatically assess their web infrastructure against strict OWASP guidelines. Instead of relying on manual browser checks or building custom scrapers, you can schedule weekly bulk audits to continuously monitor your corporate portfolio for server configuration regressions. By feeding it a list of URLs, the auditor visits each website, analyzes the HTTP headers, and grades every response on a precise 0-100 scale. It assigns a clear A-F score while pinpointing critical missing directives such as HSTS, Content-Security-Policy, X-Content-Type-Options, and X-Frame-Options. Security researchers utilize these structured JSON results to track compliance score changes over time and integrate alerts directly into CI/CD pipelines to warn developers immediately when a new vulnerability is introduced into the environment. Whether you are aiming to improve site trust for SEO or enforcing strict pipeline compliance, every run outputs exact fix recommendations, the overall security grade, and a complete breakdown of successful and failed header checks. Run the tool to scrape compliance details and export data seamlessly.

Store Quickstart

  • Start with store-input.example.json to validate grading and output shape on three known URLs.
  • If that matches your workflow, switch to store-input.templates.json and pick one of:
    • Quickstart (Dataset) for a cheap first run
    • Batch Audit for broader site portfolios
    • Weekly Compliance Monitor for recurring audits with snapshots
    • Webhook Alert for automated compliance notifications

Key Features

  • 🛡️ 10 OWASP headers checked — HSTS, CSP, X-Frame-Options, Referrer-Policy, and more
  • 📊 Security scoring — 0-100 with A-F grade per site
  • 💡 Fix recommendations — Exact header values to add (e.g., Strict-Transport-Security: max-age=31536000)
  • 🔄 Change tracking — Detects grade/score changes between runs
  • 📋 Bulk processing — Check up to 200 URLs per run
  • 🪝 Webhook + CI/CD — Use in security pipelines

Use Cases

WhoWhy
DevelopersAutomate recurring data fetches without building custom scrapers
Data teamsPipe structured output into analytics warehouses
Ops teamsMonitor changes via webhook alerts
Product managersTrack competitor/market signals without engineering time

Input

FieldTypeDefaultDescription
urlsarrayprefilledList of URLs to audit security headers for. Maximum 200 per run.
followRedirectsbooleantrueFollow HTTP redirects and check the final URL's headers.
deliverystring"dataset"How to deliver results. 'dataset' saves to Apify Dataset (recommended), 'webhook' sends to a URL.
webhookUrlstringWebhook URL to send results to (only used when delivery is 'webhook'). Works with Slack, Discord, or any HTTP endpoint.
snapshotKeystring"security-headers-snapshots"Key name for storing snapshots (used for change detection between runs).
concurrencyinteger5Maximum number of parallel requests. Higher = faster but may trigger rate limits.
dryRunbooleanfalseIf true, runs without saving results or sending webhooks. Useful for testing.

Input Example

{
"urls": ["https://google.com", "https://github.com", "https://example.com"],
"followRedirects": true,
"concurrency": 5
}

Output

FieldTypeDescription
metaobject
resultsarray
results[].urlstring (url)
results[].finalUrlstring (url)
results[].statusCodenumber
results[].headersobject
results[].scoreobject
results[].changesarray
results[].errornull
results[].checkedAttimestamp

Output Example

{
"url": "https://github.com",
"score": { "total": 75, "grade": "B" },
"statusCode": 200,
"headers": {
"strict-transport-security": "max-age=31536000; includeSubdomains; preload",
"x-frame-options": "deny",
"x-content-type-options": "nosniff"
},
"score": {
"total": 75,
"grade": "B",
"details": [
{ "header": "strict-transport-security", "status": "pass", "points": 20 },
{ "header": "content-security-policy", "status": "missing", "points": 0, "note": "Missing. Add a Content-Security-Policy header" }
]
}
}

API Usage

Run this actor programmatically using the Apify API. Replace YOUR_API_TOKEN with your token from Apify Console → Settings → Integrations.

cURL

curl -X POST "https://api.apify.com/v2/acts/taroyamada~security-headers-checker/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "urls": ["https://google.com", "https://github.com", "https://example.com"], "followRedirects": true, "concurrency": 5 }'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("taroyamada/security-headers-checker").call(run_input={
"urls": ["https://google.com", "https://github.com", "https://example.com"],
"followRedirects": true,
"concurrency": 5
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('taroyamada/security-headers-checker').call({
"urls": ["https://google.com", "https://github.com", "https://example.com"],
"followRedirects": true,
"concurrency": 5
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Tips & Limitations

  • Schedule weekly runs against your production domains to catch config drift.
  • Use webhook delivery to pipe findings into your SIEM (Splunk, Datadog, Elastic).
  • For CI integration, block releases on critical severity findings using exit codes.
  • Combine with ssl-certificate-monitor for layered cert + headers coverage.
  • Findings include links to official remediation docs — share with dev teams via the webhook payload.

FAQ

Is running this against a third-party site legal?

Passive public-header scanning is generally permitted, but follow your own compliance policies. Only scan sites you have authorization for.

How often should I scan?

Weekly for production domains; daily if you have high config-change velocity.

Can I export to a compliance tool?

Use webhook delivery or Dataset API — formats map well to Drata, Vanta, OneTrust import templates.

Is this a penetration test?

No — this actor performs passive compliance scanning only. No exploitation, fuzzing, or auth bypass.

Does this qualify as a SOC2 control?

This actor produces evidence artifacts suitable for SOC2 CC7.1 (continuous monitoring). It is not itself a SOC2 certification.

Security & Compliance cluster — explore related Apify tools:

Cost

Pay Per Event:

  • actor-start: $0.01 (flat fee per run)
  • dataset-item: $0.003 per output item

Example: 1,000 items = $0.01 + (1,000 × $0.003) = $3.01

No subscription required — you only pay for what you use.

⭐ Was this helpful?

If this actor saved you time, please leave a ★ rating on Apify Store. It takes 10 seconds, helps other developers discover it, and keeps updates free.

Bug report or feature request? Open an issue on the Issues tab of this actor.