{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Screenshot API - $1/1k, Webpage to Image, URL to PNG",
    "description": "Website screenshot API: turn any public URL into a full-page or viewport PNG, JPEG or PDF with real Chromium. Desktop, tablet and mobile viewports, wait for selector, delay, dark mode, hide cookie banners and any element, capture one element, only-new mode for monitoring. Direct file URLs. Works fro",
    "version": "0.1",
    "x-build-id": "Mwv4K9XA1U2SfsRo6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/martin10291~website-screenshot-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-martin10291-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/martin10291~website-screenshot-api/runs": {
      "post": {
        "operationId": "runs-sync-martin10291-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/martin10291~website-screenshot-api/run-sync": {
      "post": {
        "operationId": "run-sync-martin10291-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": {
          "urls": {
            "title": "URLs",
            "type": "array",
            "description": "Public web pages to capture, one URL per entry (http or https; a bare domain like example.com also works). Login pages and private network addresses are not supported.",
            "default": [
              "https://apify.com",
              "https://en.wikipedia.org/wiki/Screenshot",
              "https://www.python.org"
            ],
            "items": {
              "type": "string"
            }
          },
          "device": {
            "title": "Device",
            "enum": [
              "desktop",
              "desktop-hd",
              "laptop",
              "tablet",
              "mobile"
            ],
            "type": "string",
            "description": "Viewport preset: desktop 1366x768, desktop-hd 1920x1080, laptop 1280x800, tablet 820x1180 (2x), mobile 390x844 (3x, touch). The real Chromium browser is used for all of them.",
            "default": "desktop"
          },
          "fullPage": {
            "title": "Full page",
            "type": "boolean",
            "description": "Capture the whole scrollable page (up to Max height). Off = only the visible viewport, like a thumbnail.",
            "default": true
          },
          "format": {
            "title": "Output format",
            "enum": [
              "png",
              "jpeg",
              "pdf"
            ],
            "type": "string",
            "description": "PNG (lossless), JPEG (smaller files, set JPEG quality) or PDF (one long page with backgrounds).",
            "default": "png"
          },
          "jpegQuality": {
            "title": "JPEG quality",
            "minimum": 10,
            "maximum": 100,
            "type": "integer",
            "description": "Only for JPEG: 10-100. Lower = smaller file.",
            "default": 80
          },
          "viewportWidth": {
            "title": "Custom viewport width (px)",
            "minimum": 0,
            "maximum": 3840,
            "type": "integer",
            "description": "Optional. Overrides the device preset width (320-3840). 0 = use the preset.",
            "default": 0
          },
          "viewportHeight": {
            "title": "Custom viewport height (px)",
            "minimum": 0,
            "maximum": 2160,
            "type": "integer",
            "description": "Optional. Overrides the device preset height (240-2160). 0 = use the preset.",
            "default": 0
          },
          "maxHeight": {
            "title": "Max height for full page (px)",
            "minimum": 500,
            "maximum": 30000,
            "type": "integer",
            "description": "Full-page captures are cut at this height (very long pages make huge files). The truncated flag tells you when this happened.",
            "default": 10000
          },
          "waitUntil": {
            "title": "Wait until",
            "enum": [
              "load",
              "domcontentloaded",
              "networkidle"
            ],
            "type": "string",
            "description": "When the page counts as loaded: load (default), domcontentloaded (fastest), networkidle (no network for 500 ms, best for heavy JavaScript apps).",
            "default": "load"
          },
          "delayMs": {
            "title": "Extra delay (ms)",
            "minimum": 0,
            "maximum": 30000,
            "type": "integer",
            "description": "Wait this long after loading before the capture (animations, charts, fonts). 0-30000.",
            "default": 0
          },
          "waitForSelector": {
            "title": "Wait for CSS selector",
            "type": "string",
            "description": "Optional. Wait until this element is visible before the capture, for example #main or .chart-ready."
          },
          "elementSelector": {
            "title": "Capture only this element",
            "type": "string",
            "description": "Optional CSS selector. When set, only the first matching element is captured (PNG/JPEG), for example header, #pricing or .product-card."
          },
          "hideCookieBanners": {
            "title": "Hide cookie banners",
            "type": "boolean",
            "description": "Hide common cookie/consent popups (OneTrust, Cookiebot, Usercentrics, Didomi, Quantcast and more) with CSS so they do not cover the page. Nothing is clicked or accepted.",
            "default": true
          },
          "hideSelectors": {
            "title": "Hide these elements",
            "type": "array",
            "description": "Optional CSS selectors to hide before the capture (chat widgets, sticky headers, ads), one per entry.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "darkMode": {
            "title": "Dark mode",
            "type": "boolean",
            "description": "Ask the page for its dark color scheme (prefers-color-scheme: dark).",
            "default": false
          },
          "scrollToLoadImages": {
            "title": "Scroll to load lazy images",
            "type": "boolean",
            "description": "For full-page captures: scroll through the page first so lazy-loaded images appear.",
            "default": true
          },
          "maxUrls": {
            "title": "Max URLs",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Hard limit on URLs captured in one run (also limits what you pay for).",
            "default": 100
          },
          "concurrency": {
            "title": "Parallel pages",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "How many pages are captured at the same time (1-4). 2 is safe with 1 GB memory; use 4 with 2 GB or more.",
            "default": 2
          },
          "timeoutSecs": {
            "title": "Timeout per page (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Give up on a page that does not load within this time. If the page is partly loaded, it is still captured with a warning.",
            "default": 30
          },
          "onlyNew": {
            "title": "Only new or changed pages",
            "type": "boolean",
            "description": "For monitoring: save (and pay for) a screenshot only when the visible text of the page changed since the last run with the same Monitor ID.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Separate memory for different watch lists (used with only-new mode).",
            "default": "default"
          },
          "includeFailed": {
            "title": "Include failed pages in results",
            "type": "boolean",
            "description": "When on, pages that fail (HTTP error, timeout, refused address) are also saved with an error message and are charged like normal results. When off, failures are only listed in the RUN_SUMMARY record.",
            "default": false
          },
          "datasetId": {
            "title": "Dataset (integration input)",
            "type": "string",
            "description": "Optional. Pick a dataset (or paste its ID) to read the input from, for example the result of Google Maps Scraper. When this actor runs as an integration, the dataset of the triggering run is used automatically (payload.resource.defaultDatasetId), so you can leave this empty. If set, the values found in the dataset replace the main input list."
          },
          "datasetField": {
            "title": "Dataset field",
            "type": "string",
            "description": "Optional. The item field that holds the value, for example website, url or videoUrl (dot paths like author.url work). Empty = detected automatically."
          },
          "datasetMaxItems": {
            "title": "Max values from the dataset",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Upper limit of unique values taken from the dataset, to keep the cost under control.",
            "default": 1000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}