{
  "openapi": "3.0.1",
  "info": {
    "title": "Broken Link Checker: Find Broken Links, Images & Redirects",
    "description": "Broken link checker: crawl a website and find broken links, 404 pages, dead images, redirect chains and mixed content, with the pages where each broken link appears. Never charges for a failed or empty result.",
    "version": "0.1",
    "x-build-id": "hjxlgVrXO0gVNIISU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/pavel.tashev~broken-link-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-pavel.tashev-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/pavel.tashev~broken-link-checker/runs": {
      "post": {
        "operationId": "runs-sync-pavel.tashev-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/pavel.tashev~broken-link-checker/run-sync": {
      "post": {
        "operationId": "run-sync-pavel.tashev-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 to check",
            "maxItems": 50,
            "type": "array",
            "description": "Websites or pages to start crawling from, for example example.com or https://example.com/blog/. Pages on the same website are crawled; links to other websites are checked but not crawled.",
            "items": {
              "type": "string"
            }
          },
          "maxPagesPerSite": {
            "title": "Maximum pages to crawl per website",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Stop crawling a website after this many pages. All links found on the crawled pages are still checked.",
            "default": 500
          },
          "maxLinksPerSite": {
            "title": "Maximum links to check per website",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop checking a website after this many unique links. Every link checked is charged, including working ones, so this is also your cost ceiling per website. Sites with faceted search or calendars can generate far more links than pages.",
            "default": 5000
          },
          "maxDepth": {
            "title": "Maximum crawl depth",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "How many clicks away from the start page to crawl. 0 checks only the links on the start page.",
            "default": 5
          },
          "checkExternal": {
            "title": "Check links to other websites",
            "type": "boolean",
            "description": "Check links that point to other domains (they are never crawled). Turn off to check only your own website.",
            "default": true
          },
          "includeAssets": {
            "title": "Check images, scripts and stylesheets",
            "type": "boolean",
            "description": "Also check img, script, stylesheet, icon, iframe, video and audio URLs, not only <a> links.",
            "default": true
          },
          "reportRedirects": {
            "title": "Report redirected links",
            "type": "boolean",
            "description": "Include links that work but redirect (301, 302, ...) with the full redirect chain. Useful for SEO clean-up.",
            "default": true
          },
          "reportAllLinks": {
            "title": "Report all links, including working ones",
            "type": "boolean",
            "description": "Save every checked link to the dataset, not only broken, blocked and redirected ones.",
            "default": false
          },
          "softNotFound": {
            "title": "Detect soft 404 pages",
            "type": "boolean",
            "description": "Treat crawled pages that return HTTP 200 but whose title says \"404\" or \"not found\" as broken.",
            "default": false
          },
          "useSitemap": {
            "title": "Also crawl pages from the sitemap",
            "type": "boolean",
            "description": "Add pages listed in the website's sitemap (from robots.txt, or /sitemap.xml when robots.txt is not read) so pages that no other page links to are checked too.",
            "default": false
          },
          "excludePatterns": {
            "title": "Skip URLs matching",
            "type": "array",
            "description": "Links matching any pattern are neither crawled nor checked. Use a glob (*/tag/*), plain text (/cart) or a regular expression between slashes (/\\?sort=/).",
            "items": {
              "type": "string"
            }
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Skip pages and links that the website's robots.txt disallows for crawlers. Turn off only for websites you own.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 5,
            "maximum": 50,
            "type": "integer",
            "description": "How many links are checked at the same time in total. Requests to the same host are limited to half of this number (4 to 10) to stay polite.",
            "default": 10
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 30,
            "type": "integer",
            "description": "A link that does not respond within this time is reported as broken (timeout).",
            "default": 15
          },
          "browserUserAgent": {
            "title": "Identify as a web browser",
            "type": "boolean",
            "description": "Send a Chrome User-Agent instead of identifying as BrokenLinkChecker. Can reduce false alarms from sites that block bots.",
            "default": false
          },
          "slowThresholdMs": {
            "title": "Report links slower than (ms)",
            "minimum": 0,
            "maximum": 120000,
            "type": "integer",
            "description": "Mark links that took at least this long with \"isSlow\". 0 turns the report off. A slow link is still judged on its status code — it is never counted as broken.",
            "default": 0
          },
          "maxRedirects": {
            "title": "Maximum redirects to follow",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "A link needing more hops than this is reported as \"too-many-redirects\" and counted as broken, so set it low only if you mean it.",
            "default": 10
          },
          "userAgent": {
            "title": "User agent",
            "type": "string",
            "description": "Send this User-Agent instead of the built-in one. Useful when a site or CDN only answers a specific agent. Overrides \"Identify as a browser\"."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}