HTTP Probe -- TLS, Security Headers, Redirects avatar

HTTP Probe -- TLS, Security Headers, Redirects

Pricing

from $2.00 / 1,000 record scrapeds

Go to Apify Store
HTTP Probe -- TLS, Security Headers, Redirects

HTTP Probe -- TLS, Security Headers, Redirects

Bulk site-health probe: TLS certificate, security-header grading (CSP, HSTS, X-Frame-Options, Permissions-Policy + 5 others, A/B/C/D/F grade), redirect chain, TTFB, HTTP/2 + HTTP/3, IPv6 reachability. Built for devops, security, and CI pipelines.

Pricing

from $2.00 / 1,000 record scrapeds

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

5

Monthly active users

2 days ago

Last modified

Share

Bulk SSL Certificate & Security Headers Checker (HTTP Probe)

A bulk SSL certificate checker and security headers checker in a single record per URL: TLS certificate and expiry monitoring, security-header grade (A+ through F), HSTS and CSP audit, redirect chain, TTFB, HTTP/2 and HTTP/3 negotiation, and IPv6 reachability. Pure Node, no browser.


SSL Certificate Monitoring & Security Headers Features

  • TLS certificate capture: issuer, subject, validity window, daysToExpiry, signature algorithm, SAN list, serial number, OCSP stapling.
  • Security-header grading modeled after securityheaders.com — A+ / A / B / C / D / F across the standard nine (CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, COOP, COEP, CORP).
  • Lists every missing header so you can hand the row to a developer and say "this".
  • Full redirect-chain capture (up to 10 hops) with status codes and from/to.
  • HTTP/2 detection via ALPN, HTTP/3 detection via the Alt-Svc header.
  • Optional IPv6 reachability probe — resolves AAAA, opens a family:6 TLS connection, records the boolean.
  • Bare hosts auto-prefix to https://. Duplicates are removed before probing.

Who Uses Site Health Probe Data?

  • DevOps and SRE — track SSL expiry windows across portfolios so a forgotten cert never takes a service down.
  • Security teams — audit CSP, HSTS, and frame-ancestors posture across thousands of subdomains in one run.
  • CI pipelines — fail a build when a deployment regresses on security headers or HTTPS posture.
  • Penetration testers — bulk-fingerprint TLS, HTTP/2, HTTP/3, and IPv6 surface area before a deeper engagement.
  • Compliance auditors — produce evidence of TLS hygiene across a portfolio without writing a custom probe each quarter.

How HTTP Probe Works

  1. Pass in a list of URLs (or bare hosts; they auto-prefix to https://). Duplicates are dropped.
  2. For each URL the actor runs a TLS handshake (with ALPN h2 negotiation), then issues an HTTP request — preferring HTTP/2 when negotiated, falling back to HTTP/1.1.
  3. If followRedirects is on, every hop is captured and walked up to 10 levels with cycle detection.
  4. The header grader checks the configured set, computes the A+ through F grade, and the row also records HTTP/3 (Alt-Svc) and optional IPv6 reachability.

Input

{
"urls": ["https://example.com/", "https://github.com/", "https://cloudflare.com/"],
"maxItems": 5,
"followRedirects": true,
"checkHeaders": [
"content-security-policy",
"strict-transport-security",
"x-frame-options",
"x-content-type-options",
"referrer-policy",
"permissions-policy",
"cross-origin-opener-policy",
"cross-origin-embedder-policy",
"cross-origin-resource-policy"
],
"runIPv6": false,
"timeoutSec": 15,
"concurrency": 25
}
FieldTypeDefaultDescription
urlsarrayrequiredURLs (https://example.com/) or bare hosts (example.com). Bare hosts auto-prefix to https://.
maxItemsinteger5Cap on URLs probed after dedup. Range 1-10000.
followRedirectsbooleantrueFollow up to 10 redirects and log each hop.
checkHeadersarraythe standard nineSecurity headers to grade.
runIPv6booleanfalseProbe IPv6 (AAAA + family:6 TLS connect). Records ipv6Reachable.
timeoutSecinteger15Per-URL HTTP timeout in seconds. Range 3-60.
concurrencyinteger25Parallel probes. Hard cap at 50 to avoid socket exhaustion.

SSL & Security Headers Output Fields

{
"url": "https://cloudflare.com/",
"finalUrl": "https://www.cloudflare.com/",
"status": 200,
"redirectChain": ["301 https://cloudflare.com/ -> https://www.cloudflare.com/"],
"ttfbMs": 142,
"totalMs": 487,
"ssl": {
"subject": "Cloudflare, Inc. / cloudflare.com",
"issuer": "Google Trust Services / WE1",
"validFrom": "2026-03-12T20:59:51.000Z",
"validTo": "2026-06-10T21:59:46.000Z",
"daysToExpiry": 41,
"sigAlg": "ecdsa-with-SHA256",
"sans": ["cloudflare.com", "*.cloudflare.com"],
"serialNumber": "AABBCC",
"ocspStapling": true
},
"cert_valid": true,
"cert_error": null,
"tls_protocol": "TLSv1.3",
"tls_cipher": "TLS_AES_128_GCM_SHA256",
"http_redirects_to_https": true,
"http_probe_final_url": "https://www.cloudflare.com/",
"hsts_max_age": 63072000,
"hsts_include_subdomains": true,
"hsts_preload": true,
"cookies": [{ "name": "sid", "secure": true, "httpOnly": true, "sameSite": "Lax" }],
"server_header": "cloudflare",
"x_powered_by": null,
"headers": {
"raw": {
"strict-transport-security": "max-age=63072000; includeSubDomains; preload",
"content-security-policy": "default-src 'self'"
},
"missingSecurity": ["cross-origin-embedder-policy"],
"gradeApprox": "B"
},
"http2": true,
"http3": true,
"ipv6Reachable": false,
"probedAt": "2026-04-30T12:00:00.000Z",
"error": ""
}
FieldTypeDescription
urlstringProbed URL (input).
finalUrlstringURL after redirects (same as url when none followed).
statusnumberHTTP status code of the final response.
redirectChainarrayOrdered list of hops as 'STATUS from -> to' strings.
ttfbMsnumberTime to first byte in ms.
totalMsnumberTotal elapsed time in ms (TLS + request + body).
sslobjectissuer, subject, validFrom, validTo, daysToExpiry, sigAlg (signature algorithm), sans, serialNumber, ocspStapling (true when the server staples an OCSP response).
cert_validbooleanTrue when the certificate verifies and matches the host; false for expired, self-signed, wrong-host or untrusted certificates (the header grade is then F).
cert_errorstringWhy verification failed, e.g. CERT_HAS_EXPIRED, DEPTH_ZERO_SELF_SIGNED_CERT, ERR_TLS_CERT_ALTNAME_INVALID; null when valid.
tls_protocolstringNegotiated TLS version, e.g. TLSv1.3.
tls_cipherstringNegotiated cipher suite.
http_redirects_to_httpsbooleanTrue when http:// on port 80 redirects to https://; null when port 80 is unreachable.
http_probe_final_urlstringWhere the http:// probe ended up.
hsts_max_agenumberHSTS max-age in seconds; null when the header is absent.
hsts_include_subdomainsbooleanHSTS includeSubDomains; null when the header is absent.
hsts_preloadbooleanHSTS preload; null when the header is absent.
cookiesarrayOne {name, secure, httpOnly, sameSite} per Set-Cookie on the final response (values are never recorded).
server_headerstringServer response header; null when absent.
x_powered_bystringX-Powered-By response header; null when absent.
headersobject{raw, missingSecurity, gradeApprox}.
http2booleanTrue when the server negotiated HTTP/2 via ALPN.
http3booleanTrue when the server advertises HTTP/3 via Alt-Svc.
ipv6ReachablebooleanTrue when the IPv6 probe connected (only meaningful when runIPv6=true).
probedAtstringISO timestamp when the probe completed.
errorstringError message on failure (empty on success).

Grade rules

  • A+ — every wanted header present, HSTS includes preload, HSTS max-age >= 1 year, CSP defined and free of unsafe-inline / unsafe-eval.
  • A — every wanted header present, no A+ bonus.
  • B — 7-8 of 9 present.
  • C — 5-6 present.
  • D — 3-4 present.
  • F — fewer than 3 present, or no headers received at all.

Pricing

Two events. Basic probes are cheap. Full audits — runIPv6=true AND followRedirects=true AND the full standard nine headers graded — bill at the premium rate because they spend more time on the wire.

EventPrice
Actor start$0.10
Basic probe$0.002
Full audit$0.004
VolumeBasicFull audit
100 URLs$0.30$0.50
1,000 URLs$2.10$4.10
10,000 URLs$20.10$40.10

Limits

  • maxItems caps at 10,000 per run.
  • The Apify console tester has a 5-minute timeout — keep maxItems low (default 5) for in-browser testing.
  • concurrency caps at 50 to avoid socket exhaustion on the runner.
  • TLS handshake timeout is fixed at 8 seconds. HTTP request timeout defaults to 15 s, max 60 s.
  • Up to 10 redirects per URL; cycles are detected via the visited-set and short-circuited.
  • IPv6 reachability is opt-in. Many runners have IPv6 disabled at the host level — if you need definitive IPv6 results, run on a runner you control.

FAQ

How do I check SSL certificate expiry for many sites at once? Pass your list of URLs and read ssl.daysToExpiry on each output row. One run grades the whole portfolio, so a forgotten cert surfaces before it expires.


  • DNS Domain Audit — pair for full DNS + WHOIS + email-auth + TLS posture per domain.
  • Sitemap Walker Pro — discover URLs across a site, then probe each one.
  • Structured Data Validator Pro — combine for SEO + security audits in the same run.

Need More Features?

Useful queued additions: TLS cipher details, certificate-chain depth, HSTS preload-list lookup, CT-log SCT count, MTA-STS / TLS-RPT, BIMI, CAA enforcement check. File an issue to vote one up.

Why Use SSL & Security Headers Checker?

  • One row, full picture — TLS, headers, redirects, HTTP/2/3, IPv6, and timings in a single record. Sortable, filterable, and ready for a dashboard.
  • Cheap at scale — $0.002 per basic probe. 10,000 sites for $20 puts the spreadsheet you've been maintaining out of business.
  • Lean by design — fast, cheap and hard to break, for what is fundamentally a TLS handshake and a HEAD request.

Built by OrbTop.


Further reading: Technical Data Utilities: DNS Audits, SSL Checks, Satellite Elements, and Bulk Parsing