Security Headers Checker: Bulk HTTP Header Scan & A-F Grade avatar

Security Headers Checker: Bulk HTTP Header Scan & A-F Grade

Pricing

from $0.80 / 1,000 url checkeds

Go to Apify Store
Security Headers Checker: Bulk HTTP Header Scan & A-F Grade

Security Headers Checker: Bulk HTTP Header Scan & A-F Grade

Security headers checker for any list of URLs: HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, cookie flags, HTTP to HTTPS redirect and server disclosure, with an A-F grade and fix list. Callable by AI agents via MCP. $1 per 1,000 URLs.

Pricing

from $0.80 / 1,000 url checkeds

Rating

0.0

(0)

Developer

Datawright Labs

Datawright Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

For AI agents: Use when asked to check a website's security headers, HTTP headers, HSTS, Content-Security-Policy, clickjacking protection, cookie flags or HTTP to HTTPS redirect, or to grade site security. Call with urls (URLs or domains; required), optional outputFilter (all, problems, below-grade) and gradeThreshold. Returns one row per URL: grade (A-F), score (0-100), finalUrl, missingHeaders, problems, recommendations, checks (per header), headers, cookies, httpToHttps, tlsValid, techDisclosure, securityTxt. Cost: $0.001 per URL ($1 per 1,000); unreachable URLs and invalid inputs free.

For people: Tell your AI agent "check the security headers of our 40 client websites and list the ones graded C or worse with what to fix" and it hands the list to this tool, then reads back a clean table. No browser extensions, no one-site-at-a-time scanners, and 1,000 URLs cost $1.

Bulk security headers checker for hundreds or thousands of websites in one run. Paste a list of URLs or domains and this HTTP header scanner fetches each page like a browser, follows the redirect chain, and grades the final response's security headers: Strict-Transport-Security (HSTS), Content-Security-Policy (CSP) with unsafe-inline / unsafe-eval / wildcard detection, X-Frame-Options or CSP frame-ancestors (clickjacking), X-Content-Type-Options, Referrer-Policy and Permissions-Policy. It also checks that http:// redirects to https://, that cookies have Secure / HttpOnly / SameSite, that the TLS certificate is valid, that the server doesn't disclose its software version (Server, X-Powered-By, X-AspNet-Version) and whether a security.txt is published. Every URL gets an A-F grade, a 0-100 score and a plain-English problems list with the fix.

No proxies, no API keys and no browser: results export to CSV, Excel, JSON or Google Sheets or run on a schedule as a security header monitor for your sites or your clients'.

What does this security headers checker do?

  • 🛡️ Six key security headers graded with the details that matter: HSTS max-age (180 days minimum), includeSubDomains and preload; CSP that doesn't restrict scripts, allows 'unsafe-inline' without a nonce or hash, 'unsafe-eval' or * / https: script sources, or is Report-Only; obsolete ALLOW-FROM; unsafe Referrer-Policy values; deprecated Feature-Policy.
  • 🔀 Redirects: the full redirect chain (every hop with status code, location and timing), the HTTP to HTTPS redirect of the plain-http version, HTTPS-to-HTTP downgrades, redirect loops.
  • 🍪 Cookie flags for every Set-Cookie along the chain: missing Secure, session-like cookies without HttpOnly, missing or invalid SameSite.
  • 🔐 TLS certificate validity (expired, self-signed, wrong host and untrusted certificates are flagged and graded F, while the headers are still read).
  • 🕵️ Information disclosure: Server: nginx/1.18.0, X-Powered-By: PHP/8.1, X-AspNet-Version and similar version leaks.
  • 📄 security.txt (RFC 9116): contacts and expiry date, expired files flagged.
  • 🅰️ A-F grade and 0-100 score per URL, missingHeaders, problems (scored) and recommendations (optional hardening such as COOP, SameSite, deprecated X-XSS-Protection), plus the raw header values.
  • 🧹 Bulk-friendly input: full URLs, bare domains (example.com -> https://example.com/) or emails, de-duplicated; up to 50 checks in parallel, at most 4 per host.

How the grade is calculated

CheckPoints
Strict-Transport-Security (max-age >= 180 days)20
Content-Security-Policy that restricts scripts safely20
Clickjacking protection (X-Frame-Options or CSP frame-ancestors)15
X-Content-Type-Options: nosniff10
Referrer-Policy (safe value)10
HTTP redirects to HTTPS10
Permissions-Policy5
Cookies with Secure (+ HttpOnly on session cookies)5
No server version disclosure5

A 90-100, B 75-89, C 60-74, D 45-59, F below 45. A page that ends on plain HTTP or has an invalid TLS certificate is always F.

Use cases

  • Website security audits for agencies, MSPs and freelancers: grade every client site in one run and hand over a fix list.
  • Security header monitoring: schedule a weekly run with Only URLs graded below the threshold and get alerted when a deploy drops HSTS or CSP.
  • Vendor and third-party risk: check the public sites of suppliers, SaaS vendors or acquisition targets for basic hygiene.
  • Lead generation for security services: find prospects with missing headers, plain HTTP or outdated server software.
  • Pentest and bug bounty recon: map CSP weaknesses, cookie flags, version leaks and security.txt contacts across many hosts.
  • Compliance evidence (SOC 2, ISO 27001, PCI DSS, OWASP ASVS): export a dated CSV of headers for every public endpoint.

How to use it

  1. Paste URLs or domains into URLs or domains, one per line.
  2. Optionally choose Which URLs to save (all, only problems, only below a grade) and keep the HTTP-to-HTTPS and security.txt checks on.
  3. Click Start, then open the Overview table or export the results. For monitoring, add a Schedule plus an email, Slack or webhook integration in Apify Console.

Input example

{
"urls": ["apify.com", "https://github.com/login", "example.com"],
"checkHttpRedirect": true,
"checkSecurityTxt": true,
"outputFilter": "all"
}

Output example

{
"url": "https://example.com/",
"status": "ok",
"grade": "F",
"score": 30,
"finalUrl": "https://example.com/",
"finalStatusCode": 200,
"https": true,
"tlsValid": true,
"redirectCount": 0,
"httpToHttps": { "url": "http://example.com/", "redirectsToHttps": false, "firstHopStatus": 200, "note": "Served over plain HTTP without a redirect to HTTPS" },
"missingHeaders": ["strict-transport-security", "content-security-policy", "x-frame-options", "x-content-type-options", "referrer-policy", "permissions-policy"],
"problems": [
"Missing Strict-Transport-Security (HSTS) header",
"Missing Content-Security-Policy header",
"No clickjacking protection (missing X-Frame-Options and CSP frame-ancestors)",
"Missing X-Content-Type-Options: nosniff",
"Missing Referrer-Policy header",
"Missing Permissions-Policy header",
"HTTP version does not redirect to HTTPS (page served over plain HTTP)"
],
"recommendations": ["Consider Cross-Origin-Opener-Policy: same-origin (isolates your window from cross-origin popups)", "Publish a /.well-known/security.txt with a Contact (RFC 9116)"],
"checks": { "hsts": { "pass": false, "points": 0, "max": 20, "maxAgeSeconds": null }, "csp": { "pass": false, "points": 0, "max": 20 } },
"cookies": [],
"server": "cloudflare",
"techDisclosure": [],
"securityTxt": { "found": false, "url": "https://example.com/.well-known/security.txt" },
"checkedAt": "2026-10-24T22:30:00.000Z"
}

checks has one entry per scored check (shortened above) and headers holds the raw values of every security-relevant header. URLs that can't be reached (DNS failure, timeout, refused) come back as status: "error" and are free. A SUMMARY record in the key-value store has counts per grade.

How much does a security headers check cost?

You pay $0.001 per URL checked ($1 per 1,000 URLs). Unreachable URLs and invalid inputs are free, URLs skipped by Which URLs to save are free too, and the HTTP-to-HTTPS and security.txt requests are included. No start fee.

JobURLsCost
Your 10 sites, weekly header monitor~40/month~$0.04/month
Agency: 300 client sites, monthly audit300/month$0.30/month
Scan 20,000 company websites for missing headers20,000$20
  • Apify's free plan includes $5 of monthly credit, enough for about 5,000 URLs a month.
  • Paid Apify plans get automatic discounts: Silver -10%, Gold and above -20%.
  • Set Maximum cost per run to cap spend; the Actor stops cleanly at the limit.

Bulk security headers checker vs. the alternatives

This Actorsecurityheaders.com / browser extensionscurl -I by handSecurity scanner subscriptions
Many URLs in one go✅ thousands per run❌ one at a time✅ after you write the script✅
Grade + plain-English fix list✅✅❌✅
CSP quality (unsafe-inline, unsafe-eval, wildcards)✅partly❌✅
HTTP to HTTPS redirect, redirect chain, cookies, TLS validity✅ in one rowpartlyDIY✅
CSV / Excel / JSON / Sheets export, schedules, webhooks✅❌DIYvaries
Callable by AI agents (MCP)✅❌❌rarely
Cost model$1 per 1,000 URLs, no subscriptionfree, manualfree + your timemonthly plan

Use it as an API (Python, JavaScript, cURL)

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("datawright-labs/security-headers-checker").call(run_input={"urls": ["example.com", "https://github.com/login"]})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["url"], item.get("grade"), item.get("score"), item.get("missingHeaders"))

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('datawright-labs/security-headers-checker').call({ urls: ['example.com'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

cURL

curl -X POST "https://api.apify.com/v2/acts/datawright-labs~security-headers-checker/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" -d '{"urls":["example.com"],"outputFilter":"all"}'

Use it from your AI agent (MCP)

Your AI assistant or agent can run this Actor as a tool through Apify's MCP server, so it can audit security headers on its own while you chat. Add this server to any MCP client that supports remote (Streamable HTTP) servers:

{
"mcpServers": {
"datawright-security-headers-checker": {
"url": "https://mcp.apify.com?tools=datawright-labs/security-headers-checker"
}
}
}

On first use your browser opens to sign in to Apify (OAuth). If your client can't do OAuth, add "headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" } instead. The tool shows up as datawright-labs--security-headers-checker, with the same input fields as above, and the agent reads the results with get-dataset-items. Then just ask, for example:

Check the security headers of these 25 websites and list the ones graded C or worse, with the top fix for each.

Want several Datawright tools at once? Comma-separate them: https://mcp.apify.com?tools=datawright-labs/security-headers-checker,datawright-labs/ssl-certificate-checker. Runs are billed per result, exactly like normal runs.

FAQ

How do I check the security headers of a website?

Paste the URL (or just the domain) and run. Each row shows the grade, which of the six key headers are missing or weak, and why. Use headers for the exact values the server sent after all redirects.

Which security headers should every website have?

At minimum Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options: nosniff, clickjacking protection (X-Frame-Options or CSP frame-ancestors) and Referrer-Policy, plus Permissions-Policy. X-XSS-Protection is deprecated and Expect-CT is obsolete; this checker recommends removing them rather than rewarding them.

Does it check whether HTTP redirects to HTTPS?

Yes. With Check HTTP to HTTPS redirect on, it also requests the http:// version and records whether (and after how many hops) it reaches HTTPS. Hosts that don't answer on port 80 at all serve nothing unencrypted and pass.

Why did a well-known site get a low grade?

Many big sites skip headers like CSP or Permissions-Policy on their home page. The grade only reflects the headers on the URL you gave; check login or app pages separately. If a site answers with a bot-protection page (403/503), the headers of that page are graded and a note is added to recommendations.

Is this a vulnerability scanner?

No. It sends normal GET requests (plus one for http:// and one for security.txt) and reads response headers, like a browser does. It doesn't probe for vulnerabilities, so it's safe to run on any public site.

Does it handle invalid or expired SSL certificates?

Yes. The page is still fetched so its headers can be graded, the certificate error (expired, self-signed, wrong host, untrusted) is added to problems, tlsValid is false and the grade is F. For full certificate details and expiry monitoring use the SSL Certificate Checker below.

More tools from Datawright Labs

Tip: pair it with the SSL Certificate Checker and the SPF, DMARC & DKIM Checker for a full domain security audit.

Made by Datawright Labs: reliable, fairly priced web data tools. Questions or a missing feature? Open an issue on the Issues tab; we usually reply within a day.