Bulk HTTP Status Code & Redirect Chain Checker avatar

Bulk HTTP Status Code & Redirect Chain Checker

Pricing

from $1.00 / 1,000 urls

Go to Apify Store
Bulk HTTP Status Code & Redirect Chain Checker

Bulk HTTP Status Code & Redirect Chain Checker

Check HTTP status codes and full redirect chains of up to 100,000 URLs. Finds 404s, 5xx errors, redirect chains and loops, 302 instead of 301, missing HTTPS redirects, and verifies relaunch redirect maps. No proxies, pay per URL.

Pricing

from $1.00 / 1,000 urls

Rating

0.0

(0)

Developer

Tim Tonat

Tim Tonat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

What does Bulk HTTP Status Code & Redirect Chain Checker do?

This Actor checks the HTTP status code and the full redirect chain of up to 100,000 URLs in one run. For every URL you get the first status code, every redirect hop, the final URL and its status code, plus issue codes for the problems that hurt SEO and users.

It also verifies redirect maps after a website relaunch: paste lines like old URL -> new URL and see at a glance which redirects land on the wrong page.

No proxies and no browser, so runs are fast and cheap.

Why use this HTTP status checker?

  • Find broken URLs (404, 410, 500) in lists from Google Search Console, sitemaps, backlink tools or old exports
  • Check every redirect hop: redirect chains waste crawl budget and slow down users
  • Catch 302 instead of 301: temporary redirects don't pass rankings reliably
  • Detect redirect loops and URLs with too many redirects
  • Make sure http:// redirects to https://
  • Website relaunch / migration: check hundreds of old URLs against their expected new targets
  • Monitor link lists on a schedule and export to Google Sheets, Excel or CSV
  • Pay per URL: URLs that can't be reached at all are free

What does it check?

Issue codeMeaning
INVALID_REDIRECTA redirect status (301, 302, …) without a valid Location header
CLIENT_ERRORFinal status is 4xx (404 not found, 410 gone, 403 forbidden, …)
SERVER_ERRORFinal status is 5xx
REDIRECT_CHAINMore than one redirect before the final page
REDIRECT_LOOPThe chain leads back to a URL it already visited
TOO_MANY_REDIRECTSMore than 10 redirects
TEMPORARY_REDIRECTA 302, 303 or 307 redirect in the chain instead of 301 or 308
HTTP_TO_HTTPS_MISSINGAn http:// URL does not end on https://
WRONG_TARGETRedirect map only: the final URL is not the expected target
UNREACHABLENo HTTP response at all (DNS error, timeout, connection refused). Not charged
INVALID_URLThe input line is not a valid URL. Not charged

What data does it return?

FieldDescription
urlChecked URL
statusCodeStatus code of the first response
finalUrl, finalStatusCodeWhere the chain ends
redirectCountNumber of redirects followed
redirectChainEvery hop with url, statusCode and location
responseTimeMsTotal time for the whole chain
contentTypeContent type of the final response
expectedUrl, matchesExpectedRedirect map only
issuesIssue codes, see above
errorNetwork error, if no response was received

A Summary (key-value store record SUMMARY) counts all URLs by final status code and by issue.

How to check status codes and redirects in bulk

  1. Click Try for free.
  2. Paste your URLs into URLs, one per line. Or paste old -> new lines into Redirect map.
  3. Click Start.
  4. Sort the Overview table by status or issues, or download it as CSV or Excel.

How much does it cost?

This Actor uses pay per event: a fixed price per checked URL, and platform usage is included. The current price is shown in the Pricing tab. URLs that can't be reached at all and invalid input lines are not charged.

Input

See the Input tab for all options.

{
"urls": ["http://example.com", "https://example.com/old-page"],
"redirectMap": ["https://example.com/old-shop -> https://example.com/shop/"],
"method": "HEAD",
"timeoutSecs": 15,
"concurrency": 10
}

Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

{
"url": "http://example.com/old-shop",
"statusCode": 301,
"finalUrl": "https://example.com/shop/",
"finalStatusCode": 200,
"redirectCount": 2,
"redirectChain": [
{ "url": "http://example.com/old-shop", "statusCode": 301, "location": "https://example.com/old-shop" },
{ "url": "https://example.com/old-shop", "statusCode": 302, "location": "https://example.com/shop/" },
{ "url": "https://example.com/shop/", "statusCode": 200, "location": null }
],
"responseTimeMs": 412,
"contentType": "text/html; charset=utf-8",
"expectedUrl": "https://example.com/shop/",
"matchesExpected": true,
"issues": ["REDIRECT_CHAIN", "TEMPORARY_REDIRECT"],
"error": null
}

Don't have a URL list yet? The SEO Site Audit crawls a whole website and finds broken internal links on its own.

FAQ

Why HEAD requests?

HEAD asks only for the headers, so checks are fast and light on the server. Some servers answer HEAD with a wrong error code, so every error response is double-checked with a GET request. Choose GET if you want only GET requests.

Does it run JavaScript redirects?

No. It follows HTTP redirects (301, 302, 303, 307, 308), like search engines do on the first pass. Redirects done with JavaScript or <meta http-equiv="refresh"> are not followed.

Some sites return 403 for every URL

Some firewalls (for example Cloudflare bot protection) block automated requests. The 403 is then what bots see, not what browsers see. Try another User agent in the advanced options.

Will it overload a server?

It uses 10 parallel requests by default. If all URLs are on one small server, lower Parallel requests.

Something does not work

Please open an issue in the Issues tab with the URL and the run ID. You can also start the Actor programmatically from the API tab.