{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk URL Status & Redirect Checker",
    "description": "Check a pasted list of URLs for HTTP status, the full redirect chain, the final URL, and response time. No crawl and no sitemap discovery. Refuses non-public addresses.",
    "version": "1.0",
    "x-build-id": "C2gPlEUkqENxQTHfF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/batreek~bulk-url-status-redirect-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-batreek-bulk-url-status-redirect-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/batreek~bulk-url-status-redirect-checker/runs": {
      "post": {
        "operationId": "runs-sync-batreek-bulk-url-status-redirect-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/batreek~bulk-url-status-redirect-checker/run-sync": {
      "post": {
        "operationId": "run-sync-batreek-bulk-url-status-redirect-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",
            "type": "array",
            "description": "URLs to check. One per item. Duplicates are checked once. Only http and https. 1,000 checked URLs cost $1.50.",
            "items": {
              "type": "string"
            }
          },
          "urlText": {
            "title": "URL list (paste)",
            "type": "string",
            "description": "Optional. One URL per line, pasted from a spreadsheet or sitemap export. Blank lines and lines starting with # are ignored. Combined with URLs above; the list above is checked first."
          },
          "maxUrls": {
            "title": "Max URLs to check",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum unique accepted URLs to check in this run. This caps the cost: 100 URLs ≈ $0.15, 1,000 ≈ $1.50, 10,000 ≈ $15.00, plus the $0.00005 start fee. Invalid URLs and duplicates are not charged and do not count toward this cap.",
            "default": 1000
          },
          "method": {
            "title": "HTTP method",
            "enum": [
              "GET",
              "HEAD"
            ],
            "type": "string",
            "description": "GET reads only the status line and a capped number of body bytes. HEAD does not download a body; some servers return a different status than GET.",
            "default": "GET"
          },
          "maxRedirectHops": {
            "title": "Max redirect hops to follow",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "How many HTTP redirects (301, 302, 303, 307, 308, and 300 with a Location) to follow. 0 records the first status and does not follow. The chain in the result includes every response. JavaScript and meta-refresh redirects are not followed.",
            "default": 10
          },
          "requestTimeoutSecs": {
            "title": "Timeout per request (seconds)",
            "minimum": 3,
            "maximum": 60,
            "type": "integer",
            "description": "Connect and read timeout for one hop, including each retry. The connect timeout is at most 10 seconds.",
            "default": 20
          },
          "urlTimeoutSecs": {
            "title": "Timeout per URL (seconds)",
            "minimum": 5,
            "maximum": 180,
            "type": "integer",
            "description": "Wall-clock limit for one URL, including every redirect hop and retry. Does not include the robots.txt lookup.",
            "default": 60
          },
          "maxRetries": {
            "title": "Retries for transient failures",
            "minimum": 0,
            "maximum": 2,
            "type": "integer",
            "description": "Extra attempts for timeouts, connection failures, and HTTP 408, 429, 502, 503, and 504. DNS and TLS errors are not retried. Retries are included in the one charge for that URL.",
            "default": 1
          },
          "maxResponseBytes": {
            "title": "Max body bytes to read",
            "minimum": 0,
            "maximum": 1048576,
            "type": "integer",
            "description": "Stop reading each response after this many bytes. The body is not saved. Redirect responses are not downloaded. 0 reads nothing after the headers.",
            "default": 65536
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "How many URLs are checked at the same time. Kept modest so a pasted list is not a flood.",
            "default": 8
          },
          "perHostConcurrency": {
            "title": "Max concurrency per host",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "Parallel requests to the same host. Redirects stay under the starting host's slot.",
            "default": 2
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Before checking a URL, fetch that origin's /robots.txt (not charged) and skip the URL when BulkUrlChecker is disallowed. 401 or 403 on robots.txt disallows the whole origin. Other robots.txt failures allow the check. Turn this off only for URLs you are allowed to request.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}