{
  "openapi": "3.0.1",
  "info": {
    "title": "Broken Link Checker & Internal Link Graph (Fast, No Browser)",
    "description": "Crawl a website over plain HTTP and find broken links and images (404, 5xx, timeouts, DNS errors), redirect chains, http links and links to noindex pages, plus an internal link graph per page: inlinks, outlinks, canonical, orphan pages. $1 per 1,000 pages.",
    "version": "1.0",
    "x-build-id": "JB3VPpfKkfp3P03p9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fast_data_asap~broken-link-internal-link-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fast_data_asap-broken-link-internal-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/fast_data_asap~broken-link-internal-link-checker/runs": {
      "post": {
        "operationId": "runs-sync-fast_data_asap-broken-link-internal-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/fast_data_asap~broken-link-internal-link-checker/run-sync": {
      "post": {
        "operationId": "run-sync-fast_data_asap-broken-link-internal-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",
        "properties": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "One or more pages to start crawling from, e.g. your home page. The crawl stays on these sites.",
            "default": [
              "https://books.toscrape.com/"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxPages": {
            "title": "Max pages to crawl",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of internal pages to crawl (each crawled page is one billable event). All links found on these pages are checked.",
            "default": 10
          },
          "maxDepth": {
            "title": "Max crawl depth",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "How many clicks away from the start URLs the crawler goes. 0 = only the start URLs.",
            "default": 3
          },
          "sameDomainOnly": {
            "title": "Same host only",
            "type": "boolean",
            "description": "Only crawl pages on the exact host of the start URLs (www and non-www count as the same). Turn off to also crawl subdomains such as blog.example.com.",
            "default": true
          },
          "checkExternalLinks": {
            "title": "Check external links",
            "type": "boolean",
            "description": "Check links to other websites (HEAD request, falls back to GET). Requests are rate-limited per host.",
            "default": true
          },
          "checkImages": {
            "title": "Check images",
            "type": "boolean",
            "description": "Also check <img> sources for broken images.",
            "default": true
          },
          "checkUncrawledInternalLinks": {
            "title": "Check internal links beyond the crawl limit",
            "type": "boolean",
            "description": "Internal links that were not crawled (because of Max pages or Max depth) are still checked with a light HEAD request. Not billed.",
            "default": true
          },
          "includeSitemapUrls": {
            "title": "Also crawl URLs from the sitemap",
            "type": "boolean",
            "description": "Adds URLs from sitemap.xml to the crawl queue (after linked pages). Needed for meaningful orphan-page detection (in sitemap, but no internal links).",
            "default": false
          },
          "includePatterns": {
            "title": "Include URL patterns",
            "type": "array",
            "description": "Optional regular expressions. If set, only matching internal URLs are crawled (start URLs are always crawled). Example: /blog/",
            "items": {
              "type": "string"
            }
          },
          "excludePatterns": {
            "title": "Exclude URL patterns",
            "type": "array",
            "description": "Optional regular expressions. Matching internal URLs are not crawled. Example: \\?sort= or /tag/",
            "items": {
              "type": "string"
            }
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Skip internal URLs disallowed by robots.txt and honor its Crawl-delay.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrent requests to your site",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Parallel requests to the crawled site. Keep it low for small servers.",
            "default": 5
          },
          "maxRequestsPerExternalHost": {
            "title": "Max concurrent requests per external host",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Politeness limit for external link checks (one host is never hit by more than this many parallel requests).",
            "default": 2
          },
          "maxLinkChecks": {
            "title": "Max link checks",
            "minimum": 0,
            "maximum": 200000,
            "type": "integer",
            "description": "Upper limit of unique link/image URLs checked (on top of crawled pages).",
            "default": 2000
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 3,
            "maximum": 120,
            "type": "integer",
            "description": "A link that does not answer within this time is reported as a timeout.",
            "default": 15
          },
          "userAgent": {
            "title": "User-Agent",
            "type": "string",
            "description": "User-Agent header sent with every request. The default identifies the checker so site owners can allow it.",
            "default": "Mozilla/5.0 (compatible; FastDataLinkChecker/1.0; +https://apify.com/fast_data_asap/broken-link-internal-link-checker)"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Not needed for most sites."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}