{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk URL Status & SSL Checker: Redirects & Expiry",
    "description": "Check thousands of URLs at once: final HTTP status, full redirect chain, response time, HTTPS, security headers, and SSL certificate issuer, expiry date and days left. Find broken links, bad redirects and expiring certificates.",
    "version": "0.1",
    "x-build-id": "XdZFABspkUUxh4OES"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/redfoxscout~url-status-ssl-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-redfoxscout-url-status-ssl-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/redfoxscout~url-status-ssl-checker/runs": {
      "post": {
        "operationId": "runs-sync-redfoxscout-url-status-ssl-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/redfoxscout~url-status-ssl-checker/run-sync": {
      "post": {
        "operationId": "run-sync-redfoxscout-url-status-ssl-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 or bare domains, one per line. Or use \"Websites from another Actor\" below.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (optional)",
            "type": "array",
            "description": "Same as the list above, in Apify's standard start-URL format (handy when another tool or Actor passes startUrls).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "datasetId": {
            "title": "Websites from another Actor (optional)",
            "type": "string",
            "description": "Check the websites in another Actor run's results, e.g. Google Maps Scraper or any lead list. Pick the dataset here, or in an Actor-to-Actor integration set it to {{resource.defaultDatasetId}}. Its websites are added to the list above."
          },
          "datasetUrlField": {
            "title": "Field with the website",
            "type": "string",
            "description": "The dataset field that holds the website or URL, e.g. website (Google Maps Scraper), url or domain. Dot paths like contact.website work. If it is empty, website, url and domain are tried.",
            "default": "website"
          },
          "maxDatasetItems": {
            "title": "Max dataset rows",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Read at most this many rows from that dataset.",
            "default": 10000
          },
          "monitorName": {
            "title": "Change alert name (optional)",
            "type": "string",
            "description": "Name this list (e.g. \"clients-weekly\") to compare each run with the previous run of the same name. Every row then gets changeStatus (new, changed or unchanged) and changedFields. Best on an Apify schedule."
          },
          "onlyChanges": {
            "title": "Only new and changed sites in the results",
            "type": "boolean",
            "description": "Needs a change alert name. Unchanged sites are still checked and charged as usual, but left out of the results, so each run's dataset is your change report.",
            "default": false
          },
          "sslExpiringWithinDays": {
            "title": "SSL expires within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "A certificate that expires within this many days, or has already expired, is reported in the problem field. Use 0 to flag only certificates that have already expired.",
            "default": 30
          },
          "onlyProblems": {
            "title": "Only problem URLs in the results",
            "type": "boolean",
            "description": "Keep only URLs with a problem: HTTP 4xx/5xx, redirect loop, too many redirects, invalid or expired certificate, or a certificate expiring within the days above. URLs that cannot be reached at all are always kept (free). Healthy URLs are left out of the results and are free.",
            "default": false
          },
          "checkLinksOnPage": {
            "title": "Check the links on each page (broken link checker)",
            "type": "boolean",
            "description": "Turn on to check every link on each URL in the list. You get one row per link with its source page, anchor text and status. Each checked link is charged like a URL. Pages with more links than the cap are checked up to the cap.",
            "default": false
          },
          "checkExternalLinks": {
            "title": "Include links to other sites",
            "type": "boolean",
            "description": "Links on each page only: also check links that leave the page's site. Turn off to check internal links only.",
            "default": true
          },
          "checkAssets": {
            "title": "Include images, scripts and stylesheets",
            "type": "boolean",
            "description": "Links on each page only: also check image, script, stylesheet and iframe addresses. Off by default because a page can have many of them.",
            "default": false
          },
          "maxLinksPerPage": {
            "title": "Max links per page",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Links on each page only: check at most this many unique links on each page. The rest are skipped and not charged.",
            "default": 100
          },
          "method": {
            "title": "HTTP method",
            "enum": [
              "GET",
              "HEAD"
            ],
            "type": "string",
            "description": "GET (default) reads each response the way a browser does. HEAD is faster and lighter: it asks for headers only, and a URL that refuses HEAD is checked again with GET.",
            "default": "GET"
          },
          "followRedirects": {
            "title": "Follow redirects",
            "type": "boolean",
            "description": "Follow each redirect to the final page (default). Turn off to report only the first response, for example to audit one redirect at a time.",
            "default": true
          },
          "maxRedirects": {
            "title": "Max redirects",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Stop after this many redirects. A URL that still redirects at that point is reported as Too many redirects.",
            "default": 10
          },
          "userAgent": {
            "title": "User agent (optional)",
            "type": "string",
            "description": "The browser identity sent with each request. Leave empty for a current Chrome user agent. Some sites answer bots differently."
          },
          "slowThresholdMs": {
            "title": "Slow above (ms)",
            "minimum": 1,
            "maximum": 60000,
            "type": "integer",
            "description": "A URL whose response takes longer than this gets isSlow = true.",
            "default": 2000
          },
          "maxConcurrency": {
            "title": "Sites in parallel",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many sites to check at once.",
            "default": 20
          },
          "requestTimeoutSecs": {
            "title": "Timeout per site (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Give up on a site after this long.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Off by default. Turn on if some sites block or rate-limit the checks.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}