{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Screenshot Generator",
    "description": "Capture bulk website screenshots and downloadable PDFs with full-page, element, mobile, dark-mode, and overlay-hiding controls.",
    "version": "0.1",
    "x-build-id": "zVBW1aYkIENvOncOu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fetch_cat~website-screenshot-generator/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fetch_cat-website-screenshot-generator",
        "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/fetch_cat~website-screenshot-generator/runs": {
      "post": {
        "operationId": "runs-sync-fetch_cat-website-screenshot-generator",
        "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/fetch_cat~website-screenshot-generator/run-sync": {
      "post": {
        "operationId": "run-sync-fetch_cat-website-screenshot-generator",
        "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": "Page URLs",
            "minItems": 1,
            "maxItems": 1000,
            "type": "array",
            "description": "1–1000 public HTTP or HTTPS page URLs. Add one URL per page, not a remote URL list. Embedded credentials and private destinations are not supported.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "screenshotType": {
            "title": "Screenshot type",
            "enum": [
              "viewport",
              "fullPage"
            ],
            "type": "string",
            "description": "Capture the viewport or a full-page image. Full-page images are clipped at the configured height, 3840 CSS-pixel width or 8-million-physical-pixel cap and marked truncated. Ignored for PDF output.",
            "default": "viewport"
          },
          "outputFormat": {
            "title": "Output format",
            "enum": [
              "png",
              "jpeg",
              "pdf"
            ],
            "type": "string",
            "description": "Choose PNG, JPEG, or PDF output.",
            "default": "png"
          },
          "viewport": {
            "title": "Viewport",
            "type": "object",
            "description": "Browser viewport in CSS pixels. Density multiplies both image axes. Viewport-only images exceeding 8,000,000 physical pixels reject before browser work; reduce dimensions or density. Full-page images are clipped to the safety budget.",
            "properties": {
              "width": {
                "title": "Width",
                "description": "Viewport width in pixels.",
                "type": "integer",
                "minimum": 320,
                "maximum": 3840,
                "default": 1366
              },
              "height": {
                "title": "Height",
                "description": "Viewport height in pixels.",
                "type": "integer",
                "minimum": 240,
                "maximum": 2160,
                "default": 768
              },
              "deviceScaleFactor": {
                "title": "Device scale factor",
                "description": "Pixel density multiplier.",
                "type": "number",
                "minimum": 1,
                "maximum": 3,
                "default": 1
              },
              "isMobile": {
                "title": "Mobile viewport",
                "description": "Emulate a mobile-style viewport.",
                "type": "boolean",
                "default": false
              }
            }
          },
          "waitUntil": {
            "title": "Wait until",
            "enum": [
              "auto",
              "domcontentloaded",
              "load",
              "networkidle"
            ],
            "type": "string",
            "description": "Automatic checks visible content and important images without waiting for background traffic. Full-page images and PDFs receive bounded lazy-loading scrolling; limits and unfinished lower content are reported in warnings. Selectors and extra delay still apply. Explicit DOM, load and network-idle settings retain existing behavior, including warned load fallback and narrowly verified product DOM fallback for image output. Lazy content may remain incomplete even when truncated=false; pending requests are never reported as idle.",
            "default": "auto"
          },
          "delayMs": {
            "title": "Extra delay in milliseconds",
            "minimum": 0,
            "maximum": 30000,
            "type": "integer",
            "description": "Optional delay after the selected load milestone. Pages run one at a time. If these delays alone cannot fit runTimeSecs minus a five-second reserve, the run succeeds without captures and displays an explicit invalid-recipe warning before capture work. Split the URLs into smaller runs or reduce delayMs; navigation, rendering and storage need additional time.",
            "default": 0
          },
          "selector": {
            "title": "Element selector",
            "maxLength": 2000,
            "type": "string",
            "description": "Optional CSS selector. The first visible element's measured rectangle is captured for images. Elements exceeding 8,000,000 physical pixels fail without encoding or retrying; reduce element size or density. Ignored for PDF."
          },
          "waitForSelector": {
            "title": "Wait for selector",
            "maxLength": 2000,
            "type": "string",
            "description": "Optional CSS selector that must become visible before capture. Use this for client-rendered content."
          },
          "hideSelectors": {
            "title": "Hide elements",
            "maxItems": 100,
            "type": "array",
            "description": "Up to 100 CSS selectors to hide before capture, for example cookie banners or sticky overlays. Each selector can contain up to 2000 characters.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "jpegQuality": {
            "title": "JPEG quality",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "JPEG quality from 1 to 100. Used only when output format is JPEG.",
            "default": 85
          },
          "colorScheme": {
            "title": "Color scheme",
            "enum": [
              "no-preference",
              "light",
              "dark"
            ],
            "type": "string",
            "description": "Preferred browser color scheme for sites that support light or dark mode.",
            "default": "no-preference"
          },
          "maxFullPageHeight": {
            "title": "Maximum full-page height",
            "minimum": 1000,
            "maximum": 50000,
            "type": "integer",
            "description": "Maximum full-page image height in CSS pixels. Images also obey a 3840 CSS-pixel width and 8,000,000 physical-pixel safety cap, so actual height can be lower. Clipped images are marked truncated."
          },
          "captureTimeoutSecs": {
            "title": "Timeout per page",
            "minimum": 15,
            "maximum": 120,
            "type": "integer",
            "description": "Maximum seconds for each navigation, selector wait or image operation, also subject to the total capture budget. A page can require several operations.",
            "default": 60
          },
          "maxRetries": {
            "title": "Retries per page",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "Retry transient navigation, proxy, and rendering failures. Validation and certificate failures are not retried.",
            "default": 2
          },
          "runTimeSecs": {
            "title": "Capture time budget",
            "minimum": 60,
            "maximum": 585,
            "type": "integer",
            "description": "Total capture budget from input processing, independent of the platform timeout. At expiry, the browser is closed and completed results are retained. Lower platform timeouts can still interrupt the run. Restarts and resurrection do not replay captures from an already started run.",
            "default": 570
          },
          "maxConcurrency": {
            "title": "Maximum concurrent pages",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Requested upper bound, retained for saved-task/API compatibility. The current safety ceiling is one active page, including navigation, image/PDF encoding and file persistence. Higher requested values do not create concurrent pages.",
            "default": 2
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Managed datacenter proxy is the existing default for omitted API inputs and new forms. Existing managed groups/countries and customer proxy URLs remain supported. Explicit useApifyProxy:false without customer proxy URLs attempts direct access, with no paid fallback. Direct cloud egress may fail. Choose either managed proxy or customer URLs, not both. Proxy and browser usage can incur platform costs even when captures fail. No new Automatic strategy is available."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}