{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Screenshot & PDF: No Cookie Banners",
    "description": "Bulk website screenshots as PNG, JPEG, WebP or PDF. Full page or viewport, desktop, laptop, tablet and mobile presets, element capture, lazy images loaded, cookie banners hidden without accepting anything, dark mode. Public file links in the output. Failed URLs are free.",
    "version": "0.1",
    "x-build-id": "aAX7CYjZJ1f0lQUF3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/webify-lab~website-screenshot-pdf/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-webify-lab-website-screenshot-pdf",
        "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/webify-lab~website-screenshot-pdf/runs": {
      "post": {
        "operationId": "runs-sync-webify-lab-website-screenshot-pdf",
        "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/webify-lab~website-screenshot-pdf/run-sync": {
      "post": {
        "operationId": "run-sync-webify-lab-website-screenshot-pdf",
        "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": {
          "urls": {
            "title": "URLs",
            "type": "array",
            "description": "Pages to capture. http(s) is added when missing. Duplicates are skipped.",
            "items": {
              "type": "string"
            }
          },
          "formats": {
            "title": "Formats",
            "type": "array",
            "description": "One file per format and URL. All formats come from the same page load.",
            "items": {
              "type": "string",
              "enum": [
                "png",
                "jpeg",
                "webp",
                "pdf"
              ],
              "enumTitles": [
                "PNG",
                "JPEG",
                "WebP",
                "PDF"
              ]
            },
            "default": [
              "png"
            ]
          },
          "fullPage": {
            "title": "Full page",
            "type": "boolean",
            "description": "Capture the whole scrollable page. Off captures only the visible viewport.",
            "default": true
          },
          "device": {
            "title": "Device",
            "enum": [
              "desktop",
              "laptop",
              "tablet",
              "mobile",
              "custom"
            ],
            "type": "string",
            "description": "Viewport preset. Mobile and tablet use a mobile user agent, touch and a high pixel density.",
            "default": "desktop"
          },
          "width": {
            "title": "Custom width (px)",
            "minimum": 200,
            "maximum": 3840,
            "type": "integer",
            "description": "Only used with device 'custom'.",
            "default": 1440
          },
          "height": {
            "title": "Custom height (px)",
            "minimum": 200,
            "maximum": 4320,
            "type": "integer",
            "description": "Only used with device 'custom'.",
            "default": 900
          },
          "deviceScaleFactor": {
            "title": "Pixel density override",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "Optional. 1 keeps files small, 2 or 3 gives retina images. Empty uses the preset (desktop 1, tablet 2, mobile 3)."
          },
          "selector": {
            "title": "Capture one element (CSS selector)",
            "type": "string",
            "description": "Optional. Captures only the first matching element, e.g. #pricing or header. Images only; PDFs always contain the page."
          },
          "waitUntil": {
            "title": "Wait until",
            "enum": [
              "load",
              "networkidle"
            ],
            "type": "string",
            "description": "When the page counts as loaded. Network idle is capped, so pages with endless polling still get captured.",
            "default": "load"
          },
          "delayMs": {
            "title": "Extra delay (ms)",
            "minimum": 0,
            "maximum": 30000,
            "type": "integer",
            "description": "Wait this long after loading, before capturing.",
            "default": 500
          },
          "scrollPage": {
            "title": "Scroll through the page first",
            "type": "boolean",
            "description": "Scrolls down step by step to trigger lazy-loaded images, then back to the top.",
            "default": true
          },
          "hideCookieBanners": {
            "title": "Hide cookie and consent banners",
            "type": "boolean",
            "description": "Removes consent banners of common platforms (OneTrust, Cookiebot, Usercentrics, Sourcepoint, Borlabs, Complianz and more) plus large fixed overlays that talk about cookies. Nothing is accepted or clicked.",
            "default": true
          },
          "darkMode": {
            "title": "Dark mode",
            "type": "boolean",
            "description": "Emulates prefers-color-scheme: dark. Only sites that support dark mode change.",
            "default": false
          },
          "hideSelectors": {
            "title": "Hide elements (CSS selectors)",
            "type": "array",
            "description": "Optional. Elements to hide before capturing, e.g. chat widgets or ad slots.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "jpegQuality": {
            "title": "JPEG and WebP quality",
            "minimum": 10,
            "maximum": 100,
            "type": "integer",
            "description": "Lower is smaller. Does not affect PNG.",
            "default": 80
          },
          "maxHeight": {
            "title": "Max full-page height (px)",
            "minimum": 1000,
            "maximum": 30000,
            "type": "integer",
            "description": "Very long or infinite pages are cut at this height (CSS pixels).",
            "default": 16000
          },
          "pdfFormat": {
            "title": "PDF paper size",
            "enum": [
              "A4",
              "Letter"
            ],
            "type": "string",
            "description": "Only for PDF.",
            "default": "A4"
          },
          "pdfLandscape": {
            "title": "PDF landscape",
            "type": "boolean",
            "description": "Only for PDF.",
            "default": false
          },
          "pdfPrintBackground": {
            "title": "PDF with backgrounds",
            "type": "boolean",
            "description": "Include background colors and images in the PDF.",
            "default": true
          },
          "captureErrorPages": {
            "title": "Capture error pages (HTTP 4xx/5xx)",
            "type": "boolean",
            "description": "Off: a 404 or 500 page returns an error item and is not charged. On: the error page is captured and charged like any other page.",
            "default": false
          },
          "concurrency": {
            "title": "Parallel pages",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Pages processed at the same time in one browser. More needs more memory (about 1 GB per 3 pages).",
            "default": 3
          },
          "timeoutSecs": {
            "title": "Timeout per URL (seconds)",
            "minimum": 15,
            "maximum": 300,
            "type": "integer",
            "description": "Whole budget per URL including load, scrolling and capturing.",
            "default": 90
          },
          "maxUrls": {
            "title": "Max URLs",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Safety limit per run.",
            "default": 1000
          },
          "proxyStrategy": {
            "title": "Proxy strategy",
            "enum": [
              "auto",
              "proxy",
              "direct"
            ],
            "type": "string",
            "description": "Automatic keeps costs low and retries through the proxy only when a page answers 403, 429 or shows a bot check.",
            "default": "auto"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Used for blocked pages (automatic) or for every page (always). Residential works best for strict sites.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}