{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Screenshot API: Full Page, Mobile & URL to PDF",
    "description": "Screenshot a list of URLs as PNG, JPEG, WebP or PDF: full page, first screen, one element, or an exact clip rectangle, on desktop, tablet, mobile or a custom size. Wait for an element, skip ads and fonts if you want. Failed or blank pages are free.",
    "version": "1.0",
    "x-build-id": "73EjjiIEW5F0VZzCw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jtpalms~website-screenshot/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jtpalms-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/jtpalms~website-screenshot/runs": {
      "post": {
        "operationId": "runs-sync-jtpalms-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/jtpalms~website-screenshot/run-sync": {
      "post": {
        "operationId": "run-sync-jtpalms-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": "URLs",
            "type": "array",
            "description": "Web pages to capture, one per line. Full URLs or bare domains (example.com). Duplicates are removed automatically.",
            "items": {
              "type": "string"
            }
          },
          "device": {
            "title": "Device",
            "enum": [
              "desktop",
              "laptop",
              "tablet",
              "mobile",
              "custom"
            ],
            "type": "string",
            "description": "Screen size to emulate. Tablet and mobile emulate a touch screen of that size, so responsive sites show their mobile layout. Only the screen is emulated: the user agent is always the browser's own headless Chrome one plus this actor's name (mobile adds the word Mobile), never a fake iPhone or desktop browser. Some sites block bots.",
            "default": "desktop"
          },
          "width": {
            "title": "Custom width (pixels)",
            "minimum": 200,
            "maximum": 3840,
            "type": "integer",
            "description": "Viewport width when Device is \"Custom\". If you change the width or height while Device is Desktop, the custom size is used.",
            "default": 1440
          },
          "height": {
            "title": "Custom height (pixels)",
            "minimum": 200,
            "maximum": 4320,
            "type": "integer",
            "description": "Viewport height when Device is \"Custom\". With Full page on, this is the height of the first screen; the image is as tall as the page.",
            "default": 900
          },
          "fullPage": {
            "title": "Full page",
            "type": "boolean",
            "description": "Capture the whole scrollable page. Turn off to capture only the first screen (what a visitor sees without scrolling). Ignored when an element or a clip rectangle is set.",
            "default": true
          },
          "format": {
            "title": "File format",
            "enum": [
              "png",
              "jpeg",
              "webp",
              "pdf"
            ],
            "type": "string",
            "description": "PNG is lossless. JPEG and WebP are much smaller. PDF prints the page to A4 or Letter pages with selectable text and working links.",
            "default": "png"
          },
          "selector": {
            "title": "Element to capture (CSS selector)",
            "type": "string",
            "description": "Optional. Capture only the first element matching this CSS selector, for example `#pricing`, `.product-card` or `table.infobox`. Leave empty for the whole page. Not used for PDF."
          },
          "clipX": {
            "title": "Clip: left (pixels)",
            "minimum": 0,
            "maximum": 3839,
            "type": "integer",
            "description": "Optional clip rectangle, in CSS pixels from the top-left corner of the page. A clip is used when Clip width or Clip height is set. Left edge; empty means 0."
          },
          "clipY": {
            "title": "Clip: top (pixels)",
            "minimum": 0,
            "maximum": 59999,
            "type": "integer",
            "description": "Top edge of the clip, measured from the top of the page (not the screen), so 2000 starts 2,000 px down. Empty means 0."
          },
          "clipWidth": {
            "title": "Clip: width (pixels)",
            "minimum": 1,
            "maximum": 3840,
            "type": "integer",
            "description": "Width of the clip. Empty means the rest of the screen width."
          },
          "clipHeight": {
            "title": "Clip: height (pixels)",
            "minimum": 1,
            "maximum": 60000,
            "type": "integer",
            "description": "Height of the clip, for example 1200 for the top 1,200 px of the page. Empty means down to the end of the page (up to Maximum page height)."
          },
          "blockCookieBanners": {
            "title": "Hide cookie banners",
            "type": "boolean",
            "description": "Hide cookie and consent banners (OneTrust, Cookiebot, Didomi, Quantcast, TrustArc, Usercentrics, Sourcepoint and 25 more, plus a generic detector). Where a banner offers it, the actor clicks \"reject\" or \"necessary only\". It never accepts cookies for you.",
            "default": true
          },
          "hideSelectors": {
            "title": "Hide these elements (CSS selectors)",
            "type": "array",
            "description": "Optional. Elements to remove before capturing, one CSS selector per line. Useful for chat widgets, promo bars or ads, for example `#intercom-container` or `.newsletter-popup`.",
            "items": {
              "type": "string"
            }
          },
          "scrollToLoadLazy": {
            "title": "Load lazy images",
            "type": "boolean",
            "description": "Scroll through the page before capturing so lazy-loaded images and sections appear, then scroll back to the top.",
            "default": true
          },
          "darkMode": {
            "title": "Dark mode",
            "type": "boolean",
            "description": "Tell the site the visitor prefers a dark color scheme. Sites that support dark mode will render in it.",
            "default": false
          },
          "blockRequests": {
            "title": "Skip loading",
            "type": "array",
            "description": "Optional, off by default. Skip third-party ads and analytics (ad networks, analytics, tag managers, session recorders, social tracking pixels; the site's own requests are never skipped), web font files (text falls back to system fonts, and icon fonts can show as boxes), or video and audio. Pages load with fewer requests; ads leave empty space and sites that load content through a tag manager can look different.",
            "items": {
              "type": "string",
              "enum": [
                "ads-trackers",
                "fonts",
                "media"
              ],
              "enumTitles": [
                "Ads and analytics (third party)",
                "Web fonts",
                "Video and audio"
              ]
            }
          },
          "waitUntil": {
            "title": "Wait until",
            "enum": [
              "load",
              "domcontentloaded",
              "networkidle"
            ],
            "type": "string",
            "description": "When the page counts as loaded. \"Load\" suits most sites. \"Network idle\" waits until no requests happen for half a second (slower, best for heavy single-page apps). If the chosen point is not reached in time, the actor still captures what has rendered and adds a warning.",
            "default": "load"
          },
          "waitForSelector": {
            "title": "Wait for element (CSS selector)",
            "type": "string",
            "description": "Optional. Wait until an element matching this CSS selector is visible before capturing, for example `.price` or `#chart canvas`. If it does not appear within the page load timeout, the URL fails and is not charged."
          },
          "delaySecs": {
            "title": "Extra delay (seconds)",
            "minimum": 0,
            "maximum": 60,
            "type": "integer",
            "description": "Wait this long after the page has loaded and before capturing. Use it for pages with intro animations or charts that draw slowly.",
            "default": 0
          },
          "timeoutSecs": {
            "title": "Page load timeout (seconds)",
            "minimum": 10,
            "maximum": 300,
            "type": "integer",
            "description": "Maximum time to wait for each page to load.",
            "default": 45
          },
          "quality": {
            "title": "JPEG and WebP quality",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "1 to 100. Higher is sharper and larger. Ignored for PNG and PDF.",
            "default": 80
          },
          "deviceScaleFactor": {
            "title": "Pixel density",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "1 gives images at CSS pixel size (a 1440 px wide desktop shot). 2 or 3 gives sharp retina images, 2 or 3 times as wide and tall.",
            "default": 1
          },
          "maxHeight": {
            "title": "Maximum page height (pixels)",
            "minimum": 500,
            "maximum": 60000,
            "type": "integer",
            "description": "Full-page captures of endless pages are cut at this height, measured in CSS pixels. The row then has truncated = true. WebP images are limited to 16,383 pixels per side, so long WebP captures are cut there.",
            "default": 20000
          },
          "pdfPaperSize": {
            "title": "PDF paper size",
            "enum": [
              "A4",
              "Letter",
              "Legal",
              "A3"
            ],
            "type": "string",
            "description": "Page size for PDF output. The page is scaled so its layout matches the chosen device width.",
            "default": "A4"
          },
          "maxConcurrency": {
            "title": "Parallel pages",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many pages to load at the same time. Each needs about 1.1 GB of memory for full-page captures, so 3 fits the default 4 GB. If the run has less memory, the actor lowers this number automatically.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Load pages through a proxy, for example to see a site as visitors in another country see it. It does not get past CAPTCHAs or bot protection. Data center proxies only; residential proxies are not supported."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}