{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk Website Screenshot & URL to PDF: Full Page, Mobile",
    "description": "Bulk website screenshots and URL to PDF, no coding: paste URLs in the form, click Start, download the files. Full-page or viewport PNG/JPEG, desktop or mobile, cookie banners removed. $3.75 per 1,000 files.",
    "version": "0.1",
    "x-build-id": "5M2fgiPH5HDlNLXsZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alpine-data~web-screenshot-pdf/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alpine-data-web-screenshot-pdf",
        "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/alpine-data~web-screenshot-pdf/runs": {
      "post": {
        "operationId": "runs-sync-alpine-data-web-screenshot-pdf",
        "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/alpine-data~web-screenshot-pdf/run-sync": {
      "post": {
        "operationId": "run-sync-alpine-data-web-screenshot-pdf",
        "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": "1. Which web pages? (URLs or domains)",
            "type": "array",
            "description": "One address per line (commas also work). https:// is optional: apify.com, www.example.com/pricing and https://example.org all work. Duplicates are removed, invalid lines are skipped for free. Public pages only (no logins). Up to 1,000 URLs per run. If you leave this empty, a paid example screenshot of https://apify.com is taken (~$0.005).",
            "items": {
              "type": "string"
            }
          },
          "format": {
            "title": "2. Image format",
            "enum": [
              "png",
              "jpeg"
            ],
            "type": "string",
            "description": "PNG = sharp, lossless (best for text and UI). JPEG = smaller files (best for photo-heavy pages and large batches).",
            "default": "png"
          },
          "fullPage": {
            "title": "3. Full-page screenshot",
            "type": "boolean",
            "description": "On = the whole page from top to bottom (scrolling screenshot). Off = only the visible screen area (viewport, 'above the fold').",
            "default": true
          },
          "device": {
            "title": "4. Device",
            "enum": [
              "desktop",
              "mobile"
            ],
            "type": "string",
            "description": "Desktop = 1280 px wide laptop browser. Mobile = 412 px wide smartphone (Android Chrome) with a mobile user agent and touch, so you get the site's mobile layout.",
            "default": "desktop"
          },
          "savePdf": {
            "title": "Also save the page as PDF",
            "type": "boolean",
            "description": "Creates a searchable PDF of each page (text stays selectable). Counts as a second file per URL.",
            "default": false
          },
          "pdfFormat": {
            "title": "PDF paper size",
            "enum": [
              "A4",
              "Letter"
            ],
            "type": "string",
            "description": "A4 (Europe/most of the world) or US Letter.",
            "default": "A4"
          },
          "pdfMedia": {
            "title": "PDF look",
            "enum": [
              "print",
              "screen"
            ],
            "type": "string",
            "description": "As printed = like the browser's 'Save as PDF' (uses the site's print layout, often cleaner). As on screen = looks like the website on screen.",
            "default": "print"
          },
          "saveScreenshot": {
            "title": "Save the screenshot image",
            "type": "boolean",
            "description": "Switch off to get only PDFs (URL to PDF converter mode).",
            "default": true
          },
          "dismissCookieBanners": {
            "title": "Remove cookie banners and consent pop-ups",
            "type": "boolean",
            "description": "Clicks 'Accept' on common consent tools (OneTrust, Cookiebot, Usercentrics, Didomi, Quantcast and others) and hides remaining cookie overlays, so they don't cover the page. Best effort: unusual banners may stay.",
            "default": true
          },
          "closePopups": {
            "title": "Close pop-ups and overlays",
            "type": "boolean",
            "description": "Closes or hides big pop-ups that cover the page (newsletter sign-ups, subscription teasers, full-screen ads), using their close button where possible. Switch off if you want the page exactly as a first-time visitor sees it.",
            "default": true
          },
          "blockAds": {
            "title": "Block ads and trackers",
            "type": "boolean",
            "description": "Blocks ad networks and tracking scripts (Google Ads, Taboola, Criteo, analytics...). Pages load faster and screenshots are cleaner. Switch off if you need the page with its ads, e.g. to document ad placements.",
            "default": true
          },
          "waitUntil": {
            "title": "Wait until",
            "enum": [
              "networkidle",
              "load",
              "domcontentloaded"
            ],
            "type": "string",
            "description": "When to take the picture. 'Network idle' waits until the page stopped loading data (max 10 s extra), best for modern sites. 'Page loaded' is faster. 'HTML ready' is fastest but images may be missing.",
            "default": "networkidle"
          },
          "delaySeconds": {
            "title": "Extra delay before the screenshot (seconds)",
            "minimum": 0,
            "maximum": 30,
            "type": "number",
            "description": "Waits this long after loading, e.g. for animations, sliders or charts. 0 to 30 seconds.",
            "default": 1
          },
          "hideSelectors": {
            "title": "Hide these elements (CSS selectors)",
            "type": "array",
            "description": "Optional. One CSS selector per line, e.g. #chat-widget, .newsletter-popup, header. Matching elements are hidden before the screenshot.",
            "items": {
              "type": "string"
            }
          },
          "viewportWidth": {
            "title": "Custom viewport width (px)",
            "minimum": 0,
            "maximum": 3840,
            "type": "integer",
            "description": "0 = device default (1280 desktop, 412 mobile). For example 1920 for a Full-HD screen or 768 for a tablet.",
            "default": 0
          },
          "viewportHeight": {
            "title": "Custom viewport height (px)",
            "minimum": 0,
            "maximum": 4000,
            "type": "integer",
            "description": "0 = device default (800 desktop, 915 mobile). Only changes the picture size when 'Full-page screenshot' is off.",
            "default": 0
          },
          "jpegQuality": {
            "title": "JPEG quality (1-100)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Only used for JPEG. 80 is a good balance of quality and size; 100 = best quality, largest files.",
            "default": 80
          },
          "retina": {
            "title": "High resolution (2x, retina)",
            "type": "boolean",
            "description": "Doubles the pixel density for crisp images on retina screens. Files get about 3-4x bigger.",
            "default": false
          },
          "scrollToLoadImages": {
            "title": "Scroll down first to load lazy images",
            "type": "boolean",
            "description": "For full-page screenshots: scrolls through the page once so that images loaded on scroll appear.",
            "default": true
          },
          "maxPageHeight": {
            "title": "Max page height (px)",
            "minimum": 500,
            "maximum": 20000,
            "type": "integer",
            "description": "Height cap for full-page screenshots. Taller pages are cut at this height (default 15,000 px, about 15 screen heights); the row then says truncated: true and the note gives the real page height. Keeps very long or endless-scroll pages (news homepages, long lists) fast, the file size reasonable and the price per file fixed. Maximum 20,000 px.",
            "default": 15000
          },
          "timeoutSeconds": {
            "title": "Timeout per page (seconds)",
            "minimum": 5,
            "maximum": 180,
            "type": "integer",
            "description": "Stop waiting for a page to finish loading after this many seconds (default 30) and capture what is shown. Pages that show nothing in time are free.",
            "default": 30
          },
          "captureErrorPages": {
            "title": "Capture error pages (404, 403, 500...)",
            "type": "boolean",
            "description": "Off = pages that return an HTTP error are reported as failed and not charged. On = capture them anyway (charged), e.g. to document a broken page.",
            "default": false
          },
          "ignoreHttpsErrors": {
            "title": "Accept invalid HTTPS certificates",
            "type": "boolean",
            "description": "On = pages with an expired or self-signed certificate are still captured (as before). Off = such pages fail with a certificate error and are not charged.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Pages in parallel",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many pages are opened at the same time. More is faster but needs more memory (about 600 MB per page; it is reduced automatically to fit).",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}