Broken Link Checker API

Check every link and image of a web page: broken (404, 410, 5xx, no answer), redirected and bot-blocked links, with their anchor text and a score.

GETPOSThttps://apibox.io.vn/v1/broken-links

The broken link checker loads a page, collects its links (<a href>), images and optionally stylesheets and scripts (include=links,images,assets), resolves relative URLs, removes duplicates and checks each one: first with a HEAD request, then with GET for servers that refuse HEAD, following redirects with the same protections as the other web APIs.

Each result has its status, response time, final URL when redirected and anchor text, so broken links are easy to find in the page. The report separates broken links (404, 410, 5xx, timeouts, DNS errors), links that redirect (update them to the final URL) and links that refuse automated checks (401, 403, 429), and gives a score. scope=internal or external restricts the check.

To be fair to the sites being checked, one call checks one page, links are checked 8 at a time with an 8-second timeout, and the number of links per call depends on your plan (20 on the free online tool, 50 Free, 100 Starter, 200 Pro).

Parameters

NameInTypeRequiredDefault
urlquery|bodystringyesPage URL.
includequery|bodystringnolinks,imagesComma list: links, images, assets.
scopequery|bodystringnoallall, internal or external.
limitquery|bodynumbernoMax links to check (capped by plan).
langquery|bodystringnoenLanguage of the messages: en or vi.

Example

curl "https://apibox.io.vn/v1/broken-links?url=https://en.wikipedia.org/wiki/Provinces_of_Vietnam&limit=40" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{
  "url": "https://en.wikipedia.org/wiki/Provinces_of_Vietnam",
  "score": 95,
  "grade": "A",
  "totals": {
    "found": 589,
    "checked": 40,
    "ok": 40,
    "broken": 0,
    "redirected": 5,
    "blocked": 0,
    "invalid": 0,
    "skipped": 549
  },
  "broken": [],
  "redirected": [
    "…"
  ],
  "links": [
    {
      "url": "https://en.wikipedia.org/wiki/Vietnam",
      "status": 200,
      "ok": true,
      "kind": "link",
      "internal": true,
      "ms": 85
    },
    "…"
  ],
  "checks": [
    "…"
  ]
}

Use cases

  • SEO maintenance: fix 404 links in articles
  • Check pages before launch or migration
  • Monitor important pages for dead links and images
  • Find outdated links to partners and documentation

FAQ

Does it crawl my whole site?

No, it checks the links of one page per call. Call it for each page (for example from your sitemap) to cover a site.

Why is a working link reported as blocked?

Some sites refuse automated clients (401 / 403 / 429) but open fine in a browser. They are listed separately, not as broken.

Why weren’t all links checked?

The plan limit was reached; the skipped count is in totals. Use scope=internal or a higher plan.

Related APIs

Start with 1,000 free requests every month. Get free API key →