{
  "openapi": "3.0.1",
  "info": {
    "title": "Broken Link Checker: Find Dead Links and 404s on Any Website",
    "description": "Crawl a website and check every link and image once: 404s, dead domains, server errors, redirects and missing #sections. Get a fix list grouped by broken link, with every page and link text, a plain-language report, and monitoring for new problems.",
    "version": "1.0",
    "x-build-id": "UkNQMwkYWPTwzAVH4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/planetlinux98~broken-link-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-planetlinux98-broken-link-checker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/planetlinux98~broken-link-checker/runs": {
      "post": {
        "operationId": "runs-sync-planetlinux98-broken-link-checker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/planetlinux98~broken-link-checker/run-sync": {
      "post": {
        "operationId": "run-sync-planetlinux98-broken-link-checker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "Websites, pages or URLs",
            "minItems": 1,
            "maxItems": 100000,
            "type": "array",
            "description": "One per line. Type a website (<code>example.com</code>) and we follow its links from the homepage, checking every link on every page. To check one section only, give its address (<code>https://example.com/blog/</code>): only pages under it are scanned, though links from them to anywhere are checked.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "What to check",
            "enum": [
              "crawl",
              "sitemap",
              "crawl-and-sitemap",
              "pages",
              "urls"
            ],
            "type": "string",
            "description": "<b>Whole website</b> follows the site's own links from the start page. <b>Pages in the sitemap</b> scans the pages the site's sitemap lists. <b>Both</b> does both, so pages missing from either side are covered, and lists sitemap pages that nothing links to. <b>Only the pages I list</b> checks the links on each page you give, without following them. <b>Only the URLs I list</b> checks that each address on your list works (one result per address).",
            "default": "crawl"
          },
          "maxPagesPerWebsite": {
            "title": "Max pages to scan per website",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "We stop scanning new pages of a website after this many, but every link on the pages already scanned is still checked. Each page scanned is charged; the links on it are checked at no extra cost.",
            "default": 500
          },
          "checkExternalLinks": {
            "title": "Check links to other websites",
            "type": "boolean",
            "description": "Also check links that leave the site. We ask each other website at most once a second, and respect its robots.txt.",
            "default": true
          },
          "checkResources": {
            "title": "Check images, scripts, stylesheets, video and frames",
            "type": "boolean",
            "description": "Also checks everything a page loads, not just its links. Finds broken images and files, and insecure http files that browsers block on https pages.",
            "default": false
          },
          "checkAnchors": {
            "title": "Check #section links",
            "type": "boolean",
            "description": "For links like <code>/guide#install</code>, also checks that the page has a section with that id. A missing section is a warning: the page opens, but at the top instead of the right spot.",
            "default": false
          },
          "reportRedirects": {
            "title": "Report links that redirect",
            "enum": [
              "internal",
              "all",
              "none"
            ],
            "type": "string",
            "description": "A link that redirects still works, but pointing it at the final address saves a hop. <b>Links within the site</b> is usually what you can fix; other sites redirect all the time.",
            "default": "internal"
          },
          "includeWorkingLinks": {
            "title": "Also list links that work",
            "type": "boolean",
            "description": "Adds a row for every link checked, not only those with problems. Handy for a full link inventory. Doesn't change the price.",
            "default": false
          },
          "includeUrlPatterns": {
            "title": "Only scan pages containing",
            "type": "array",
            "description": "Scan only pages whose address contains one of these. Use <code>*</code> for any text, for example <code>/docs/</code> or <code>/products/*</code>. Links to other pages are still checked; they just aren't scanned for links of their own. The start page is always scanned.",
            "items": {
              "type": "string"
            }
          },
          "excludeUrlPatterns": {
            "title": "Don't scan pages containing",
            "type": "array",
            "description": "Skip scanning pages whose address contains any of these, for example <code>/tag/</code>, <code>?page=</code> or <code>/fr/</code>. Same rules as above.",
            "items": {
              "type": "string"
            }
          },
          "ignoreLinkPatterns": {
            "title": "Ignore links containing",
            "type": "array",
            "description": "Links that contain any of these aren't checked or reported at all, for example <code>/logout</code>, <code>/cart/add</code> or <code>example-partner.com</code>.",
            "items": {
              "type": "string"
            }
          },
          "onlyNewProblems": {
            "title": "Only report new problems since the last run (monitoring)",
            "type": "boolean",
            "description": "Remembers the problems it has already reported for each website and returns only new ones. The Websites tab also lists links fixed since last time. The first run reports everything. Ideal with a weekly schedule. Monitor memory is kept in a key-value store called <code>broken-link-checker-monitors</code> in your account.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "maxLength": 60,
            "type": "string",
            "description": "Optional. Give each monitor a name (for example <code>main-site-weekly</code>) so several schedules can watch the same site separately."
          },
          "maxRequestsPerSecond": {
            "title": "Max requests per second to the website",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How fast we load pages from the website being checked. The default is polite for any site; only raise it for sites you own or manage. A site's robots.txt Crawl-delay always wins. Other websites that pages link to are never asked more than once a second.",
            "default": 4
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}