# Bulk URL Status and Redirect Checker for SEO and Site Moves

> Bulk URL status checker for site moves and SEO: final HTTP status, redirect steps and broken-link flags for up to 100 URLs per run. Export a table.

URL: https://cliqtomedia.com/actors/bulk-url-status-redirect-checker/

Category: Developer & website monitoring · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/bulk-url-status-redirect-checker?fpr=cliqto

Paste a list of URLs and see where each one ends up. You get the final status code, the redirect steps and a broken flag. It helps before and after a site move.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `{&quot;url&quot;: &quot;https://example.com&quot;}` in URLs to check. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Check a list of public URLs before a site move or SEO review. This bulk URL status checker returns the final HTTP status, redirect destinations and broken-link flags for each processed URL. Start with one URL and open its result table. Each run accepts up to 100 input items. An empty list fails; a stopped run may return part of the list. The charge model is pay per useful HTTP result plus an Actor Start event and platform usage. Optional Apify Proxy traffic adds usage costs.





## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.001 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| HTTP URL result | $0.00225 | One stored URL result with an HTTP response, including 404 or 503. No charge for technical failures, duplicates or invalid inputs. |

- One URL: about $0.0032.
- 1,000 URLs: about $2.26 (10 runs of up to 100).
- Every day 100 URLs, for 30 days: about $6.78 a month.
- 100 URLs once a week (4 runs a month): about $0.90 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 24 October 2026. Current price: https://apify.com/cliqtomedia/bulk-url-status-redirect-checker?fpr=cliqto

## Questions

### Does it find soft 404 pages?

No. It reports the real HTTP status. A page that says not found with status 200 is not flagged.

### Is every redirect a problem?

No. A redirect is normal. Check loops, many hops or a broken final page.

### Can I check internal or login pages?

No. It checks only public HTTP and HTTPS addresses.

### Does a 404 cost money?

Yes. A 404 is a useful result and counts. Network failures with status 0 do not count.

### Can I see the status of every redirect hop?

The Dataset stores destination URLs, not a status code for each hop. `statusCode` is the final HTTP code, or 0 on technical failure.

### Is a redirect always broken?

No. A redirect to 200 normally has `isRedirect: true` and `isBroken: false`. A redirect to 404 is broken.

### Is the response time a speed score?

No. It is the whole URL check time from the run environment, including retries and waits. It is not a Core Web Vital.

### Does a schedule compare results for me?

No. Export the dated rows and compare them in your own system.

## Data fields

- `url` (string)
- `statusCode` (integer)
- `statusMessage` (string)
- `isBroken` (boolean)
- `isRedirect` (boolean)
- `redirectChain` (array)
- `finalUrl` (string)
- `responseTime` (integer)
- `checkedAt` (string)

## Input settings

- `startUrls` (array, required): Add 1–100 public HTTP/HTTPS URL objects. The Input form offers example.com as a small sample; API input must still include startUrls. Duplicate URLs are checked once. Invalid items are listed in the run summary. Do not add secrets or login details.
- `maxConcurrency` (integer): How many URLs to check in parallel (1-100).
- `proxyConfiguration` (object): Direct requests by default. Optional Apify Proxy; custom proxy URLs and credentials are unsupported.
- `requestTimeoutSecs` (integer): Maximum wait for each DNS, proxy CONNECT and response-header phase. Total check time includes retries and redirects. TLS verification is always enabled.

## Step by step on Apify

1. Open the Actor in Apify Console and choose Input.
2. Switch to JSON and paste the minimal input below, or enter the URL objects in URLs to check.
3. Keep direct requests for a first check. A fresh form offers one public example.com URL; you can start this sample without editing it. API calls still require startUrls and never substitute a hidden demo.
4. Click Start. A run uses the selected build and run options.
5. Open Output → URL results → Table. Check `statusCode` and `finalUrl`.
6. Choose Export to save the results. Open Storage to read the separate summary.

## Use cases

| Task | Add to `startUrls` | Review | Next step |
|---|---|---|---|
| Site migration URL check | Your old public URLs | `redirectChain`, `finalUrl`, `isBroken` | Compare the final destination with your own migration map |
| Broken link list | URLs from a link report | `statusCode`, `isBroken`, `statusMessage` | Fix or replace failing links |
| QA after a release | Known public endpoints | `statusCode`, `responseTime`, `checkedAt` | Re-check failed endpoints and keep the dated export |
| Redirect audit | Known redirecting URLs | Ordered `redirectChain`, `isRedirect` | Review extra hops or broken destinations |

## Tips

- Compare the final URL with your own redirect map after a move.
- Split big lists into parts of 100 URLs. One run takes up to 100.
- Look at the hop list. Many steps can slow pages and hurt SEO.

## Limits



- At most 100 input items per run, counted before duplicate removal. Split larger lists yourself.
- Concurrency range 1–100, default 20. Actual Cloud capacity was checked at concurrency 3 with 100 simple HTTP results; this does not promise the same speed or success for all sites.
- Up to 10 redirect hops; loops and the hop limit produce broken results. A final target can be present in the chain before the cap prevents fetching it.
- Up to 2 extra retries per request for network failures, 429 or 5xx. HEAD→GET fallback adds a request. Requests can therefore exceed the number of URLs.
- Request phase timeout 1–30 seconds, default 10. Several phases, hops and retries can take longer than one timeout value.
- Only public HTTP/HTTPS destinations. Private-network, loopback and unsafe targets are blocked, including at redirects and retries. TLS verification stays on.
- URL credentials, secret query values and fragments are rejected. Custom proxy credentials are not accepted.
- Results are saved as a batch after checking. A graceful stop can save finished and active rows and count queued URLs in `unprocessed`; a hard platform kill or storage failure may lose final results. There is no streaming or resume guarantee.

## Use it from code

Actor ID: `cliqtomedia/bulk-url-status-redirect-checker`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/bulk-url-status-redirect-checker").call(run_input={
    "startUrls": [
        {
            "url": "https://example.com"
        }
    ],
    "maxConcurrency": 20
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~bulk-url-status-redirect-checker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": [{"url": "https://example.com"}], "maxConcurrency": 20}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/bulk-url-status-redirect-checker")
result = tool.invoke({"run_input": {"startUrls": [{"url": "https://example.com"}], "maxConcurrency": 20}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Use cases with this tool

- [SEO data without a big suite](https://cliqtomedia.com/actors/use-cases/seo-research/): Collect keyword ideas and check your pages and your rivals' pages. Search results and trends coming soon.

## Similar tools

- [GitHub Releases Monitor & Scraper](https://cliqtomedia.com/actors/github-releases-monitor-scraper/)
- [Software End-of-Life Checker](https://cliqtomedia.com/actors/software-end-of-life-checker/)
- [Dependency Vulnerability Scanner (OSV)](https://cliqtomedia.com/actors/osv-dependency-vulnerability-scanner/)
- [GitHub Repositories & Users Search (No Login)](https://cliqtomedia.com/actors/github-search/)
- [OpenAPI Catalog & Breaking Change Detector](https://cliqtomedia.com/actors/openapi-spec-catalog-diff/)
- [SSL Certificate Checker: Expiry, Chain & CT, No Login](https://cliqtomedia.com/actors/ssl-certificate-inspector/)
