{
  "openapi": "3.0.1",
  "info": {
    "title": "Ultimate Website Screenshot / PDF / Video",
    "description": "Capture JPEG/PNG screenshots, PDFs, GIFs and MP4s of any website. 12+ device presets, full-page, custom viewport, scroll-to-bottom, cookie injection, proxy support.",
    "version": "0.1",
    "x-build-id": "dEzu93TMUWbJj87Hk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~ultimate-screenshot/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-ultimate-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/crawlerbros~ultimate-screenshot/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-ultimate-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/crawlerbros~ultimate-screenshot/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-ultimate-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": [
          "linkUrls"
        ],
        "properties": {
          "linkUrls": {
            "title": "URLs to Capture",
            "type": "array",
            "description": "List of page URLs to capture as screenshot / PDF / GIF / MP4.",
            "default": [
              "https://apify.com"
            ],
            "items": {
              "type": "string"
            }
          },
          "outputFormat": {
            "title": "Output Format",
            "enum": [
              "jpeg",
              "png",
              "pdf",
              "gif",
              "mp4"
            ],
            "type": "string",
            "description": "Choose capture format.",
            "default": "jpeg"
          },
          "fullPage": {
            "title": "Full Page",
            "type": "boolean",
            "description": "Capture the entire scrollable page (images/PDF only).",
            "default": false
          },
          "waitUntil": {
            "title": "Wait Until",
            "enum": [
              "load",
              "domcontentloaded",
              "networkidle"
            ],
            "type": "string",
            "description": "Playwright navigation waitUntil condition.",
            "default": "networkidle"
          },
          "timeoutSeconds": {
            "title": "Navigation Timeout (seconds)",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "Maximum seconds to wait for page navigation.",
            "default": 30
          },
          "delayBeforeScreenshotMs": {
            "title": "Delay Before Capture (ms)",
            "minimum": 0,
            "maximum": 30000,
            "type": "integer",
            "description": "Extra wait after load before capturing, in milliseconds.",
            "default": 1500
          },
          "device": {
            "title": "Device Preset",
            "enum": [
              "Desktop 1920x1080",
              "Desktop 2560x1440",
              "Desktop 1440x900",
              "Laptop 1366x768",
              "MacBook Pro 14",
              "MacBook Pro 16",
              "iMac 27",
              "iPhone SE",
              "iPhone 12",
              "iPhone 13",
              "iPhone 14",
              "iPhone 14 Pro Max",
              "iPhone 15",
              "iPhone 15 Pro",
              "iPhone 15 Pro Max",
              "iPad Mini",
              "iPad Air",
              "iPad 10.2",
              "iPad Pro",
              "Pixel 5",
              "Pixel 7",
              "Pixel 8",
              "Pixel 8 Pro",
              "Galaxy S22",
              "Galaxy S23",
              "Galaxy S24",
              "Galaxy S24 Ultra",
              "Galaxy Z Fold 5",
              "OnePlus 11",
              "Surface Duo 2",
              "Custom"
            ],
            "type": "string",
            "description": "Pick a device preset to emulate, or Custom to use the windowWidth / windowHeight fields.",
            "default": "Desktop 1920x1080"
          },
          "windowWidth": {
            "title": "Window Width (Custom device)",
            "minimum": 200,
            "maximum": 3840,
            "type": "integer",
            "description": "Viewport width in pixels (used only when Device = Custom).",
            "default": 1920
          },
          "windowHeight": {
            "title": "Window Height (Custom device)",
            "minimum": 200,
            "maximum": 2400,
            "type": "integer",
            "description": "Viewport height in pixels (used only when Device = Custom).",
            "default": 1080
          },
          "scrollToBottom": {
            "title": "Scroll To Bottom First",
            "type": "boolean",
            "description": "Scroll to page bottom before capture to trigger lazy-loaded content.",
            "default": false
          },
          "jpegQuality": {
            "title": "JPEG Quality",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "JPEG compression quality 1-100.",
            "default": 85
          },
          "pdfFormat": {
            "title": "PDF Paper Size",
            "enum": [
              "A4",
              "Letter",
              "Legal"
            ],
            "type": "string",
            "description": "Paper size for PDF output.",
            "default": "A4"
          },
          "pdfPrintBackground": {
            "title": "PDF: Print Backgrounds",
            "type": "boolean",
            "description": "Render CSS backgrounds and colors in the PDF.",
            "default": true
          },
          "pdfMarginTop": {
            "title": "PDF Margin Top (mm)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Top margin of the PDF in millimeters.",
            "default": 10
          },
          "pdfMarginRight": {
            "title": "PDF Margin Right (mm)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Right margin of the PDF in millimeters.",
            "default": 10
          },
          "pdfMarginBottom": {
            "title": "PDF Margin Bottom (mm)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Bottom margin of the PDF in millimeters.",
            "default": 10
          },
          "pdfMarginLeft": {
            "title": "PDF Margin Left (mm)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Left margin of the PDF in millimeters.",
            "default": 10
          },
          "videoFrameCount": {
            "title": "Video/GIF Frame Count",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Number of frames to capture for GIF/MP4 output.",
            "default": 30
          },
          "videoFrameIntervalMs": {
            "title": "Frame Interval (ms)",
            "minimum": 50,
            "maximum": 2000,
            "type": "integer",
            "description": "Milliseconds to wait between frames.",
            "default": 200
          },
          "videoFps": {
            "title": "Output FPS",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "Playback frames per second for the rendered GIF/MP4.",
            "default": 10
          },
          "videoScrollStepPx": {
            "title": "Scroll Step (px per frame)",
            "minimum": 0,
            "maximum": 2000,
            "type": "integer",
            "description": "Pixels to scroll down between consecutive frames.",
            "default": 400
          },
          "cookies": {
            "title": "Cookies",
            "type": "array",
            "description": "Optional list of cookies to inject. Each entry: {name, value, domain?}. Domain derives from URL if omitted.",
            "default": []
          },
          "enableSSL": {
            "title": "Enforce SSL",
            "type": "boolean",
            "description": "If false (default), ignore HTTPS certificate errors.",
            "default": false
          },
          "autoProxyFallback": {
            "title": "Auto-retry blocked captures via proxy",
            "type": "boolean",
            "description": "When the primary capture returns a suspiciously small file (e.g. an Akamai/Cloudflare block page on banks, airlines, Amazon product pages), automatically retry that URL once via Apify residential proxy. Only blocked URLs burn proxy credits. Turn off to guarantee zero proxy spend.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration (use for ALL captures)",
            "type": "object",
            "description": "Force every capture through this proxy. Prefer `autoProxyFallback` — it only uses proxy on blocked pages.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}