{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Shorts Downloader Scraper",
    "description": "Download YouTube Shorts videos quickly with this YouTube Shorts Downloader Scraper. Extract Shorts video URLs and key details with ease, streamline video collection, and gather YouTube Shorts data efficiently for research, content analysis, and automation.",
    "version": "0.2",
    "x-build-id": "0xEt7g91Gtn3Xv2eJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alpha-scraper~youtube-shorts-downloader-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alpha-scraper-youtube-shorts-downloader-scraper",
        "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/alpha-scraper~youtube-shorts-downloader-scraper/runs": {
      "post": {
        "operationId": "runs-sync-alpha-scraper-youtube-shorts-downloader-scraper",
        "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/alpha-scraper~youtube-shorts-downloader-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-alpha-scraper-youtube-shorts-downloader-scraper",
        "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": {
          "keywords": {
            "title": "keywords",
            "type": "array",
            "description": "One or more keywords (e.g. 'pubg'). Every keyword is searched on its own, for Shorts only, and gets its own 'Max Items Per keyword'. Leave empty to scrape only the Shorts URLs below.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerkeyword": {
            "title": "Max Items Per keyword",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of Shorts to extract per keyword. The Actor keeps loading result pages until this count is reached or the search has no more results. Shorts skipped by the filters below (or as duplicates) do not count. Ignored when 'Newer Than' is set.",
            "default": 20
          },
          "individual_shorts_url": {
            "title": "YouTube Shorts URL.",
            "type": "array",
            "description": "Enter direct YouTube Shorts URLs to scrape individual Shorts data.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "minViews": {
            "title": "Minimum Views (Extract only Shorts with enough views.)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip Shorts with fewer views than this. Skipped Shorts do not count towards the item limit."
          },
          "min_Duration": {
            "title": "Minimum Length (Skip Shorts shorter than this)",
            "type": "object",
            "description": "Skip Shorts shorter than this. Fill in any of the three boxes - for example 1 minute and 30 seconds, or just 90 seconds. Leave all three at 0 for no minimum.",
            "properties": {
              "hours": {
                "title": "Hours",
                "description": "Whole hours, normally 0 for Shorts.",
                "type": "integer",
                "editor": "number",
                "minimum": 0,
                "default": 0
              },
              "minutes": {
                "title": "Minutes",
                "description": "Minutes, for example 1.",
                "type": "integer",
                "editor": "number",
                "minimum": 0,
                "default": 0
              },
              "seconds": {
                "title": "Seconds",
                "description": "Seconds, for example 45. More than 59 is fine: 90 seconds is the same as 1 minute 30 seconds.",
                "type": "integer",
                "editor": "number",
                "minimum": 0,
                "default": 0
              }
            },
            "default": {
              "hours": 0,
              "minutes": 0,
              "seconds": 0
            },
            "additionalProperties": false
          },
          "max_Duration": {
            "title": "Maximum Length (Skip Shorts longer than this)",
            "type": "object",
            "description": "Skip Shorts longer than this. Fill in any of the three boxes - for example 1 minute and 30 seconds, or just 90 seconds. Leave all three at 0 for no maximum.",
            "properties": {
              "hours": {
                "title": "Hours",
                "description": "Whole hours, normally 0 for Shorts.",
                "type": "integer",
                "editor": "number",
                "minimum": 0,
                "default": 0
              },
              "minutes": {
                "title": "Minutes",
                "description": "Minutes, for example 1.",
                "type": "integer",
                "editor": "number",
                "minimum": 0,
                "default": 0
              },
              "seconds": {
                "title": "Seconds",
                "description": "Seconds, for example 45. More than 59 is fine: 90 seconds is the same as 1 minute 30 seconds.",
                "type": "integer",
                "editor": "number",
                "minimum": 0,
                "default": 0
              }
            },
            "default": {
              "hours": 0,
              "minutes": 0,
              "seconds": 0
            },
            "additionalProperties": false
          },
          "newerThan": {
            "title": "Shorts Newer Than (Date Filter)",
            "type": "string",
            "description": "Only return Shorts posted on or after this date. Pick a date (YYYY-MM-DD) or type an age such as '2 weeks' (meaning 2 weeks ago). Leave empty for no filter."
          },
          "olderThan": {
            "title": "Shorts Older Than (Date Filter)",
            "type": "string",
            "description": "Only return Shorts posted BEFORE this date. Pick a date (YYYY-MM-DD) or type an age such as '1 month' (meaning 1 month ago). Combine it with 'Newer Than' to get a date range. Leave empty for no filter."
          },
          "scrapeVideoDetails": {
            "title": "Scrape Short Details",
            "type": "boolean",
            "description": "Open every Short's page to add the direct download links (merged video + audio, best-resolution video, audio only), likes, exact comment count, full description and links, tags, category and visibility. Turn off for a much faster and cheaper run that returns only what the search results list: title, URL, thumbnail and views - without download links. A Short's page is still opened when a length or date filter, the channel details, a chosen Resolution or a Shorts URL needs it, and its data is then included.",
            "default": true
          },
          "scrapeChannelDetails": {
            "title": "Scrape Channel Details",
            "type": "boolean",
            "description": "Open each channel's About page to add subscribers, description, country, join date, total views and videos, links and the verified badge. Every channel is opened once, however many of its Shorts are found.",
            "default": true
          },
          "videoResolution": {
            "title": "Resolution",
            "enum": [
              "highest",
              "2160p",
              "1440p",
              "1080p",
              "720p",
              "480p",
              "360p",
              "240p",
              "144p"
            ],
            "type": "string",
            "description": "Resolution of the video download link ('Video link (selected or best resolution)'). Pick a resolution to get each Short at exactly that resolution whenever it has it (the shorter side of the picture counts, so 1080p = 1080x1920 for a Short). A Short that does not have the chosen resolution is returned at its own highest available resolution - decided separately for every Short. 'Highest available' always takes the best resolution of each Short. YouTube serves resolutions above 360p as separate video and audio streams, so that video link has no sound - the audio link is in the same record; the merged video + audio link stays 360p unless the Short has a merged file at the chosen resolution. A chosen resolution always opens the Short's page, whatever 'Data to Collect' says; with 'Highest available' that is left to 'Data to Collect'.",
            "default": "highest"
          },
          "removeDuplicates": {
            "title": "Remove Duplicate Shorts",
            "type": "boolean",
            "description": "A Short that matches several keywords (or is also listed in your URLs) is returned only once.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Parallel Workers",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many Shorts are processed at the same time when their details and download links are collected. Higher is faster, but a very high value makes YouTube more likely to block requests. Only used when 'Scrape Short Details' is on.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}