{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk Website Screenshots from CSV, Google Sheet or Dataset",
    "description": "Screenshots every website in an Apify dataset, CSV, Excel file, Google Sheet or URL list, desktop and/or mobile, cookie banners hidden, adding a public image link to each row. Inputs: datasetId, fileUrl or urls. Charged per screenshot stored, never for dead or blocked sites. Agent-ready: x402, MCP.",
    "version": "0.1",
    "x-build-id": "jsEaSLMgSdlktfMve"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nerolabs~bulk-website-screenshots/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nerolabs-bulk-website-screenshots",
        "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/nerolabs~bulk-website-screenshots/runs": {
      "post": {
        "operationId": "runs-sync-nerolabs-bulk-website-screenshots",
        "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/nerolabs~bulk-website-screenshots/run-sync": {
      "post": {
        "operationId": "run-sync-nerolabs-bulk-website-screenshots",
        "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": {
          "datasetId": {
            "title": "Dataset",
            "type": "string",
            "description": "Pick an Apify dataset, for example a Google Maps scraper run. Every row keeps all its columns and gets its screenshot links added. Use this OR 'File or Google Sheet URL' OR 'Website URLs' OR 'Rows'."
          },
          "fileUrl": {
            "title": "File or Google Sheet URL",
            "type": "string",
            "description": "A public link to a CSV, TSV, Excel .xlsx, JSON or JSON Lines file, or a Google Sheet shared as 'anyone with the link can view'. The website column is found automatically."
          },
          "sheetName": {
            "title": "Sheet name (Excel only)",
            "type": "string",
            "description": "Which sheet of an Excel file to read. Leave empty for the first sheet."
          },
          "fileFormat": {
            "title": "File format",
            "enum": [
              "auto",
              "csv",
              "tsv",
              "json",
              "jsonl",
              "xlsx"
            ],
            "type": "string",
            "description": "Only needed if automatic detection reads the file wrongly.",
            "default": "auto"
          },
          "urls": {
            "title": "Website URLs",
            "type": "array",
            "description": "Or just paste websites, one per line. example.com and www.example.com work without https://.",
            "items": {
              "type": "string"
            }
          },
          "data": {
            "title": "Rows (inline JSON)",
            "type": "array",
            "description": "Or paste rows as a JSON array, for example [{\"name\": \"Tesco\", \"website\": \"tesco.com\"}]."
          },
          "websiteField": {
            "title": "Website column",
            "type": "string",
            "description": "The column that holds each website, for example 'website', 'url' or 'domain'. Leave empty to detect it automatically. Dot paths such as 'business.website' work."
          },
          "devices": {
            "title": "Devices",
            "type": "array",
            "description": "Desktop, mobile, or both. Each device is its own screenshot and its own charge.",
            "items": {
              "type": "string",
              "enum": [
                "desktop",
                "mobile"
              ],
              "enumTitles": [
                "Desktop",
                "Mobile (iPhone size)"
              ]
            },
            "default": [
              "desktop"
            ]
          },
          "fullPage": {
            "title": "Full page",
            "type": "boolean",
            "description": "Off: what a visitor sees first, above the fold, which is what outreach videos and audits usually use. On: the whole page down to the footer, cut at 12,000 pixels tall.",
            "default": false
          },
          "imageFormat": {
            "title": "Image format",
            "enum": [
              "jpeg",
              "png"
            ],
            "type": "string",
            "description": "JPEG is about five times smaller and right for most uses. PNG keeps every pixel.",
            "default": "jpeg"
          },
          "jpegQuality": {
            "title": "JPEG quality",
            "minimum": 30,
            "maximum": 100,
            "type": "integer",
            "description": "Only for JPEG. 80 looks clean at a fraction of the size.",
            "default": 80
          },
          "desktopWidth": {
            "title": "Desktop width (px)",
            "minimum": 320,
            "maximum": 3840,
            "type": "integer",
            "description": "1366 is the most common laptop screen. 1920 for a full HD view.",
            "default": 1366
          },
          "desktopHeight": {
            "title": "Desktop height (px)",
            "minimum": 320,
            "maximum": 2160,
            "type": "integer",
            "description": "The visible height when 'Full page' is off.",
            "default": 768
          },
          "hideCookieBanners": {
            "title": "Hide cookie banners",
            "type": "boolean",
            "description": "Hides the consent pop-ups of the common cookie platforms (OneTrust, Cookiebot, Usercentrics, Complianz and others) so the website itself is visible. Nothing is accepted on the visitor's behalf.",
            "default": true
          },
          "waitSecs": {
            "title": "Extra wait before the screenshot (seconds)",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "After the page has loaded, wait this long for animations and lazy images. Raise it for slow, animated sites.",
            "default": 2
          },
          "pageTimeoutSecs": {
            "title": "Page timeout (seconds)",
            "minimum": 10,
            "maximum": 120,
            "type": "integer",
            "description": "A website that has not loaded in this time is reported as 'timeout' and not charged.",
            "default": 30
          },
          "maxItems": {
            "title": "Max rows",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many rows, a cost guard for big lists. Hard ceiling 50,000 per run."
          },
          "maxConcurrency": {
            "title": "Websites at once",
            "minimum": 1,
            "maximum": 32,
            "type": "integer",
            "description": "Leave empty to pick from the run's memory (one per 512 MB, so 4 at the default 2 GB). Raise memory for faster runs; the price per screenshot stays the same."
          },
          "exportFormats": {
            "title": "Also export as a file",
            "type": "array",
            "description": "Optional. Writes every row with its screenshot links to a CSV and/or Excel file with a public download link ($0.01 per file).",
            "items": {
              "type": "string",
              "enum": [
                "csv",
                "xlsx"
              ],
              "enumTitles": [
                "CSV",
                "Excel .xlsx"
              ]
            }
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Off by default: websites are opened directly. Turn on Apify Proxy (datacenter) or give your own proxy URLs for sites that block cloud servers. Residential proxy is not supported, because one page through it costs more than the screenshot price."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}