URL Status & Redirect Chain Checker: bulk HTTP status codes avatar

URL Status & Redirect Chain Checker: bulk HTTP status codes

Pricing

$1.00 / 1,000 url checkeds

Go to Apify Store
URL Status & Redirect Chain Checker: bulk HTTP status codes

URL Status & Redirect Chain Checker: bulk HTTP status codes

HTTP status code and full redirect chain for up to 500 URLs per run: every hop with its status and target, the final URL and status, loop detection, HTTP-to-HTTPS upgrades, content type, server and response time. Dead links are delivered as rows, not hidden. Pay per URL.

Pricing

$1.00 / 1,000 url checkeds

Rating

0.0

(0)

Developer

Steadydata Team

Steadydata Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

HTTP status code and full redirect chain for up to 500 URLs per run: every hop with its status and target, the final URL and status, loop detection, HTTP-to-HTTPS upgrades, content type, server and response time. Dead links are delivered as rows, not hidden. Pay per URL.

Why this scraper

  • Only delivered results are charged. Inputs that fail come back as clear error records at no cost.
  • One small request per hop, no browser and no page body: a chain of redirects costs a handful of header-only requests. Measured on the platform: seven URLs, including a redirect chain, a 404, a dead host and a robots-blocked page, for two hundredths of a cent.
  • The whole chain, not just the end: every hop with its status code and target, the final URL and status, loop detection, HTTP-to-HTTPS upgrade, content type, server header and response time. Dead links come back as rows with reachable false and a one-word failureReason (dns, timeout, ssl, connection), which is what a link checker is for. Every URL and every hop is checked against the host's robots.txt first.

Who this is for

Paste URLs or bare domains in urls (up to 500 per run), set maxRedirects (default 10, ceiling 20) and timeoutSeconds (default 15). Every row carries the URL, the first status code, the final URL and its status, ok (the chain ends in a 2xx), reachable, the number of redirects, the chain as a list of status target strings, loop and https-upgrade flags, content type, server, response time in milliseconds, a failure reason when something broke, and the time of the check.

Who this is not for

This is an HTTP check, not a rendering: JavaScript and meta-refresh redirects are not followed, and a page that answers 200 with an error message inside still counts as ok. Sites that block datacenter traffic answer with their block status (often 403), which is delivered as the honest result. A URL, or a hop in its chain, that the site's robots.txt disallows is not fetched: the URL itself becomes a free ROBOTS_DISALLOWED error row, a disallowed hop ends the chain with failureReason robots. redirectCount counts followed hops; when the cap is reached the row says too_many_redirects.

Input example

{
"urls": [
"http://github.com",
"https://example.com/missing-page",
"apify.com"
],
"maxRedirects": 10,
"timeoutSeconds": 15
}

Output example

  • url
  • statusCode
  • finalUrl
  • finalStatusCode
  • ok
  • reachable
  • redirectCount
  • redirectChain
  • redirectLoop
  • httpsUpgrade
  • contentType
  • server
  • responseMs
  • failureReason
  • checkedAt

Error codes: INVALID_URL, ROBOTS_DISALLOWED.

One delivered row looks like this:

{
"url": "http://github.com/",
"statusCode": 301,
"finalUrl": "https://github.com/",
"finalStatusCode": 200,
"ok": true,
"reachable": true,
"redirectCount": 1,
"redirectChain": [
"301 https://github.com/"
],
"redirectLoop": false,
"httpsUpgrade": true,
"contentType": "text/html",
"server": "github.com",
"responseMs": 159,
"failureReason": null,
"checkedAt": "2026-09-16T18:25:31Z",
"status": "ok"
}

Pricing

Pay per event: one url-checked event per delivered result. No charge for inputs that fail, no separate platform-usage surcharge.

Free Apify plan: this actor delivers up to 25 rows per run for accounts on the Apify free plan, and then stops with a message. That limit is set by us, not by Apify. It exists so the actor keeps paying for itself for the people who do pay. Any paid Apify plan runs it at full size, billed per delivered row, with failed rows never charged.

Reviews: if this actor saves you time, a short review on this page is the one thing that helps most. Ratings are what other buyers look at first, and we have no other way to ask.

FAQ

Are broken links charged? Yes, a dead link is a delivered answer (reachable false with the reason). Only invalid input and robots-disallowed URLs are free.

Does it follow the redirects for me? Yes, up to maxRedirects hops, and it reports each one, so a 301 to a 302 to a 200 shows as a chain of two.

Can I check a whole site? Feed it the output of the Sitemap URLs actor below; 500 URLs per run, run it as often as you like.

Why is my page 403 here but fine in my browser? The check comes from a datacenter address and some sites refuse those. The row shows exactly what such a visitor gets.

Does it respect robots.txt? Yes, longest-match rules per host, for the URL and for every hop.

Is personal data collected? redirectChain entries read 301 https://example.com/new; responseMs is the time to the first response, headers only; checkedAt is the UTC time of the check.

What happens when the source changes? Sources change from time to time; that is the nature of this work. The actor is monitored daily and fixed fast, and while it is broken you are not charged, because only delivered results cost anything.