{
  "openapi": "3.0.1",
  "info": {
    "title": "HTTP Status Code Checker: Bulk URL, Website & Redirect Chains",
    "description": "Status code checker and redirect checker for lists of URLs. Get the HTTP status, redirect chain, redirect type, final URL, response time and errors for each link. Bulk URL status checks that find broken links, 404s, 5xx errors and redirect loops. Pay per URL checked.",
    "version": "0.1",
    "x-build-id": "2437vm09GzSiKz621"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/data-done-right~status-code-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-data-done-right-status-code-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/data-done-right~status-code-checker/runs": {
      "post": {
        "operationId": "runs-sync-data-done-right-status-code-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/data-done-right~status-code-checker/run-sync": {
      "post": {
        "operationId": "run-sync-data-done-right-status-code-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": {
          "urls": {
            "title": "URLs to check",
            "type": "array",
            "description": "The URLs to check, one per line (use Bulk edit to paste a long list). A missing https:// is added. Duplicates are removed (the first one is kept). Example: https://example.com, http://github.com.",
            "items": {
              "type": "string"
            }
          },
          "urlsText": {
            "title": "Or paste URLs (one per line)",
            "type": "string",
            "description": "Alternative to the list above: paste a block of URLs, one per line. Added after the URLs list; duplicates across both are removed."
          },
          "method": {
            "title": "Request method",
            "enum": [
              "HEAD",
              "GET"
            ],
            "type": "string",
            "description": "HEAD asks only for the headers and is fastest; if a server answers a HEAD with an error (400 or higher) the URL is checked again with GET, so the result matches what a browser sees. GET sends a GET to every URL (the body is never downloaded).",
            "default": "HEAD"
          },
          "followRedirects": {
            "title": "Follow redirects",
            "type": "boolean",
            "description": "Follow 301, 302, 303, 307 and 308 redirects and record every hop in the redirect chain. Turn off to see the first response only (the redirect itself).",
            "default": true
          },
          "maxRedirects": {
            "title": "Max redirects",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Stop with the error 'too many redirects' after this many redirects for one URL. Redirect loops are detected earlier and flagged with hasRedirectLoop.",
            "default": 10
          },
          "timeoutSecs": {
            "title": "Timeout per URL (seconds)",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "Total time allowed for one URL, all redirects included. Slow URLs get the error 'timeout' and still produce a row.",
            "default": 15
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "URLs checked in parallel. At most 10 run in parallel against the same website, whatever this is set to.",
            "default": 20
          },
          "userAgent": {
            "title": "User agent",
            "enum": [
              "browser",
              "bot"
            ],
            "type": "string",
            "description": "Browser sends a normal desktop browser User-Agent (matches what visitors get; recommended). Bot sends an honest 'StatusCodeCheckerBot' User-Agent, which some sites answer differently.",
            "default": "browser"
          },
          "requestHeaders": {
            "title": "Request headers (optional)",
            "type": "object",
            "description": "Extra headers sent with every request, for example {\"Authorization\": \"Bearer TOKEN\"} to check URLs behind a login you own. Stored encrypted, never written to the output, and dropped when a redirect leaves the original site."
          },
          "expectedStatus": {
            "title": "Expected status codes (optional)",
            "type": "array",
            "description": "Status codes you expect, for example [200] or [200, 301] or [\"2xx\"]. Every row then gets matchesExpected true or false; leave empty to skip."
          },
          "maxUrls": {
            "title": "Max URLs",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Upper limit of unique URLs checked in this run (also caps what you can be charged). Extra URLs are skipped and counted in SUMMARY.",
            "default": 1000
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Off by default. Use an Apify proxy when a site blocks datacenter IPs or you need to check a URL from a specific country.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}