{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk Image Downloader — All Images from Any Web Page",
    "description": "Download every image from web pages, or a list of image URLs, in bulk. Finds img, srcset (largest size), lazy-loaded, picture, og:image, icons and CSS backgrounds. Width/height filters, duplicate removal, optional ZIP. $3 per 1,000 images. File mode downloads any file type too.",
    "version": "0.1",
    "x-build-id": "djXyB7xAzFNHGewxh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/actor-forge~bulk-image-downloader/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-actor-forge-bulk-image-downloader",
        "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/actor-forge~bulk-image-downloader/runs": {
      "post": {
        "operationId": "runs-sync-actor-forge-bulk-image-downloader",
        "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/actor-forge~bulk-image-downloader/run-sync": {
      "post": {
        "operationId": "run-sync-actor-forge-bulk-image-downloader",
        "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": {
          "mode": {
            "title": "What to download",
            "enum": [
              "images",
              "files"
            ],
            "type": "string",
            "description": "Images: scan pages for every image (img, srcset, lazy, CSS…) and download direct image URLs. Any files: download every file type (PDF, ZIP, CSV, DOCX, MP3, MP4…) from a URL list, or the file links on pages, with type/glob filters and size caps. Billing differs per mode — see Pricing.",
            "default": "images"
          },
          "urls": {
            "title": "Page or file URLs",
            "type": "array",
            "description": "Web pages to download all images (or, in file mode, all linked files) from, and/or direct image or file URLs (mix freely). Each page's static HTML is scanned. Content that only appears after JavaScript runs isn't found.",
            "items": {
              "type": "string"
            }
          },
          "includeSrcset": {
            "title": "Largest responsive size",
            "type": "boolean",
            "description": "When an image offers several sizes (srcset), download the largest instead of the default src. One file per picture either way.",
            "default": true
          },
          "includeCssBackgrounds": {
            "title": "CSS background images",
            "type": "boolean",
            "description": "Also download images set as CSS backgrounds in style attributes and <style> blocks.",
            "default": true
          },
          "includeLinkedImages": {
            "title": "Linked full-size images",
            "type": "boolean",
            "description": "Also download images that links point to (e.g. a gallery thumbnail linking to the full-size photo).",
            "default": true
          },
          "includeMetaImages": {
            "title": "Social preview images and icons",
            "type": "boolean",
            "description": "Also download og:image / twitter:image previews, favicons and apple-touch icons.",
            "default": true
          },
          "formats": {
            "title": "Formats",
            "type": "array",
            "description": "Only keep these formats (detected from the file itself, not the URL). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "jpeg",
                "png",
                "gif",
                "webp",
                "avif",
                "svg",
                "bmp",
                "ico",
                "tiff",
                "heic"
              ],
              "enumTitles": [
                "JPEG",
                "PNG",
                "GIF",
                "WebP",
                "AVIF",
                "SVG",
                "BMP",
                "ICO",
                "TIFF",
                "HEIC"
              ]
            },
            "default": []
          },
          "minWidth": {
            "title": "Minimum width (px)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip images narrower than this, e.g. 200 to drop icons and spacers. Skipped images are not charged.",
            "default": 0
          },
          "minHeight": {
            "title": "Minimum height (px)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip images shorter than this. Skipped images are not charged.",
            "default": 0
          },
          "minFileSizeKb": {
            "title": "Minimum file size (KB)",
            "minimum": 0,
            "type": "number",
            "description": "Skip files smaller than this. Skipped files are not charged.",
            "default": 0
          },
          "maxFileSizeMb": {
            "title": "Maximum file size (MB)",
            "minimum": 0.1,
            "maximum": 500,
            "type": "number",
            "description": "Skip files larger than this (up to 500 MB). Empty = 25 MB in image mode, 100 MB in file mode."
          },
          "skipDuplicates": {
            "title": "Skip duplicate files",
            "type": "boolean",
            "description": "Skip files whose content (SHA-256) is identical to one already downloaded, even from different URLs. Duplicates are not charged.",
            "default": true
          },
          "maxImages": {
            "title": "Max images",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after saving this many images in total.",
            "default": 1000
          },
          "maxImagesPerPage": {
            "title": "Max images per page",
            "minimum": 0,
            "type": "integer",
            "description": "Cap candidates taken from each page (0 = no cap).",
            "default": 0
          },
          "createZip": {
            "title": "Also create a ZIP",
            "type": "boolean",
            "description": "Bundle everything into ZIP file(s) of up to 200 MB each. Links are in the run's OUTPUT record. No extra charge.",
            "default": false
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Skip pages that the site's robots.txt disallows for crawlers.",
            "default": true
          },
          "fileTypes": {
            "title": "File types",
            "type": "array",
            "description": "Only keep files of these types, e.g. pdf, zip, csv, docx, mp3. Matched against the type detected from the file bytes and against the URL extension. On pages, links with these extensions are followed. Empty = every type (page links: common document, archive, data and media extensions).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "urlGlobs": {
            "title": "Link URL globs",
            "type": "array",
            "description": "On pages, also follow links matching these globs, e.g. *.pdf, /reports/**, https://cdn.example.com/files/*. Use for download links without an extension (/download?id=…). * stays inside one folder, ** crosses folders.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxFiles": {
            "title": "Max files",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "File mode: stop after saving this many files.",
            "default": 1000
          },
          "maxTotalSizeMb": {
            "title": "Total size cap (MB)",
            "minimum": 0,
            "type": "number",
            "description": "File mode: stop downloading once the files saved add up to this many MB (0 = no cap). Keeps transfer charges predictable.",
            "default": 2048
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}