Bulk URL Status Code and Redirect Chain Checker
Pricing
$0.80 / 1,000 url checkeds
Bulk URL Status Code and Redirect Chain Checker
Check thousands of URLs for HTTP status codes, broken links (404, 410, 5xx) and redirect chains. Returns every hop (301, 302, 307, 308), the final URL, response time and key headers. For SEO migrations and link audits. $0.80 per 1,000 URLs.
Pricing
$0.80 / 1,000 url checkeds
Rating
0.0
(0)
Developer
Hay Equipos
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
Paste a list of URLs and get back, for each one, the HTTP status code, whether it is broken, the full redirect chain hop by hop (301, 302, 307, 308), the final URL, the response time and the headers that matter for SEO. Built for site migrations, broken link audits, backlink checks, affiliate link checks and cleaning URL lists before you feed them to other tools.
Price: $0.80 per 1,000 URLs. URLs that give no HTTP answer at all (the domain does not exist, the connection is refused or times out) are reported but free.
What you get for each URL
| Field | Meaning |
|---|---|
statusCode | The first answer, for example 301 |
finalStatusCode | The answer at the end of the redirect chain, for example 200 or 404 |
isBroken | True for a final 4xx or 5xx, a redirect loop, too many hops, or no answer |
ok | True for a final 2xx |
finalUrl | Where the URL really lands |
redirectCount, redirectChain | Every hop with its URL, status code, method and Location header |
redirectsToHttps, changedDomain | Did an http URL move to https, did the redirect leave the original host |
redirectLoop, tooManyRedirects | Redirect problems, flagged |
responseTimeMs | Total time for the whole chain |
contentType, contentLength, lastModified, server, xRobotsTag, cacheControl, hsts | Headers from the final answer |
error | For URLs with no HTTP answer: ENOTFOUND, ECONNREFUSED, Timed out and similar |
Input
{"urls": ["http://apify.com","https://httpbin.org/status/404","https://httpbin.org/redirect/2"],"followRedirects": true,"maxRedirects": 10}
You can also paste a column of URLs into urlsText. Duplicates are removed. Addresses without a scheme get https:// added.
Output example
{"url": "http://apify.com","ok": true,"isBroken": false,"statusCode": 301,"finalStatusCode": 200,"finalUrl": "https://apify.com/","redirectCount": 1,"redirectChain": [{ "url": "http://apify.com/", "statusCode": 301, "method": "HEAD", "location": "https://apify.com/" },{ "url": "https://apify.com/", "statusCode": 200, "method": "HEAD", "location": null }],"redirectsToHttps": true,"changedDomain": false,"contentType": "text/html; charset=utf-8","responseTimeMs": 1956}
How it checks
- A HEAD request first, which does not download the page. If the server refuses HEAD (many answer 403, 404 or 405 to HEAD but serve the page normally), the URL is checked again with a GET that reads at most 64 KB. You can switch this off.
- Redirects are followed by hand so every hop is recorded, with loop detection.
- Many sites are checked in parallel, while requests to the same site are spaced out (3 per second by default, adjustable from 1 to 10).
- 429 and 5xx answers are retried with backoff before they are reported.
- The actor identifies itself honestly as
ApifyLinkCheckerand respects robots.txt by default, including rules written for Apify crawlers. URLs a site closes to automated tools come back as freeskippedrows. Turn this off only for sites you own or may check.
Pricing
Pay per event: $0.0008 per URL checked ($0.80 per 1,000). A URL is charged when a server answered it with any HTTP status, including 404 and 500, because that answer is the result you asked for. No start fee and no platform usage on top. Invalid URLs, URLs with no HTTP answer, and URLs skipped for robots.txt are free.
Limits
- No JavaScript. Redirects done by JavaScript or by a meta refresh tag are not followed; the page's own status code is reported.
- Some sites answer automated requests from cloud servers with 403 or a challenge page. That status is reported as it was received. The actor does not try to get around such blocks.
- Up to 50,000 URLs per run. Speed depends on the sites: a list spread across many hosts runs at hundreds of URLs a minute; a list on one host runs at your per site limit.
FAQ
Is a 404 charged? Yes, when the server returned it, because finding 404s is usually the point. A URL whose domain does not exist is free.
Does it crawl my site to find links? No. It checks exactly the URLs you give it. To get every URL of a site first, run a sitemap extractor and pass its output here.
Can I use it after a site migration? Yes. Give it the old URLs and check that finalStatusCode is 200, redirectCount is 1 and finalUrl is the new page you expect.
Can an AI agent use it? Yes. One array of URLs in, one row per URL out, the same fields every time.