{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Thumbnail Downloader & Scraper ✅ Bulk",
    "description": "Download YouTube thumbnails in bulk. Paste video links, Shorts, youtu.be links, embeds or bare video ids, mixed freely. Shorts come back vertical in their real shape, not padded into a wide frame. Every row carries the title, channel, pixel size and the image file. No cookies, no API key.",
    "version": "1.0",
    "x-build-id": "zqevuOAcYgTwYRyAD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/atomus~youtube-thumbnail-downloader/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-atomus-youtube-thumbnail-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/atomus~youtube-thumbnail-downloader/runs": {
      "post": {
        "operationId": "runs-sync-atomus-youtube-thumbnail-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/atomus~youtube-thumbnail-downloader/run-sync": {
      "post": {
        "operationId": "run-sync-atomus-youtube-thumbnail-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": [
          "videoUrls"
        ],
        "properties": {
          "videoUrls": {
            "title": "🎬 YouTube video links",
            "maxItems": 5000,
            "type": "array",
            "description": "One line per video. Every one of these forms works, and you can mix them freely in the same run:\n\n• Normal video: https://www.youtube.com/watch?v=dQw4w9WgXcQ\n• Short: https://www.youtube.com/shorts/gJPFnmr0ML0\n• Short link: https://youtu.be/dQw4w9WgXcQ\n• Live: https://www.youtube.com/live/dQw4w9WgXcQ\n• Embed: https://www.youtube.com/embed/dQw4w9WgXcQ\n• Mobile: https://m.youtube.com/watch?v=dQw4w9WgXcQ\n• YouTube Music: https://music.youtube.com/watch?v=dQw4w9WgXcQ\n• Privacy embed: https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ\n• Old style: https://www.youtube.com/v/dQw4w9WgXcQ\n• Just the video id: dQw4w9WgXcQ\n\nExtra bits in the link are fine: ?t=42s, &list=..., and a missing https:// all still work.\n\nThis field takes links to VIDEOS. A channel, playlist or profile link is rejected straight away, at no charge, and the row tells you which line it was.\n\nCost: $8/1k → $2/1k by Apify plan, per thumbnail returned. A video with no thumbnail, a repeated link and a link that is not a YouTube video are all free.",
            "items": {
              "type": "string"
            }
          },
          "quality": {
            "title": "🖼️ Thumbnail size",
            "enum": [
              "best",
              "maxresdefault",
              "sddefault",
              "hqdefault",
              "mqdefault",
              "default"
            ],
            "type": "string",
            "description": "Best available is the right choice for almost everyone. It gives you the largest picture the video has, and when the video is a Short it gives you the real vertical image (1080x1920) instead of the wide one, where the video sits in a strip down the middle with filler on both sides.\n\nPick a fixed size instead when every image has to have identical dimensions, for example a grid or a video wall. Those are always wide or square, so a Short will have filler at the sides. That is the trade you are choosing on purpose.\n\nThe sizes listed are the real measured ones. Worth knowing: YouTube's own internal names for these do not line up with their size, so if another tool offers you \"HD\" or \"HQ\" you may well get the smaller file.",
            "default": "best"
          },
          "fallbackToLowerQuality": {
            "title": "📉 Use a smaller size when the one you picked does not exist",
            "type": "boolean",
            "description": "Not every video has every size. Older uploads in particular often have only the small ones, and some videos have no HD version at all.\n\nLeave this on and you get the next size down instead of an empty row. Turn it off and a video without your exact size is reported as not found. Either way you are never charged for a video that came back with no image.",
            "default": true
          },
          "saveImages": {
            "title": "💾 Give me the image files, not just the links",
            "type": "boolean",
            "description": "On: each thumbnail is saved as a real .jpg file you can open or download straight from this run, and the row also carries a direct link to that file.\n\nOff: you get only the link to the picture on YouTube's servers, and downloading it is up to you. Useful if you are feeding the links into something else and do not need the files.\n\nEither way the row always tells you which video the picture belongs to.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}