{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Screenshot & PDF",
    "description": "Take screenshots of web pages, or save them as PDF. Full page or visible area, desktop, tablet or phone size, PNG, JPEG or WebP. Hide elements by CSS selector, scroll first so lazy images load. One file and one result row per page.",
    "version": "1.0",
    "x-build-id": "p3szyVBQvkfLL2CZ9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cyber1nj3ct0r~website-screenshot/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cyber1nj3ct0r-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/cyber1nj3ct0r~website-screenshot/runs": {
      "post": {
        "operationId": "runs-sync-cyber1nj3ct0r-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/cyber1nj3ct0r~website-screenshot/run-sync": {
      "post": {
        "operationId": "run-sync-cyber1nj3ct0r-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",
        "required": [
          "urls"
        ],
        "properties": {
          "urls": {
            "title": "Web addresses",
            "minItems": 1,
            "type": "array",
            "description": "The pages to capture, for example <code>https://www.example.com/pricing</code>. Add them one by one, paste many at once with <b>Bulk edit</b>, or link a text file that lists them. Only these pages are opened (plus what they load to display themselves); no links are followed. Duplicates are captured once.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "format": {
            "title": "File format",
            "enum": [
              "png",
              "jpeg",
              "webp",
              "pdf"
            ],
            "type": "string",
            "description": "<b>PNG</b> is lossless and best for text and screens. <b>JPEG</b> and <b>WebP</b> make smaller files (set the quality under More options). <b>PDF</b> prints the page onto paper-sized pages, like Print to PDF in a browser, and keeps the text selectable.",
            "default": "png"
          },
          "fullPage": {
            "title": "Capture the whole page",
            "type": "boolean",
            "description": "On: the image shows the page from top to bottom, up to the maximum height set under More options. Off: only the part you see without scrolling. Has no effect on PDF, which always holds the whole page.",
            "default": true
          },
          "device": {
            "title": "Screen",
            "enum": [
              "desktop",
              "tablet",
              "mobile"
            ],
            "type": "string",
            "description": "<b>Desktop</b> uses the width and height set below. <b>Tablet</b> (820 x 1180, double pixel density) and <b>Phone</b> (390 x 844, double pixel density) use their own sizes and touch-screen settings, so responsive pages show their tablet or phone layout. The tool does not pose as a tablet or phone in its User-Agent, so a site that picks its layout from the User-Agent instead of the screen width still shows its desktop version.",
            "default": "desktop"
          },
          "viewportWidth": {
            "title": "Screen width",
            "minimum": 200,
            "maximum": 3840,
            "type": "integer",
            "description": "Width of the browser window in pixels. Used when Screen is Desktop. A full-page image has this width.",
            "default": 1280
          },
          "viewportHeight": {
            "title": "Screen height",
            "minimum": 200,
            "maximum": 3840,
            "type": "integer",
            "description": "Height of the browser window in pixels. Used when Screen is Desktop. It sets the height of an image that does not capture the whole page, and what <code>100vh</code> means on the page.",
            "default": 800
          },
          "waitUntil": {
            "title": "Wait until",
            "enum": [
              "load",
              "domcontentloaded",
              "networkidle2"
            ],
            "type": "string",
            "description": "When the page counts as loaded. <b>Page loaded</b> waits for the page and its images. <b>DOM ready</b> is faster but may catch images half loaded. <b>Network almost idle</b> also waits until the page has stopped fetching data (at most two requests in flight for half a second); it is the most complete for pages that build themselves with JavaScript, but sites that keep polling a server may need the whole page timeout.",
            "default": "load"
          },
          "delayMs": {
            "title": "Extra wait before capturing",
            "minimum": 0,
            "maximum": 30000,
            "type": "integer",
            "description": "Extra time to wait after the page has loaded, for animations, fade-ins and late scripts to finish. 0 means no extra wait.",
            "default": 0
          },
          "scrollToLoad": {
            "title": "Scroll through the page first",
            "type": "boolean",
            "description": "Many pages load their images only when you scroll to them. On: the tool scrolls down the page once, then back to the top, before it captures (full-page images and PDFs). Turn it off to capture faster, or for pages that react badly to scrolling.",
            "default": true
          },
          "blockTrackers": {
            "title": "Skip ads and trackers",
            "type": "boolean",
            "description": "On: requests to well-known analytics, tag-manager and advertising hosts (Google Analytics, Google Tag Manager, Segment, Facebook and LinkedIn pixels, ad networks and similar) are not made. These scripts draw little a screenshot needs and on many sites they use more processing than the rest of the page, so pages load and capture faster. The page can look slightly different: ad slots stay empty, and a widget that a tag manager would have added may be missing. Turn it off to load the page exactly as a visitor's browser does. The result's <code>skippedTrackers</code> says how many requests were skipped.",
            "default": true
          },
          "hideSelectors": {
            "title": "Hide these elements",
            "maxItems": 50,
            "type": "array",
            "description": "CSS selectors of elements to hide before capturing, for example <code>#cookie-banner</code> or <code>.chat-widget</code>. The tool never clicks or accepts anything on a page by itself. A selector that matches nothing, or is not valid, is reported in the result's <code>warnings</code>.",
            "items": {
              "type": "string"
            }
          },
          "quality": {
            "title": "JPEG and WebP quality",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "From 1 (smallest file) to 100 (best picture). Used for JPEG and WebP; PNG is always lossless.",
            "default": 80
          },
          "deviceScaleFactor": {
            "title": "Pixel density",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "How many image pixels make up one screen pixel: 1 is a normal screen, 2 and 3 are sharp (\"retina\") screens and give images that are 2 or 3 times as wide and tall. Leave empty to use the setting of the chosen screen (1 for Desktop, 2 for Tablet and Phone). Very large images are shortened, see Maximum page height."
          },
          "pdfFormat": {
            "title": "PDF paper size",
            "enum": [
              "A4",
              "Letter"
            ],
            "type": "string",
            "description": "Paper size of the PDF pages.",
            "default": "A4"
          },
          "printBackground": {
            "title": "Print backgrounds in PDF",
            "type": "boolean",
            "description": "On: background colours and images are part of the PDF, as on screen. Off: they are left out, as in a browser's print dialog by default.",
            "default": true
          },
          "maxHeight": {
            "title": "Maximum page height",
            "minimum": 500,
            "maximum": 30000,
            "type": "integer",
            "description": "A full-page image is cut off at this height, in screen pixels, so that endless pages cannot make huge files. The result says <code>truncated: true</code> when this happened. Images are also limited to about 50 million pixels in total, which matters mainly with a high pixel density.",
            "default": 16000
          },
          "timeoutSecs": {
            "title": "Page timeout",
            "minimum": 5,
            "maximum": 180,
            "type": "integer",
            "description": "How long to wait for a page to load. If the page itself has arrived but is still loading some extra resource when the time is up, it is captured as it is and the result carries a warning. If nothing arrives, the result carries the error TIMEOUT.",
            "default": 45
          },
          "concurrency": {
            "title": "Pages at the same time",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many pages are captured in parallel. Higher is faster for long lists and needs more memory: the default of 2 GB is meant for normal pages at up to 5 at a time; very tall pages, a high pixel density or long PDFs need more, or fewer pages at the same time. At most two pages of the same website are open at once.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}