{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Screenshot API — URL to PNG, JPEG, PDF | $3.50/1k",
    "description": "Screenshot any list of URLs: PNG or JPEG plus optional PDF, desktop/laptop/tablet/mobile viewports, full-page mode, wait for selector or delay, cookie banners and ads hidden. Returns image link, final URL, HTTP status, title, timings.",
    "version": "0.1",
    "x-build-id": "rrh6RFU27t6a0nDq5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/glasswing~website-screenshot-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-glasswing-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/glasswing~website-screenshot-api/runs": {
      "post": {
        "operationId": "runs-sync-glasswing-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/glasswing~website-screenshot-api/run-sync": {
      "post": {
        "operationId": "run-sync-glasswing-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",
        "properties": {
          "startUrls": {
            "title": "URLs",
            "uniqueItems": true,
            "type": "array",
            "description": "Web pages to capture, one per line. Bare domains such as apify.com are accepted (https:// is added). Each URL is opened once in a fresh browser tab.",
            "default": [
              "https://www.python.org/",
              "https://www.wikipedia.org/",
              "https://apify.com/",
              "https://en.wikipedia.org/wiki/Web_scraping",
              "https://www.iana.org/help/example-domains"
            ],
            "items": {
              "type": "string"
            }
          },
          "viewport": {
            "title": "Viewport preset",
            "enum": [
              "desktop",
              "laptop",
              "tablet",
              "mobile"
            ],
            "type": "string",
            "description": "Browser window to emulate: desktop 1920x1080, laptop 1366x768, tablet 820x1180 (touch, iPad user agent) or mobile 390x844 at 2x (touch, iPhone user agent).",
            "default": "desktop"
          },
          "viewportWidth": {
            "title": "Custom viewport width (px)",
            "minimum": 240,
            "maximum": 3840,
            "type": "integer",
            "description": "Optional. Overrides the preset width (240-3840)."
          },
          "viewportHeight": {
            "title": "Custom viewport height (px)",
            "minimum": 240,
            "maximum": 4320,
            "type": "integer",
            "description": "Optional. Overrides the preset height (240-4320)."
          },
          "deviceScaleFactor": {
            "title": "Device scale factor",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "Optional. 1 = normal, 2 = retina (twice the pixels, bigger files), 3 = maximum. Default comes from the preset (mobile 2, others 1)."
          },
          "fullPage": {
            "title": "Full-page screenshot",
            "type": "boolean",
            "description": "Capture the whole scrollable page instead of only the visible window. The page is scrolled once first so lazy-loaded images appear.",
            "default": false
          },
          "maxPageHeight": {
            "title": "Maximum full-page height (px)",
            "minimum": 500,
            "maximum": 30000,
            "type": "integer",
            "description": "Full-page screenshots are cut at this height so endless feeds stay a sensible size.",
            "default": 10000
          },
          "format": {
            "title": "Image format",
            "enum": [
              "auto",
              "png",
              "jpeg"
            ],
            "type": "string",
            "description": "Auto (default) saves PNG for window screenshots and JPEG for full-page ones (full-page PNGs are 5-10x bigger). PNG is lossless; JPEG is much smaller for photo-heavy pages.",
            "default": "auto"
          },
          "jpegQuality": {
            "title": "JPEG quality",
            "minimum": 10,
            "maximum": 100,
            "type": "integer",
            "description": "10-100, used whenever a JPEG is saved.",
            "default": 80
          },
          "savePdf": {
            "title": "Also save a PDF",
            "type": "boolean",
            "description": "Also print each page to an A4 PDF (with backgrounds) and return its URL in pdfUrl. Included in the price.",
            "default": false
          },
          "waitUntil": {
            "title": "Wait until",
            "enum": [
              "load",
              "domcontentloaded",
              "networkidle"
            ],
            "type": "string",
            "description": "When the page counts as loaded: load (default), domcontentloaded (faster) or networkidle (waits up to 10 s for the network to go quiet; best for dashboards and charts).",
            "default": "load"
          },
          "waitForSelector": {
            "title": "Wait for CSS selector",
            "type": "string",
            "description": "Optional. Wait until an element matching this CSS selector is visible (up to 15 s) before the screenshot. The row reports selectorFound."
          },
          "delayMs": {
            "title": "Extra delay (ms)",
            "minimum": 0,
            "maximum": 30000,
            "type": "integer",
            "description": "Optional pause after loading and before the screenshot, for animations (0-30000).",
            "default": 0
          },
          "hideCookieBanners": {
            "title": "Hide cookie banners",
            "type": "boolean",
            "description": "Hide the consent banners of common cookie platforms (OneTrust, Cookiebot, Usercentrics, Didomi, Quantcast, TrustArc, Sourcepoint and others) with CSS. Nothing is clicked or accepted.",
            "default": true
          },
          "blockAds": {
            "title": "Block ads and trackers",
            "type": "boolean",
            "description": "Skip requests to about 100 ad, analytics and tag-manager networks (Google Ads, Taboola, Outbrain, Criteo, Hotjar and others) plus video streams. Pages load faster and screenshots show the content without ad slots filling in. Turn off to capture ads too.",
            "default": true
          },
          "hideSelectors": {
            "title": "Extra CSS selectors to hide",
            "type": "array",
            "description": "Optional. CSS selectors of elements to hide before the screenshot (chat widgets, sticky headers, ads).",
            "items": {
              "type": "string"
            }
          },
          "scrollToLoad": {
            "title": "Scroll to load lazy images (full page)",
            "type": "boolean",
            "description": "For full-page screenshots, scroll down once before capturing so lazy-loaded images and sections render.",
            "default": true
          },
          "navigationTimeoutSecs": {
            "title": "Page load timeout (s)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "How long to wait for a page to load (5-60). A page that answered but is still loading is captured as it is.",
            "default": 30
          },
          "maxItems": {
            "title": "Maximum screenshots",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many URLs. Each saved screenshot with status ok is one billable result; failed pages are free.",
            "default": 100
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Off by default: pages are opened directly from Apify's servers. Enable Apify Proxy (datacenter) to capture from other IPs or countries.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}