Bulk URL Status Checker โ€” Broken Links, Redirects & SSL avatar

Bulk URL Status Checker โ€” Broken Links, Redirects & SSL

Pricing

from $0.002 / url checked

Go to Apify Store
Bulk URL Status Checker โ€” Broken Links, Redirects & SSL

Bulk URL Status Checker โ€” Broken Links, Redirects & SSL

Check thousands of URLs over plain HTTP: status codes, broken links (404/410/5xx), full redirect chains, response time, content type, page title and SSL certificate expiry. No browser, no login.

Pricing

from $0.002 / url checked

Rating

0.0

(0)

Developer

hiper soft

hiper soft

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

5 hours ago

Last modified

Share

Audit thousands of URLs in one run. Feed the Actor any list of links and it reports each one's HTTP status, whether it's broken, the full redirect chain, response time, content type, page title, and SSL certificate expiry โ€” over plain HTTP, no browser and no login.

Great for broken-link audits, redirect/migration QA, uptime spot-checks, sitemap validation, and SSL-expiry monitoring. Export results to JSON, CSV or Excel.

Bulk URL Status Checker input โ€” a list of URLs with SSL and title checks in the Apify Console

What you get per URL

Bulk URL Status Checker output example โ€” status code, broken/blocked flags, redirect chain and SSL as structured JSON

FieldNotes
statusCodeFinal HTTP status (200, 301, 404, 410, 500, โ€ฆ).
ok / broken / blockedok = 2xx/3xx; broken = genuinely dead (404/410/5xx); blocked = access-restricted (401/403/429, usually bot-protection โ€” try a proxy). Keeps blocks from being mistaken for dead links.
redirectChainEvery hop: {url, status, location} โ€” see exactly where a link lands.
redirectCountNumber of redirects followed.
finalUrlWhere the URL ended up after all redirects.
responseTimeMsEnd-to-end time for the whole chain.
contentType, contentLength, serverFrom the final response headers.
title<title> of successful HTML pages (toggle off for pure speed).
sslFor https: { issuer, validTo, daysToExpiry, authorized } โ€” catch expiring certs.
errorClassified failure: dns-error, timeout, connection-refused, ssl-error, too-many-redirects, โ€ฆ

Why it's more than a status checker

Besides the status code it traces the complete redirect path (not just the final landing), measures latency, grabs the page title so a report is human-readable, and checks the TLS certificate expiry โ€” so one run doubles as a broken-link audit and an SSL-expiry watch.

Input

{
"urls": ["https://apify.com", "https://apify.com/this-page-does-not-exist"],
"checkSsl": true,
"fetchTitle": true,
"maxConcurrency": 20
}
  • urls โ€” links to check, one per line. (Or use startUrls for a request list.)
  • maxRedirects โ€” hops to trace before giving up (default 10).
  • fetchTitle โ€” read <title> of HTML pages (default on; turn off for max speed).
  • checkSsl โ€” report certificate expiry for https URLs (default on).
  • maxConcurrency โ€” URLs checked in parallel (default 20).
  • maxItems โ€” cap total URLs (0 = all).
  • proxyConfiguration โ€” optional; enable for reliable access at scale.

Output (one row per URL)

{
"input": "https://apify.com/this-page-does-not-exist",
"url": "https://apify.com/this-page-does-not-exist",
"statusCode": 404,
"ok": false,
"broken": true,
"redirectCount": 0,
"finalUrl": "https://apify.com/this-page-does-not-exist",
"responseTimeMs": 220,
"contentType": "text/html; charset=utf-8",
"title": "Page not found",
"ssl": { "issuer": "Google Trust Services", "daysToExpiry": 61, "authorized": true },
"error": null
}

Output schema

FieldTypeDescription
inputstring (URL)The original URL you supplied.
urlstring (URL)The URL that was checked.
okbooleanTrue when the URL responded with a 2xx/3xx status.
brokenbooleanTrue when the URL is genuinely dead (404/410/5xx).
blockedbooleanTrue when access was restricted (401/403/429).
statusCodestringFinal HTTP status code after redirects.
finalUrlstring (URL)The URL the request landed on after all redirects.
redirectCountintegerNumber of redirects followed.
redirectChainarrayEach redirect hop with its URL, status and location.
responseTimeMsintegerEnd-to-end response time in milliseconds.
contentTypestringContent-Type header of the final response.
contentLengthstringContent-Length header of the final response.
serverstringServer header of the final response.
titlestring<title> text of successful HTML pages.
sslstringSSL certificate details: issuer, expiry date, days to expiry and whether it is trusted.
errorstringClassified failure reason, or null when the check succeeded.

Pricing

Pay per URL checked. No monthly fee โ€” you only pay for what you run.

FAQ

Do I need an account or API key? No. The Actor works over plain HTTP with no login or API key โ€” just supply your list of URLs.

How many URLs can I check per run? Thousands in a single run. maxItems caps the total (0 = all) and maxConcurrency controls how many URLs are checked in parallel (default 20).

Is bulk URL checking legal? The Actor only reads the HTTP response of the URLs you supply. You are responsible for having the right to audit those targets and for respecting each site's terms and rate limits.

What's the output format? A JSON dataset with one row per URL (status, broken/blocked flags, redirect chain, response time, title, SSL details). Export as JSON, CSV, or Excel from the Apify Console or API.

Can I filter or limit results? Yes. Use maxItems, maxConcurrency, and maxRedirects, and toggle checkSsl and fetchTitle on or off to trade detail for speed.

Can I connect this Actor to other apps? The Bulk URL Status Checker can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. It works with Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API, JavaScript/Python clients and MCP. Or use webhooks to trigger an action whenever a run finishes.

Combine this with other web-diagnostics and archival tools:

Notes

Checks only the HTTP response of URLs you supply. You are responsible for having the right to audit the target URLs.