{
  "openapi": "3.0.1",
  "info": {
    "title": "Broken Link Checker (Your Listed Pages)",
    "description": "For your own or authorised sites. Give it up to 500 pages and it checks every link on them once, follows redirects, and lists the broken ones with the page they're on. $0.001 per unique link, and timeouts are free.",
    "version": "0.1",
    "x-build-id": "KKlyMFUD17h0XMgf1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/plainwren~site-link-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-plainwren-site-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/plainwren~site-link-checker/runs": {
      "post": {
        "operationId": "runs-sync-plainwren-site-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/plainwren~site-link-checker/run-sync": {
      "post": {
        "operationId": "run-sync-plainwren-site-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": "Pages to check",
            "type": "array",
            "description": "For your own or authorised sites. The pages whose links you want checked, all on one site (max 500). Only these pages are fetched and read; the links on them get one HEAD request each and are never crawled. Leave empty for a free demo.",
            "items": {
              "type": "string"
            }
          },
          "confirmOwnOrAuthorised": {
            "title": "These are my own or authorised sites",
            "type": "boolean",
            "description": "Required. Tick to confirm you own the site or are allowed to check it. If unticked, the run stops at once and nothing is charged.",
            "default": false
          },
          "maxPages": {
            "title": "Max listed pages",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Only the first N listed pages are used (1-500). Extra pages are skipped and not charged.",
            "default": 500
          },
          "maxLinksChecked": {
            "title": "Max URLs checked",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Hard cap on unique URLs checked in one run, listed pages included (1-50,000). The run stops cleanly and says so in SUMMARY.",
            "default": 5000
          },
          "checkExternalLinks": {
            "title": "Check outside links",
            "type": "boolean",
            "description": "Check links to other sites with one HEAD each (1 request per second per outside host, never crawled).",
            "default": true
          },
          "checkResources": {
            "title": "Check images, scripts, stylesheets and iframes",
            "type": "boolean",
            "description": "Also check src/href of img, script, stylesheet links and iframes (HEAD only). Needed for mixed-content findings.",
            "default": true
          },
          "requestsPerSecond": {
            "title": "Requests per second (your site)",
            "minimum": 0.2,
            "maximum": 4,
            "type": "number",
            "description": "Polite rate for your own site, one request at a time (0.2-4, default 1). Outside hosts are always 1 per second. robots.txt Crawl-delay (up to 10 s) and 429/503 answers slow it further.",
            "default": 1
          },
          "maxConcurrency": {
            "title": "Hosts at once",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many different hosts are checked at the same time (1-10, default 4). Each host still gets one request at a time.",
            "default": 4
          },
          "includeUrlPatterns": {
            "title": "Only check links matching",
            "type": "array",
            "description": "Optional globs on the full link URL, e.g. https://example.com/blog/**. Empty = all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeUrlPatterns": {
            "title": "Skip links matching",
            "type": "array",
            "description": "Optional globs on the full link URL, e.g. **/cart**. Skipped links are not requested or charged.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "ignoreQueryStrings": {
            "title": "Ignore query strings",
            "type": "boolean",
            "description": "Treat ?utm=... style variants as one URL.",
            "default": false
          },
          "reportOkLinks": {
            "title": "Also output working links",
            "type": "boolean",
            "description": "By default only problem links are output. Every checked URL is charged once either way.",
            "default": false
          },
          "timeoutSecs": {
            "title": "Timeout per request (seconds)",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "1-60, default 15. A timeout is reported and not charged.",
            "default": 15
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}