{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Screenshot API: Full Page, Mobile and PDF",
    "description": "Take screenshots of any list of URLs as PNG, JPEG or PDF, at screen size or full page. Desktop, laptop, tablet or mobile view, cookie banners and ads hidden, lazy images loaded. Each row links to the file. Failed pages are free.",
    "version": "1.0",
    "x-build-id": "se5hjfBmLwknlnnQ9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/joesimo~website-screenshot/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-joesimo-website-screenshot",
        "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/joesimo~website-screenshot/runs": {
      "post": {
        "operationId": "runs-sync-joesimo-website-screenshot",
        "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/joesimo~website-screenshot/run-sync": {
      "post": {
        "operationId": "run-sync-joesimo-website-screenshot",
        "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": "Pages to capture. Full URLs or bare domains (https:// is added). One screenshot per URL.",
            "items": {
              "type": "string"
            }
          },
          "urlsText": {
            "title": "Bulk paste",
            "type": "string",
            "description": "Paste many URLs at once, separated by new lines, commas or spaces. Merged with the list above."
          },
          "device": {
            "title": "Device",
            "enum": [
              "desktop",
              "desktop-hd",
              "laptop",
              "tablet",
              "mobile"
            ],
            "type": "string",
            "description": "Screen size and type. Desktop 1366x768, Full HD 1920x1080, Laptop 1280x800, Tablet 820x1180 at 2x, Mobile 390x844 at 3x (iPhone size, mobile user agent).",
            "default": "desktop"
          },
          "format": {
            "title": "Format",
            "enum": [
              "png",
              "jpeg",
              "pdf"
            ],
            "type": "string",
            "description": "PNG is lossless, JPEG is 2 to 5 times smaller. PDF gives a printable document of the whole page with links and selectable text and is billed as Full page screenshot.",
            "default": "png"
          },
          "fullPage": {
            "title": "Full page",
            "type": "boolean",
            "description": "Capture the whole scrollable page, up to Max page height. Off (default) captures the first screen the visitor sees. Full page captures are billed as Full page screenshot, see Pricing.",
            "default": false
          },
          "hideCookieBanners": {
            "title": "Hide cookie banners",
            "type": "boolean",
            "description": "Hide consent pop-ups of OneTrust, Cookiebot, Didomi, Usercentrics, Quantcast, TrustArc and about 30 other tools with CSS. Nothing is clicked or accepted.",
            "default": true
          },
          "blockAds": {
            "title": "Block ads and trackers",
            "type": "boolean",
            "description": "Skip requests to about 50 ad, tracking and analytics networks. Pages load faster and look cleaner.",
            "default": true
          },
          "jpegQuality": {
            "title": "JPEG quality",
            "minimum": 10,
            "maximum": 100,
            "type": "integer",
            "description": "10 to 100. Used only for JPEG.",
            "default": 80
          },
          "maxHeight": {
            "title": "Maximum height (px)",
            "minimum": 500,
            "maximum": 16000,
            "type": "integer",
            "description": "Full page captures stop at this height, so endless feeds do not produce giant files. Taller pages are cut and marked truncated. On mobile (3x) the limit is 5,333 px because browsers cannot paint more than about 16,000 device pixels at once.",
            "default": 10000
          },
          "viewportWidth": {
            "title": "Custom viewport width",
            "minimum": 240,
            "maximum": 3840,
            "type": "integer",
            "description": "Override the device width in CSS pixels (240 to 3840)."
          },
          "viewportHeight": {
            "title": "Custom viewport height",
            "minimum": 240,
            "maximum": 2160,
            "type": "integer",
            "description": "Override the device height in CSS pixels (240 to 2160). This is the size of a viewport-only capture."
          },
          "deviceScaleFactor": {
            "title": "Pixel density",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "Override the device pixel ratio: 1, 2 (retina) or 3. Higher values make sharper and larger files."
          },
          "delaySecs": {
            "title": "Extra wait (seconds)",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Extra wait after the page loads and settles, for sliders, charts and late content. Usually not needed: the Actor already waits for the load event and a short network quiet period.",
            "default": 0
          },
          "waitUntil": {
            "title": "Page is ready when",
            "enum": [
              "load",
              "domcontentloaded",
              "networkidle"
            ],
            "type": "string",
            "description": "Load event (default, capped at 12 seconds so pages with endless trackers still get captured), DOM ready (fastest) or network idle (slowest, for apps that fetch data after load).",
            "default": "load"
          },
          "waitForSelector": {
            "title": "Wait for element",
            "type": "string",
            "description": "Optional CSS selector to wait for before the capture, for example .price or #chart."
          },
          "selector": {
            "title": "Capture one element only",
            "type": "string",
            "description": "Optional CSS selector. The capture is cropped to the first matching element, for example header or #pricing."
          },
          "hideSelectors": {
            "title": "Hide elements",
            "type": "array",
            "description": "CSS selectors to hide before the capture, for example chat widgets or newsletter pop-ups.",
            "items": {
              "type": "string"
            }
          },
          "scrollToLoad": {
            "title": "Scroll to load lazy images",
            "type": "boolean",
            "description": "Scroll down the page before a full page capture so lazy-loaded images appear.",
            "default": true
          },
          "darkMode": {
            "title": "Dark mode",
            "type": "boolean",
            "description": "Ask the page for its dark color scheme (works on sites that support prefers-color-scheme).",
            "default": false
          },
          "pdfPageFormat": {
            "title": "PDF paper size",
            "enum": [
              "A4",
              "Letter",
              "Legal",
              "A3"
            ],
            "type": "string",
            "description": "Used only for PDF.",
            "default": "A4"
          },
          "timeoutSecs": {
            "title": "Timeout per page (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Give up on a page after this long. Timed out pages are free.",
            "default": 30
          },
          "maxConcurrency": {
            "title": "Pages in parallel",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Pages captured in parallel. Default depends on memory: screen-size captures run 2 at 1 GB, 4 at 2 GB, 8 at 4 GB; full page and PDF captures run 1 at 1 GB, 2 at 2 GB, 4 at 4 GB, 8 above. Tall pages need about 500 MB each."
          },
          "maxItems": {
            "title": "Maximum URLs",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many URLs. 0 means no limit.",
            "default": 0
          },
          "dedupe": {
            "title": "Remove duplicate URLs",
            "type": "boolean",
            "description": "Capture each URL once even if it is listed several times.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}