Bulk URL Status Checker - Broken Links & Redirect Chains
Pricing
from $0.76 / 1,000 url checkeds
Bulk URL Status Checker - Broken Links & Redirect Chains
Check thousands of URLs at once: status code, full redirect chain, final URL, response time, title, canonical and noindex. Broken links and redirect loops flagged. No browser. dryRun prices a run before you pay; charged only for URLs checked.
Pricing
from $0.76 / 1,000 url checkeds
Rating
0.0
(0)
Developer
Natalia Ivanova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Check thousands of URLs in minutes: HTTP status, the full redirect chain and final URL, response time, content type, server, page title, H1, canonical and noindex. Every URL is classified — ok, redirect, broken, forbidden, server-error, rate-limited, redirect-loop, error — so a spreadsheet filter is all you need to find what is wrong. No browser, no API keys.
What you can do with it
- Broken-link audits — paste the URL list from your sitemap (pair it with the Sitemap URL Extractor), get every 404/410/5xx.
- Migration checks — verify old URLs redirect to the right new ones in one hop; catch chains and loops.
- Uptime and SEO monitoring — schedule daily runs for key pages; alert on status changes,
noindexslipping in, canonicals pointing elsewhere. - Link-list hygiene — clean CSV exports, directories, bookmarks, affiliate links.
- AI agents — "is this link alive and where does it go?" through the Apify MCP server.
Input
| Field | Type | Default | Description |
|---|---|---|---|
urls | array | — | URLs to check. |
method | select | GET | GET (reads HTML details) or HEAD (faster; falls back to GET when refused). |
onlyProblems | boolean | false | Return only URLs that are not OK; healthy ones are not charged. |
expectedStatus | number | — | OK only if the final status equals this. |
maxRedirects | number | 10 | Longer chains are reported as loops. |
requestTimeoutSecs | number | 20 | Per request. |
maxConcurrency | number | 20 | Parallel requests. |
parseHtml | boolean | true | Title, H1, canonical, robots meta, noindex. |
proxyConfiguration | object | off | Apify Proxy for sites that block datacenter IPs. |
{ "urls": ["https://apify.com", "https://example.com/missing", "http://github.com"], "onlyProblems": false }
Output
{"url": "http://github.com","finalUrl": "https://github.com/","status": 200,"statusText": "OK","ok": true,"result": "ok","redirectCount": 1,"redirectChain": [{ "url": "http://github.com", "status": 301, "location": "https://github.com/" }],"responseTimeMs": 412,"contentType": "text/html","contentLength": null,"server": "github.com","title": "GitHub · Build and ship software on a single, collaborative platform","h1": "Build and ship software on a single, collaborative platform","canonical": "https://github.com/","robots": null,"noindex": false,"lastModified": null,"error": null,"checkedAt": "2026-09-10T15:30:00Z"}
The OUTPUT record holds totals: checked, OK, problems, rows pushed.
Use cases
Ready-made examples you can run without configuring anything:
- Bulk URL status check for a sitemap export — ready-made task, run it as is
- Redirect chain checker after a migration — ready-made task, run it as is
Bulk URL status checker for a sitemap export
Paste a sitemap export and get the HTTP status of every page, classified as ok, redirect, broken, forbidden or rate-limited.
{ "urls": ["https://example.com/a", "https://example.com/b"] }
Redirect chain checker after a migration
The full redirect chain and final URL per link, so loops and long hops surface before Google finds them.
{ "urls": ["https://old.example.com/page"], "maxRedirects": 10 }
HTTP status code checker for link audits
Status, response time, content type, title, canonical and noindex in one row per URL — a link audit without a browser.
{ "urls": ["https://example.com"] }
Pricing
Pay per event: a small fee per Actor start plus a fee per URL checked (per row returned when onlyProblems is on). Current prices are in the Pricing tab.
Good to know
- Requests come from Apify's datacenter IPs with a browser-like User-Agent; a few sites answer 403 to any non-browser client — use the proxy option or treat
forbiddenas "needs a manual look". - HTML is read only up to 512 KB per page; titles and canonicals are found in that range in practice.
- Keep
maxConcurrencylow (3–5) when checking hundreds of URLs on a single small site.
Use with AI agents (MCP)
Add the Actor to the Apify MCP server: "Check whether these ten links still work" → { "urls": ["…"], "onlyProblems": true }.
Related Actors
Cost control
Pay per event only works if you can see the bill before you pay it:
- Set
dryRunto count every result and print what a full run would cost - nothing is charged, and only a few sample rows are stored. - You are charged only for rows actually delivered to the dataset; a run that finds nothing costs nothing beyond the start event.
maxItemsis respected exactly, and the run stops before the platform's Max total charge for the run.- Every run writes a
COSTrecord to the key-value store: chargeable events, charged events, the amount in USD and whether a limit was hit.