{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk URL & Broken Link Checker",
    "description": "Check URLs in bulk: status code, every redirect hop, final and canonical URL, response time, content type and size. Paste URLs, check a whole sitemap, or find broken links on your pages. HEAD with GET fallback, robots.txt respected, only-changed monitoring.",
    "version": "1.0",
    "x-build-id": "hO77vpsCfEGJRmaRo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/humble-echidna~url-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-humble-echidna-url-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/humble-echidna~url-checker/runs": {
      "post": {
        "operationId": "runs-sync-humble-echidna-url-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/humble-echidna~url-checker/run-sync": {
      "post": {
        "operationId": "run-sync-humble-echidna-url-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": [
          "urls"
        ],
        "properties": {
          "mode": {
            "title": "What to check",
            "enum": [
              "urls",
              "sitemap",
              "links"
            ],
            "type": "string",
            "description": "What the lines in urls are. `urls` (Check these URLs, the default): each line is one URL to check. `sitemap`: each line is a website (example.com) or a sitemap URL; every URL its sitemaps list is checked, up to maxUrlsPerSite per site. `links` (broken link check): each line is a page; every link on it is checked, and same-site pages it links to are read too, up to maxDepth and maxPages.",
            "default": "urls"
          },
          "urls": {
            "title": "URLs",
            "type": "array",
            "description": "One per line, read according to mode: URLs to check (e.g. https://example.com/old-page), websites or sitemap URLs, or start pages for the link check. Only public web addresses on the standard ports (80 and 443) are requested; anything else is listed in the NOT_CHECKED record, not fetched and not charged. The default is 4 URLs on apify.com, one of them a redirect and one a 404.",
            "default": [
              "https://apify.com",
              "http://apify.com",
              "https://docs.apify.com/platform",
              "https://docs.apify.com/this-page-does-not-exist"
            ],
            "items": {
              "type": "string"
            }
          },
          "method": {
            "title": "Request method",
            "enum": [
              "auto",
              "head",
              "get"
            ],
            "type": "string",
            "description": "Which HTTP request checks each URL. `auto` (the default, recommended): HEAD first, and GET when the HEAD answer is an error (many servers answer HEAD wrongly) or when the page's HTML is needed for its canonical URL (readCanonical). `head`: HEAD only. `get`: GET only.",
            "default": "auto"
          },
          "readCanonical": {
            "title": "Read the canonical URL from HTML pages",
            "type": "boolean",
            "description": "Default true: read <link rel=\"canonical\"> from HTML pages, which needs a GET request. Set false for faster, lighter HEAD-only checks; a canonical URL sent in the HTTP Link header is still reported.",
            "default": true
          },
          "maxDepth": {
            "title": "Crawl depth (links mode)",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Links mode only (mode `links`): how many levels of same-site pages to read, 0 to 5, default 0. 0 checks the links on your pages only. 1 also reads the same-site pages they link to and checks their links, and so on, up to maxPages pages. Other sites' pages are checked but never crawled.",
            "default": 0
          },
          "maxPages": {
            "title": "Max pages to read (links mode)",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Links mode only (mode `links`): at most this many pages are read for links, your start pages included. 1 to 5,000, default 20.",
            "default": 20
          },
          "checkExternalLinks": {
            "title": "Check links to other sites (links mode)",
            "type": "boolean",
            "description": "Links mode only (mode `links`), default true: also check links that point to other websites (checked, never crawled). false: only links within the start pages' sites.",
            "default": true
          },
          "includeResources": {
            "title": "Also check images, scripts and stylesheets (links mode)",
            "type": "boolean",
            "description": "Links mode only (mode `links`), default false: besides <a> links, also check images, scripts, stylesheets, iframes and media sources the pages load. Each one is a result like any other URL.",
            "default": false
          },
          "maxUrlsPerSite": {
            "title": "Max URLs per site (sitemap mode)",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Sitemap mode only (mode `sitemap`): check at most this many URLs from each site's sitemaps. 1 to 50,000, default 500. Set it low (e.g. 50) for a quick sample of a big site.",
            "default": 500
          },
          "onlyChanged": {
            "title": "Only report URLs that changed since the last run",
            "type": "boolean",
            "description": "Default false. When true, remembers each URL's result between runs of the same check (same mode, URLs and options), in a key-value store in your account. A URL is reported, and charged, only when it's new or its outcome, status code, final URL or canonical URL changed. Good for scheduled monitoring.",
            "default": false
          },
          "maxResults": {
            "title": "Max results per run",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many URLs in the results in total, e.g. 20. Minimum 1; leave empty (the default) for no limit. Nothing is fetched past the limit. The run also stops cleanly at the maximum cost per run you set in the run options, whichever comes first. Set it to keep a run small and quick."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}