{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Screenshot & PDF Capture with App Store Sizes",
    "description": "Capture website screenshots and PDFs in bulk: full page or element, PNG/JPEG/WebP/PDF, desktop/tablet/mobile emulation, dark mode, cookie banners hidden, and exact App Store Connect screenshot sizes (iPhone 6.9\"/6.5\"/6.3\"/6.1\"/5.5\", iPad 13\"/11\", Mac). Pay only per delivered capture.",
    "version": "0.1",
    "x-build-id": "X0IQ0SiKKWmnccZeG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/blackcatforge~screenshot-capture/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-blackcatforge-screenshot-capture",
        "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/blackcatforge~screenshot-capture/runs": {
      "post": {
        "operationId": "runs-sync-blackcatforge-screenshot-capture",
        "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/blackcatforge~screenshot-capture/run-sync": {
      "post": {
        "operationId": "run-sync-blackcatforge-screenshot-capture",
        "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": "Website URLs",
            "type": "array",
            "description": "Pages to capture. 'example.com' is fine (https is assumed). Each URL is captured once per selected size.",
            "items": {
              "type": "string"
            }
          },
          "urlsText": {
            "title": "Bulk paste (one URL per line)",
            "type": "string",
            "description": "Optional: paste a long list of URLs, one per line."
          },
          "presets": {
            "title": "Sizes / devices",
            "type": "array",
            "description": "One capture (and one charge) per URL per size. App Store presets produce the exact pixel sizes App Store Connect accepts, without an alpha channel.",
            "items": {
              "type": "string",
              "enum": [
                "desktop-1920",
                "desktop-1440",
                "laptop-1366",
                "desktop-1440-retina",
                "tablet",
                "mobile",
                "og-image",
                "appstore-iphone-6.9",
                "appstore-iphone-6.5",
                "appstore-iphone-6.3",
                "appstore-iphone-6.1",
                "appstore-iphone-5.5",
                "appstore-ipad-13",
                "appstore-ipad-11",
                "appstore-mac",
                "custom"
              ],
              "enumTitles": [
                "Desktop 1920x1080",
                "Desktop 1440x900",
                "Laptop 1366x768",
                "Desktop 1440x900 @2x (2880x1800)",
                "Tablet (iPad Air, 820x1180 @2x)",
                "Mobile (iPhone, 390x844 @3x)",
                "Social preview / Open Graph 1200x630",
                "App Store iPhone 6.9\" (1320x2868)",
                "App Store iPhone 6.5\" (1284x2778)",
                "App Store iPhone 6.3\" (1206x2622)",
                "App Store iPhone 6.1\" (1170x2532)",
                "App Store iPhone 5.5\" (1242x2208)",
                "App Store iPad 13\" (2064x2752)",
                "App Store iPad 11\" (1668x2420)",
                "Mac App Store (2880x1800)",
                "Custom size (see Custom size below)"
              ]
            },
            "default": [
              "desktop-1920"
            ]
          },
          "format": {
            "title": "Output format",
            "enum": [
              "png",
              "jpeg",
              "webp",
              "pdf"
            ],
            "type": "string",
            "description": "PNG (lossless), JPEG or WebP (small files), or PDF (whole page as a document).",
            "default": "png"
          },
          "fullPage": {
            "title": "Full page",
            "type": "boolean",
            "description": "Capture the whole scrollable page instead of just the visible viewport. Ignored for App Store presets (they must be exact sizes) and element captures.",
            "default": false
          },
          "selector": {
            "title": "Capture only this element (CSS selector)",
            "type": "string",
            "description": "Optional. For example #pricing or .hero. The first visible match is captured."
          },
          "hideCookieBanners": {
            "title": "Hide cookie banners",
            "type": "boolean",
            "description": "Hides common cookie-consent pop-ups (OneTrust, Cookiebot, Usercentrics, Didomi, Quantcast and more) so they don't cover the page. Nothing is clicked or accepted.",
            "default": true
          },
          "hideSelectors": {
            "title": "Also hide these elements",
            "type": "array",
            "description": "CSS selectors to hide before capturing, e.g. chat widgets or promo bars.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "landscape": {
            "title": "Landscape orientation",
            "type": "boolean",
            "description": "Rotate device presets to landscape (e.g. App Store 2868x1320). For PDFs, prints in landscape.",
            "default": false
          },
          "colorScheme": {
            "title": "Color scheme",
            "enum": [
              "light",
              "dark"
            ],
            "type": "string",
            "description": "Emulate light or dark mode (prefers-color-scheme).",
            "default": "light"
          },
          "quality": {
            "title": "JPEG / WebP quality",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "1-100. Ignored for PNG and PDF.",
            "default": 85
          },
          "waitUntil": {
            "title": "Navigation finished when",
            "enum": [
              "load",
              "domcontentloaded",
              "networkidle"
            ],
            "type": "string",
            "description": "load (recommended): wait for the load event (up to 'Max wait for load event'), then settle. domcontentloaded: fastest. networkidle: strictest, waits for all network activity to stop (slow on busy sites).",
            "default": "load"
          },
          "loadWaitSecs": {
            "title": "Max wait for load event (seconds)",
            "minimum": 0,
            "maximum": 60,
            "type": "integer",
            "description": "Some pages never finish 'loading' (endless widgets). After this long the page is captured anyway and the row is flagged loadEventTimedOut.",
            "default": 15
          },
          "settleSecs": {
            "title": "Settle wait (seconds)",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "After the page loads, wait up to this long until images, fonts, styles and scripts stop loading for 0.5 s. Background polling and analytics are ignored.",
            "default": 3
          },
          "delayMs": {
            "title": "Extra delay (ms)",
            "minimum": 0,
            "maximum": 30000,
            "type": "integer",
            "description": "Fixed extra wait right before the capture.",
            "default": 0
          },
          "timeoutSecs": {
            "title": "Page timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Give up on a page after this long. Timed-out pages are not charged.",
            "default": 30
          },
          "maxFullPageHeight": {
            "title": "Max full-page height (CSS px)",
            "minimum": 1000,
            "maximum": 20000,
            "type": "integer",
            "description": "Very long pages are cut at this height.",
            "default": 12000
          },
          "javascript": {
            "title": "Enable JavaScript",
            "type": "boolean",
            "description": "Turn off to capture the page without running scripts.",
            "default": true
          },
          "blockMedia": {
            "title": "Skip video and audio downloads",
            "type": "boolean",
            "description": "Video/audio files aren't needed for a still image; skipping them makes captures faster. Poster images still show.",
            "default": true
          },
          "blockTrackers": {
            "title": "Skip analytics trackers",
            "type": "boolean",
            "description": "Blocks invisible analytics/tracking beacons (Google Analytics, Hotjar, Segment, Clarity, pixels...). Faster, steadier captures; the page looks the same.",
            "default": true
          },
          "pdfPaperFormat": {
            "title": "PDF paper size",
            "enum": [
              "A4",
              "Letter",
              "Legal",
              "A3",
              "Tabloid"
            ],
            "type": "string",
            "description": "Only used when format is PDF.",
            "default": "A4"
          },
          "pdfMedia": {
            "title": "PDF CSS media",
            "enum": [
              "screen",
              "print"
            ],
            "type": "string",
            "description": "screen = looks like the website; print = uses the site's print stylesheet.",
            "default": "screen"
          },
          "custom": {
            "title": "Custom size",
            "type": "object",
            "description": "Used when the 'custom' preset is selected: {\"width\": 1280, \"height\": 800, \"deviceScaleFactor\": 1, \"isMobile\": false}. 100-3840 px per side."
          },
          "maxConcurrency": {
            "title": "Parallel pages",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Pages captured at the same time (1-8). 3 suits the default 4 GB memory.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}