Bulk URL Status Checker avatar

Bulk URL Status Checker

Pricing

from $0.15 / 1,000 url checkeds

Go to Apify Store
Bulk URL Status Checker

Bulk URL Status Checker

Check large URL lists for status codes, redirects, broken links, response timing, headers, titles, canonical URLs, and robots meta.

Pricing

from $0.15 / 1,000 url checkeds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Check thousands of URLs for HTTP status codes, broken links, redirect chains, response timing, content headers, page titles, meta descriptions, canonical URLs, and robots meta tags.

Use this Actor for SEO audits, website migrations, QA checks, content operations, campaign link validation, and scheduled link-health monitoring.

At a glance

  • Primary job: Turn a URL list, pasted text block, hosted list, or sitemap into a structured URL health report.
  • Input: URLs, urlsText, listUrl, or sitemapUrl with configurable method, redirects, timeout, and concurrency.
  • Output: One dataset row per attempted URL, including both successful responses and failures.
  • Best for: SEO teams, agencies, site migration teams, QA teams, marketers, and developers building monitoring workflows.

Who is it for?

  • SEO teams and agencies validating migrations, redirects, canonical tags, and broken links.
  • QA teams checking landing pages before launches.
  • Content operations teams finding removed, redirected, or slow pages.
  • Developers feeding URL health data into dashboards, alerts, and CI workflows.

Input recipes

Start from a verified public Example task when you want a ready-made configuration:

Example input

{
"urls": ["https://example.com/", "https://www.iana.org/domains/example"],
"maxUrls": 20,
"concurrency": 10,
"method": "head-get-fallback",
"followRedirects": true,
"includeSeoMeta": true
}

What data can you export?

FieldDescription
inputUrlOriginal URL supplied by the user.
normalizedUrlURL after scheme normalization and fragment removal.
finalUrlFinal URL after redirects.
statusCode / statusTextFinal HTTP response status.
okTrue for final 2xx or 3xx responses.
isBrokenTrue for request errors or final 4xx/5xx responses.
isRedirect / redirectCountRedirect classification and number of followed hops.
redirectChainRedirect hops with source URL, status code, and Location.
responseTimeMsElapsed check time in milliseconds.
contentType / contentLengthResponse headers commonly used for QA and SEO exports.
titleHTML page title when SEO extraction is enabled and available.
metaDescriptionHTML meta description when available.
canonicalUrlHTML canonical URL when available.
robotsMetaHTML robots meta tag content when available.
errorType / errorMessageRequest failure details for DNS, TLS, timeout, and invalid URL cases.
responseHeadersOptional raw response headers.
checkedAtISO timestamp for the check.

Input configuration

SettingJSON keyUse it forDefault
URLsurlsDirect list of URLs to check.sample URLs
URLs as texturlsTextPaste newline, comma, tab, semicolon, or space separated URLs.empty
Hosted URL listlistUrlFetch a remote text/CSV-like URL list.empty
Sitemap URLsitemapUrlExtract and check <loc> entries from an XML sitemap.empty
Max URLsmaxUrlsCap unique URLs after de-duplication.20
ConcurrencyconcurrencyParallel checks. Lower for fragile sites.20
TimeouttimeoutSecsPer-URL request timeout.15
Request methodmethodhead-get-fallback, get, or head.head-get-fallback
Follow redirectsfollowRedirectsFollow redirects and report final destination.true
Max redirectsmaxRedirectsRedirect-hop limit per URL.10
Include SEO metaincludeSeoMetaExtract title, description, canonical, and robots meta for HTML pages.true
Include headersincludeResponseHeadersInclude raw response headers.false
User-AgentuserAgentSend a custom User-Agent.built-in crawler UA
ProxyproxyConfigurationOptional Apify Proxy routing.off

Example output

{
"inputUrl": "https://example.com/",
"normalizedUrl": "https://example.com/",
"finalUrl": "https://example.com/",
"statusCode": 200,
"statusText": "OK",
"ok": true,
"isBroken": false,
"isRedirect": false,
"redirectChain": [],
"redirectCount": 0,
"responseTimeMs": 184,
"contentType": "text/html",
"contentLength": 1256,
"title": "Example Domain",
"metaDescription": null,
"canonicalUrl": null,
"robotsMeta": null,
"errorType": null,
"errorMessage": null,
"checkedAt": "2026-07-10T00:00:00.000Z"
}

Pricing

This Actor uses pay-per-event pricing.

EventFreeBronzeSilverGoldPlatinumDiamondCharged when
Run start$0.005$0.005$0.005$0.005$0.005$0.005Once when the Actor starts.
URL checked$0.000030025$0.000026108$0.000020365$0.000015665$0.000010443$0.0000073103Each URL is checked and saved as a dataset row, including failures.

Tips for best results

  • Start small: Run 10-20 URLs first to verify target behavior and output columns.
  • Use head-get-fallback by default: It is fast and falls back when servers reject HEAD or HTML meta is requested.
  • Use GET-only when needed: Some servers return inaccurate HEAD responses.
  • Lower concurrency for one domain: If many URLs hit the same small site, lower concurrency to avoid rate limits.
  • Keep raw headers off unless needed: includeResponseHeaders increases dataset size.

Limits and caveats

  • Some websites block automated checks or return different results by User-Agent, method, region, or proxy.
  • 403, 429, timeout, DNS, TLS, and invalid URL cases are recorded as rows, not treated as actor failures.
  • The Actor reports the observed HTTP result; it does not bypass access controls.

API usage

Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/bulk-url-status-checker').call({
urls: ['https://example.com/', 'https://httpstat.us/404'],
followRedirects: true,
});
console.log(run.defaultDatasetId);

Python:

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/bulk-url-status-checker').call(run_input={
'urls': ['https://example.com/', 'https://httpstat.us/404'],
'followRedirects': True,
})
print(run['defaultDatasetId'])

cURL:

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~bulk-url-status-checker/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"urls":["https://example.com/","https://httpstat.us/404"],"followRedirects":true}'

MCP and AI agents

Use the Actor from MCP-compatible clients through the Apify MCP Server:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/bulk-url-status-checker"

Claude Desktop JSON configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/bulk-url-status-checker"
}
}
}

Example prompts:

  • "Check these landing page URLs and summarize broken links."
  • "Run a sitemap status audit and group results by status code."
  • "Find redirect chains in this migration URL map."

FAQ

Can I check thousands of URLs?

Yes. Increase maxUrls and choose a safe concurrency for the target sites.

Does this use a browser?

No. It is a lightweight HTTP checker for status, redirects, headers, and basic HTML meta signals.

Why do I see 403 or 429?

The target server is refusing or rate limiting the request. Try lower concurrency, GET-only mode, a custom User-Agent, or an approved proxy setup.

Can I export the results?

Yes. Apify datasets can be exported as JSON, CSV, Excel, XML, RSS, HTML, or through the API.

Legality and responsible use

Only check URLs you are allowed to audit. Respect target websites, rate limits, robots policies, contracts, and applicable laws. Do not use the Actor to overload third-party servers.

Support

Open an issue from the Actor page if a run fails or output looks wrong. Include the run ID or run URL, input JSON, expected output, actual output, and one reproducible public URL.

Changelog

  • 2026-07-15 - Feature: Added ready-to-run example tasks on the Apify Store

  • 2026-07-15 - Feature: Launched Bulk URL Status Checker on Apify Store