Broken Link Checker & Scraper - 404 Audit API
Pricing
from $2.00 / 1,000 results
Broken Link Checker & Scraper - 404 Audit API
Scan pages for broken links, dead URLs, 404s, redirects, TLS failures, timeouts, and resource errors. Bulk link checker/scraper for SEO audits, content QA, migrations, and link-rot monitoring with source evidence, safe URL handling, and bounded paid output.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Ava Torres
Maintained by CommunityActor stats
0
Bookmarked
12
Total users
0
Monthly active users
21 days ago
Last modified
Categories
Share
Broken Link Checker & Scraper — 404 Audit API
Scan the static HTML of one or more web pages, extract unique links and resources, and check each target for HTTP, DNS, TLS, timeout, and request failures. The actor preserves source-page evidence, follows redirects, retries blocked HEAD checks with GET, and saves large jobs in bounded batches.
The default scans BadSSL and returns 10 working/TLS-failure examples for at most $0.0201 including the minimum actor-start event.
Use cases
- Technical SEO audits — find 404/5xx links and dead resources
- Site migrations — check links after URL or CMS changes
- Link-rot monitoring — schedule repeated point-in-time audits
- Content QA — validate cited external links before publishing
- Frontend asset checks — inspect
img,script, and stylesheet URLs
Input
| Field | Type | Default | Description |
|---|---|---|---|
urls | string array | https://badssl.com/ | Pages whose static HTML should be scanned |
maxResults | integer | 10 | Total paid result cap across every supplied page; up to 50,000 |
concurrency | integer | 10 | Parallel link checks; 1–50 |
timeoutSeconds | integer | 15 | Per-request timeout; 3–60 seconds |
If the input is empty, runtime uses the same BadSSL/10-result Store default. Apify maximum-total-charge limits are applied before checks begin and can reduce maxResults further.
What is extracted
The actor reads URLs from static HTML:
<a href><link href><img src><script src>
Relative URLs are resolved against the fetched page's final URL, fragments are removed, and duplicate targets are checked once per page. Private, loopback, link-local, credential-bearing, and non-HTTP(S) targets are rejected to prevent unsafe network access.
Output
Every dataset row uses stable evidence fields:
| Field | Description |
|---|---|
resultType | LINK_CHECK, SOURCE_ERROR, or NO_LINKS |
sourceUrl, sourceFinalUrl | Requested and final scanned page URLs |
sourceStatusCode, sourceContentType, sourceResponseTimeMs | Source fetch evidence |
linkUrl, elementType, anchorText | Discovered target and its HTML context |
statusCode, statusText, finalUrl | Checked target response evidence |
redirectCount, responseTimeMs, contentType | Redirect, timing, and response metadata |
checkMethod | HEAD or fallback GET |
isBroken, error | Broken/error classification and diagnostic detail |
retrievedAt | UTC observation time |
coverageNote, interpretation | Mandatory scope and evidence limitations |
Example TLS failure:
{"resultType": "LINK_CHECK","sourceUrl": "https://badssl.com/","sourceStatusCode": 200,"linkUrl": "https://expired.badssl.com/","elementType": "a","statusCode": 0,"statusText": "","redirectCount": 0,"checkMethod": "GET","isBroken": true,"error": "tls: failed to verify certificate: x509: certificate has expired...","retrievedAt": "2026-07-25T10:07:30Z"}
Source pages that cannot be fetched return one explicit SOURCE_ERROR row instead of silently producing an empty dataset. Successfully fetched pages with no supported links return one NO_LINKS row.
Reliability and scale
- Bounded concurrency prevents unbounded request fan-out.
- Output is persisted in batches of at most 500 rows, below Apify's dataset-request limit.
HEADchecks that receive403,405, or501retry with a smallGETrequest to reduce false broken-link classifications.- DNS resolution rejects private/local targets before connecting.
- TLS certificates are verified; certificate failures remain visible evidence rather than being bypassed.
- Output order follows document order even though checks run concurrently.
Interpretation limits
This is a point-in-time network and static-HTML audit, not proof of continuous uptime or page correctness. The actor does not execute JavaScript or crawl beyond each supplied page. Client-rendered links, authenticated content, form actions, CSS url(...) references, and links beyond maxResults are outside the result set.
A 2xx response does not prove useful content. A broken/error result can reflect bot defenses, authentication, geolocation, rate limiting, transient network conditions, or source policy rather than a permanently dead target. Re-run important failures and inspect the target directly before changing production links.
Pricing
Pay per event: $0.0001 minimum actor-start event plus $0.002 per dataset row (about $2 per 1,000 rows, plus the start event). The 10-row default costs at most $0.0201. Source-error and no-links evidence rows are paid dataset items.