{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Screenshot API & PDF - Full Page, No Cookie Banners",
    "description": "Full-page screenshots and PDFs of any list of URLs, with cookie banners and most pop-ups hidden, lazy images loaded, animations finished and sticky headers shown once. Emoji and Chinese, Japanese and Korean text render. Desktop, tablet or phone; JPEG, PNG or WebP. Failed pages are not charged.",
    "version": "0.0",
    "x-build-id": "nAvWpkF50FtKvIEW2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/serla~website-screenshot-pdf/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-serla-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/serla~website-screenshot-pdf/runs": {
      "post": {
        "operationId": "runs-sync-serla-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/serla~website-screenshot-pdf/run-sync": {
      "post": {
        "operationId": "run-sync-serla-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": "Web pages to capture. One screenshot per URL (duplicates are captured once). A URL without http(s):// gets https://.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "device": {
            "title": "Device",
            "enum": [
              "desktop-1920",
              "desktop-1440",
              "desktop-1366",
              "tablet-ipad",
              "mobile-iphone",
              "mobile-android",
              "custom"
            ],
            "type": "string",
            "description": "Screen size and device the page is rendered for. Mobile and tablet presets also send a matching mobile user agent and touch support.",
            "default": "desktop-1440"
          },
          "viewportWidth": {
            "title": "Custom width (px)",
            "minimum": 200,
            "maximum": 3840,
            "type": "integer",
            "description": "Only used when Device is 'Custom size'."
          },
          "viewportHeight": {
            "title": "Custom height (px)",
            "minimum": 200,
            "maximum": 4000,
            "type": "integer",
            "description": "Only used when Device is 'Custom size'. The visible window height; full-page captures still include the whole page."
          },
          "deviceScaleFactor": {
            "title": "Pixel density",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "1 = standard, 2 = retina. Leave empty to use the device preset's density. Higher density means larger files."
          },
          "fullPage": {
            "title": "Full page",
            "type": "boolean",
            "description": "Capture the whole page from top to bottom. Off = only the first screen.",
            "default": true
          },
          "maxHeight": {
            "title": "Maximum height (px)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop a full-page capture at this height (CSS pixels). Use it to capture only the upper part of long pages. 0 = no limit (very tall pages are still cut at about 16,000 device pixels, which is Chrome's limit; the output says 'truncated').",
            "default": 15000
          },
          "selector": {
            "title": "Capture one element (CSS selector)",
            "type": "string",
            "description": "Optional. Capture only the first element matching this selector, e.g. 'main', '#pricing' or '.chart'."
          },
          "format": {
            "title": "Image format",
            "enum": [
              "png",
              "jpeg",
              "webp"
            ],
            "type": "string",
            "description": "JPEG (the default) keeps full pages small and fast. PNG is lossless and sharpest for text; WebP is the smallest. Set JPEG/WebP quality below.",
            "default": "jpeg"
          },
          "quality": {
            "title": "JPEG/WebP quality",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "1-100. Ignored for PNG.",
            "default": 85
          },
          "savePdf": {
            "title": "Also save a PDF",
            "type": "boolean",
            "description": "Print each page to PDF as well (charged as a separate PDF event).",
            "default": false
          },
          "pdfFormat": {
            "title": "PDF paper size",
            "enum": [
              "A4",
              "Letter",
              "Legal",
              "A3"
            ],
            "type": "string",
            "description": "Paper size of the PDF.",
            "default": "A4"
          },
          "pdfLandscape": {
            "title": "PDF landscape",
            "type": "boolean",
            "description": "Print the PDF in landscape orientation instead of portrait.",
            "default": false
          },
          "pdfMaxPages": {
            "title": "PDF: at most this many pages",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Long, photo-heavy pages make very large PDFs (a news front page with 330 photos came to about 54 MB). The PDF stops after this many pages; raise it if you need the whole document.",
            "default": 50
          },
          "hideCookieBanners": {
            "title": "Hide cookie and consent banners",
            "type": "boolean",
            "description": "Hides the banners of common consent tools (OneTrust, Cookiebot, Didomi, Quantcast, TrustArc, Usercentrics, CookieYes, Sourcepoint, iubenda and more) and similar dialogs, and restores page scrolling. Nothing is clicked, so no consent is given.",
            "default": true
          },
          "hidePopups": {
            "title": "Hide pop-ups and closable bars",
            "type": "boolean",
            "description": "Hides newsletter, app-install and notification pop-ups and closable bars that float over the page. Only floating elements with a close button (or marked as a modal dialog) are hidden, so headers, menus and tab bars stay.",
            "default": true
          },
          "hideSelectors": {
            "title": "Also hide these elements",
            "type": "array",
            "description": "CSS selectors to hide before capturing, e.g. chat widgets or newsletter pop-ups.",
            "items": {
              "type": "string"
            }
          },
          "stickyElements": {
            "title": "Sticky headers and fixed bars (full page)",
            "enum": [
              "once",
              "hide",
              "keep"
            ],
            "type": "string",
            "description": "In full-page captures, fixed headers, sidebars and chat buttons can repeat or cover content. 'Show once' pins them where they sit at the top of the page.",
            "default": "once"
          },
          "scrollToLoad": {
            "title": "Scroll to load lazy images",
            "type": "boolean",
            "description": "Scrolls through the page first so lazy-loaded images, maps and lists appear, then returns to the top.",
            "default": true
          },
          "scrollTimeoutSecs": {
            "title": "Scrolling time limit (s)",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "Upper limit for the lazy-loading scroll (pages with endless feeds stop here).",
            "default": 20
          },
          "waitUntil": {
            "title": "Wait until",
            "enum": [
              "load",
              "domcontentloaded",
              "networkidle2",
              "networkidle0"
            ],
            "type": "string",
            "description": "When the page counts as loaded before the extra waits.",
            "default": "networkidle2"
          },
          "waitForSelector": {
            "title": "Wait for this element",
            "type": "string",
            "description": "Optional CSS selector that must be visible before the capture (e.g. a chart that renders late)."
          },
          "delayMs": {
            "title": "Extra delay (ms)",
            "minimum": 0,
            "maximum": 30000,
            "type": "integer",
            "description": "Waits this long after everything has loaded, for animations to finish.",
            "default": 500
          },
          "darkMode": {
            "title": "Dark mode",
            "type": "boolean",
            "description": "Render the page as if the visitor's system uses dark mode (for sites that support it).",
            "default": false
          },
          "stopAnimations": {
            "title": "Stop animations",
            "type": "boolean",
            "description": "Animations and transitions jump to their end state and videos pause, so nothing is caught half-way and long pages capture faster. Turn off to capture the page exactly as it moves.",
            "default": true
          },
          "blockAds": {
            "title": "Block common ad networks",
            "type": "boolean",
            "description": "Blocks requests to well-known ad servers. Empty ad slots may remain as blank space.",
            "default": false
          },
          "cookies": {
            "title": "Cookies",
            "type": "array",
            "description": "Optional cookies for pages that need your own session, e.g. [{\"name\": \"session\", \"value\": \"...\", \"domain\": \".example.com\"}]. Only use cookies you are allowed to use."
          },
          "userAgent": {
            "title": "User agent",
            "type": "string",
            "description": "Optional. Overrides the browser's user agent."
          },
          "pageTimeoutSecs": {
            "title": "Page timeout (s)",
            "minimum": 5,
            "maximum": 300,
            "type": "integer",
            "description": "How long to wait for one page to load before the attempt counts as failed.",
            "default": 60
          },
          "maxRetries": {
            "title": "Retries per URL",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Failed pages are retried this many times. Failed pages are never charged.",
            "default": 2
          },
          "maxConcurrency": {
            "title": "Pages at the same time",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many pages are captured at the same time. Leave empty to capture one page per GB of memory the run has (4 at the default 4 GB). Lower it for very heavy pages if runs fail with memory errors."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}