{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Screenshot API - Full Page, No Cookie Banners",
    "description": "Bulk screenshots of any URL: full page, single element or viewport, six device presets, PNG or JPEG. Removes cookie banners and reports whether it actually worked, so you can trust the image. Blocked, unreachable and mis-targeted pages are never charged.",
    "version": "0.1",
    "x-build-id": "YxY66z9spEIXFwwKE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apisight~website-screenshot-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apisight-website-screenshot-api",
        "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/apisight~website-screenshot-api/runs": {
      "post": {
        "operationId": "runs-sync-apisight-website-screenshot-api",
        "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/apisight~website-screenshot-api/run-sync": {
      "post": {
        "operationId": "run-sync-apisight-website-screenshot-api",
        "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": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "Pages to capture",
            "type": "array",
            "description": "URLs or bare domains to screenshot. Both \"example.com\" and \"https://example.com/pricing\" work. Up to 1,000 per run.",
            "default": [
              "apify.com"
            ],
            "items": {
              "type": "string"
            }
          },
          "device": {
            "title": "Device",
            "enum": [
              "desktop",
              "desktop-small",
              "laptop",
              "tablet",
              "mobile",
              "mobile-small"
            ],
            "type": "string",
            "description": "Viewport and pixel density to emulate. Mobile presets also set touch support and a mobile user agent, so responsive layouts render the way real visitors see them.",
            "default": "desktop"
          },
          "fullPage": {
            "title": "Full page",
            "type": "boolean",
            "description": "Capture the entire scrollable page instead of just the visible viewport. Pages taller than 20,000 px are clipped and flagged with 'truncated' rather than producing an unusable file.",
            "default": true
          },
          "format": {
            "title": "Image format",
            "enum": [
              "png",
              "jpeg"
            ],
            "type": "string",
            "description": "PNG is lossless and best for text and UI. JPEG is far smaller for photo-heavy pages and honours the quality setting.",
            "default": "png"
          },
          "quality": {
            "title": "JPEG quality",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "1-100. Applies to JPEG only; ignored for PNG.",
            "default": 85
          },
          "selector": {
            "title": "Capture one element (CSS selector)",
            "type": "string",
            "description": "Screenshot just this element instead of the page, e.g. \".pricing-table\" or \"#hero\". Leave empty to capture the page. If the selector is not found the target is reported as an error and is not charged."
          },
          "dismissConsent": {
            "title": "Dismiss cookie banners",
            "type": "boolean",
            "description": "Accepts or hides cookie-consent dialogs before capturing. Recognises OneTrust, Cookiebot, Usercentrics, Didomi, Quantcast, Sourcepoint, TrustArc, Complianz, Borlabs, CookieYes and ~15 more, with a generic fallback in 12 languages. Without this, screenshots of EU sites are usually just a photo of a consent overlay.",
            "default": true
          },
          "blockAds": {
            "title": "Block ads and trackers",
            "type": "boolean",
            "description": "Drops requests to known ad, analytics and tracker hosts. Produces cleaner images and loads ad-heavy pages substantially faster.",
            "default": true
          },
          "hideSelectors": {
            "title": "Hide elements (CSS selectors)",
            "type": "array",
            "description": "Extra elements to hide before capture, e.g. a sticky header or a chat widget.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "darkMode": {
            "title": "Dark mode",
            "type": "boolean",
            "description": "Emulates prefers-color-scheme: dark.",
            "default": false
          },
          "waitUntil": {
            "title": "Wait until",
            "enum": [
              "load",
              "domcontentloaded",
              "networkidle",
              "commit"
            ],
            "type": "string",
            "description": "How long to wait before capturing. 'load' suits most pages; 'networkidle' is better for heavy single-page apps but slower; 'domcontentloaded' is fastest.",
            "default": "load"
          },
          "delayMs": {
            "title": "Extra delay before capture",
            "minimum": 0,
            "maximum": 15000,
            "type": "integer",
            "description": "Additional wait in milliseconds after the page is ready. Useful for intro animations.",
            "default": 0
          },
          "lazyLoadMs": {
            "title": "Lazy-load scroll budget",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Time budget for scrolling the page to trigger lazy-loaded images before a full-page capture. Set to 0 to skip. Without it, full-page shots of modern sites contain blank image placeholders.",
            "default": 3000
          },
          "timeoutSecs": {
            "title": "Navigation timeout",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Seconds to wait for a page before giving up. A page that times out but has already painted is still captured.",
            "default": 30
          },
          "locale": {
            "title": "Locale",
            "type": "string",
            "description": "Browser locale, e.g. \"en-US\", \"de-DE\", \"nl-NL\". Affects language negotiation and date formats.",
            "default": "en-US"
          },
          "timezone": {
            "title": "Timezone",
            "type": "string",
            "description": "IANA timezone, e.g. \"Europe/Amsterdam\". Leave empty for the default."
          },
          "userAgent": {
            "title": "Custom user agent",
            "type": "string",
            "description": "Overrides the device preset's user agent. Leave empty unless you have a specific reason."
          },
          "maxConcurrency": {
            "title": "Parallel captures",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many pages to capture at once. Browser pages are memory-hungry; raise the Actor's memory if you raise this.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Routes the browser through Apify Proxy. Strongly recommended: many sites block shared cloud IPs, and blocked targets are never charged, so proxying yields more usable screenshots for the same spend.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}