{
  "openapi": "3.0.1",
  "info": {
    "title": "Broken Link & Sitemap Health Checker",
    "description": "Finds broken links, redirect chains and loops, sitemap entries that fail, and pages missing from the sitemap. Crawls your site or reads its sitemap. Plain HTTP, obeys robots.txt. Pay per link checked.",
    "version": "0.1",
    "x-build-id": "OKMgZfpoL8pdzsNdS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jeremydonaldsonventure~broken-link-sitemap-health-check/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jeremydonaldsonventure-broken-link-sitemap-health-check",
        "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/jeremydonaldsonventure~broken-link-sitemap-health-check/runs": {
      "post": {
        "operationId": "runs-sync-jeremydonaldsonventure-broken-link-sitemap-health-check",
        "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/jeremydonaldsonventure~broken-link-sitemap-health-check/run-sync": {
      "post": {
        "operationId": "run-sync-jeremydonaldsonventure-broken-link-sitemap-health-check",
        "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": "Website, sitemap or links",
            "minItems": 1,
            "maxItems": 1000,
            "type": "array",
            "description": "A home page such as https://example.com, or a sitemap such as https://example.com/sitemap.xml. In 'Just these addresses' mode, the list of links to check. https:// is added if you leave it off.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "What to check",
            "enum": [
              "full",
              "crawl",
              "sitemap",
              "list"
            ],
            "type": "string",
            "description": "'Sitemap + crawl' finds the most: broken links, failing sitemap entries, and pages missing from the sitemap. 'Crawl only' follows links from the start page. 'Sitemap only' checks each sitemap entry. 'Just these addresses' checks the list you give and nothing else.",
            "default": "full"
          },
          "maxPages": {
            "title": "Most pages to read",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many of the site's own pages to open and read for links. Links found on them are still checked once the cap is reached; they just aren't read in turn.",
            "default": 100
          },
          "maxLinksToCheck": {
            "title": "Most addresses to check",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Cap on unique addresses checked per run, and so on the charge. Sitemap entries count first, then links in the order found. Your run's spending limit also stops the run.",
            "default": 1000
          },
          "checkExternalLinks": {
            "title": "Check links to other websites",
            "type": "boolean",
            "description": "Checks that links to other sites still work. They are checked, never crawled.",
            "default": true
          },
          "checkResources": {
            "title": "Also check images, scripts, stylesheets and iframes",
            "type": "boolean",
            "description": "Checks the files each page loads as well as its links. Each file is one more address checked.",
            "default": false
          },
          "onlyReportProblems": {
            "title": "Only list addresses with a problem",
            "type": "boolean",
            "description": "Leaves healthy links out of the results. They are still checked and charged; the summary still counts them.",
            "default": false
          },
          "requestDelayMs": {
            "title": "Gap between requests to one site (ms)",
            "minimum": 100,
            "maximum": 10000,
            "type": "integer",
            "description": "Starts requests to the same site at least this far apart. A robots.txt Crawl-delay is used instead when it is longer (up to 10 s). Other sites are checked in parallel.",
            "default": 250
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Requests in flight at once across all sites. Never more than two to the same site.",
            "default": 10
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "How long to wait for a server before calling the link a timeout. Timeouts get one retry.",
            "default": 15
          },
          "maxRedirects": {
            "title": "Most redirects to follow",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "A link that redirects more times than this is reported as too many redirects.",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}