Broken Link & Image Checker - Sitemap or Crawl, $0.0009/URL avatar

Broken Link & Image Checker - Sitemap or Crawl, $0.0009/URL

Pricing

$0.89 / 1,000 url checked (link or image status determined)s

Go to Apify Store
Broken Link & Image Checker - Sitemap or Crawl, $0.0009/URL

Broken Link & Image Checker - Sitemap or Crawl, $0.0009/URL

Find broken links and images on your site: crawl pages or read a sitemap.xml, check every link, image and srcset once, and get the status, redirects and the pages each one is on. $0.0009 per URL checked; crawled pages and robots-skipped URLs free. Respects robots.txt.

Pricing

$0.89 / 1,000 url checked (link or image status determined)s

Rating

0.0

(0)

Developer

DigiVibeTech

DigiVibeTech

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Share

Broken Link & Image Checker

Find broken links and broken images on your website in one run. Start from a page (the actor crawls internal links) or from your sitemap.xml. Every unique link and image is checked once, and you get its HTTP status, where it redirects, and the pages it appears on, so you know exactly what to fix.

Built for shop owners, SEOs and developers: after a catalog update, a migration or a theme change, catch 404 product pages, deleted product photos, broken srcset variants and dead outbound links before customers or Google do.

What it checks

  • Links: every <a href> (internal, and optionally external)
  • Images: <img src>, data-src, every srcset candidate, <picture><source> and og:image / twitter:image
  • States: ok (2xx), redirect (3xx or redirected to another URL), broken (4xx/5xx, or an image URL that does not return an image) and unreachable (DNS, timeout, TLS)
  • Where: foundOn (up to 10 pages) and foundOnCount for each URL

Input

FieldDefaultMeaning
startUrls(required)Pages or sitemap.xml / sitemap index URLs
maxPages20HTML pages scanned per start URL (scanning is free)
followLinkstrueCrawl internal links on the same host
checkLinks / checkImagestrueWhat to check
checkExternaltrueAlso check other hosts (image CDNs, outbound links)
maxUrlsToCheck1000Limit on checked (charged) URLs

Output

One dataset item per checked URL: url, type (link/image), status, state, ok, redirectedTo, contentType, error, external, foundOn, foundOnCount. The BROKEN record in the key-value store lists only the problems. SUMMARY (also saved as OUTPUT) has the counts. ERRORS lists pages that could not be scanned and URLs skipped by robots.txt.

{"url": "https://shop.example/img/blue-mug.jpg", "type": "image", "status": 404, "state": "broken", "ok": false,
"foundOn": ["https://shop.example/mugs/blue-mug"], "foundOnCount": 1}

Speed and the run timeout

To stay polite, each site gets about one request per second. Pages are scanned first, then every found URL is checked (up to 16 at a time, but still about 1 per second per host). Rough guide with the default 1-hour timeout:

  • 20 pages (the default) take about 20-30 seconds to scan.
  • 1,000 URLs on your own site (the default limit) take about 17 minutes; links to other hosts are checked in parallel.
  • Large sites (thousands of pages or URLs) need a longer timeout, or several runs with lower limits.

The actor watches its own timeout. Shortly before it (10 % of the run time, at least 30 seconds), it stops, keeps every result found so far, and finishes as Succeeded. Page scanning uses at most half of the time, so links always get checked. SUMMARY then has stoppedEarly: true, pagesLeft (pages not scanned) and urlsLeft (found URLs not checked, not charged). Raise the timeout or lower maxPages / maxUrlsToCheck to finish the rest.

Limits

  • It reads the HTML the server sends (no browser), so text, links or markup added later by JavaScript are not seen.
  • Sites that block automated requests or rate-limit hard can show up as broken or error even if a browser loads them.
  • Pages disallowed by robots.txt are not crawled, so links found only there are not checked.

Responsible crawling

We follow each site's robots.txt for every page and every checked URL (disallowed URLs are skipped and not charged), send at most about one request per second per host, check with HEAD first (a small GET of at most 1 KB only if the server does not support HEAD), use an honest User-Agent (LinkImageChecker/1.0) and never log in, use proxies or bypass bot protection. Check sites you own or are allowed to check.

Example input

{
"startUrls": [
"https://www.iana.org/help/example-domains"
],
"maxPages": 1,
"maxUrlsToCheck": 5,
"checkExternal": true
}

Example output (one record)

Real record from a test run on the input above.

{
"url": "https://www.iana.org/",
"type": "link",
"status": 200,
"state": "ok",
"ok": true,
"redirectedTo": null,
"contentType": "text/html",
"error": null,
"external": false,
"foundOn": [
"https://www.iana.org/help/example-domains"
],
"foundOnCount": 1,
"checkedAt": "2026-10-18T05:38:58.050401+00:00"
}

Pricing

EventPrice
URL checked (link or image status determined)$0.0009

Scanning pages is free, robots-skipped URLs are free, and there is no start fee. A shop with 300 unique links and images costs $0.27. Set a maximum cost per run and the actor stops checking before it is reached.

Use it in n8n, Make or Zapier

Schedule a weekly run, then read the BROKEN record (/key-value-stores/{id}/records/BROKEN) and send it to Slack or email when it is not empty.

Maintained by DigiVibeTech. Questions: digivibetech.com/support