{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Shorts Scraper - Channels, Hashtags & Details",
    "description": "Scrape YouTube Shorts from direct Short URLs, channel handles, channel URLs, and hashtags. Get titles, URLs, thumbnails, duration, views, likes, comments, publish dates, author handles, subscriber counts, channel IDs, and profile metadata.",
    "version": "0.0",
    "x-build-id": "p4z9J0ZdzmYjecxOr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/newbs~Youtube-Shorts/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-newbs-Youtube-Shorts",
        "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/newbs~Youtube-Shorts/runs": {
      "post": {
        "operationId": "runs-sync-newbs-Youtube-Shorts",
        "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/newbs~Youtube-Shorts/run-sync": {
      "post": {
        "operationId": "run-sync-newbs-Youtube-Shorts",
        "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": {
          "channel": {
            "title": "Channel handles or URLs",
            "maxItems": 20,
            "uniqueItems": true,
            "type": "array",
            "description": "Enter one or more YouTube channel handles, names, or URLs. Examples: youtube, @adidas, https://www.youtube.com/@zara/shorts. Ignored when hashtags are provided.",
            "items": {
              "type": "string"
            }
          },
          "hashtag": {
            "title": "Hashtags",
            "maxItems": 20,
            "uniqueItems": true,
            "type": "array",
            "description": "Enter hashtags with or without #. When provided, hashtags take precedence over channels.",
            "items": {
              "type": "string"
            }
          },
          "videoUrls": {
            "title": "Direct Shorts URLs",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Enter specific YouTube Shorts URLs to scrape directly, without loading a channel or hashtag listing. Direct URLs take precedence over hashtags and channels.",
            "items": {
              "type": "string"
            }
          },
          "numberOfResults": {
            "title": "Results per source",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum number of Shorts to return for each channel or hashtag. Capped at 100 per source to keep runs predictable. The default sample is intentionally small so the first Apify test run finishes quickly.",
            "default": 1
          },
          "needVideoDetails": {
            "title": "Enrich video and channel details",
            "type": "boolean",
            "description": "Enabled by default. Uses fast HTTP extraction to collect available likes, views, publish date, description, and author metadata. Disable only for a faster listing-only run with fewer fields.",
            "default": true
          },
          "fallbackToBrowser": {
            "title": "Use browser fallback for missing details",
            "type": "boolean",
            "description": "Disabled by default for speed. Enable it to open Shorts in a browser when HTTP extraction is missing important fields such as comment count. This is slower but can improve completeness.",
            "default": false
          },
          "includeChannelDetails": {
            "title": "Visit channel pages for profile data",
            "type": "boolean",
            "description": "Disabled by default for faster sample runs. Enable it to visit each unique creator channel page for subscriber count, channel video count, banner, avatar, description, and social links.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Browser concurrency",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many browser fallback pages can run at once. Keep 1-2 for stability; higher values are capped at 5. HTTP work uses the separate controls below.",
            "default": 1
          },
          "maxSourceConcurrency": {
            "title": "Source concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many channel or hashtag sources are collected in parallel by the fast HTTP engine. Defaults to 2 and is capped at 10.",
            "default": 2
          },
          "maxVideoDetailConcurrency": {
            "title": "Video detail concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many Shorts are enriched in parallel per source by the HTTP engine. Defaults to 5 and is capped at 20.",
            "default": 5
          },
          "maxRunSeconds": {
            "title": "Soft runtime limit",
            "minimum": 0,
            "maximum": 86400,
            "type": "integer",
            "description": "Optional graceful runtime cap in seconds. The sample run is prefilled with 240 so Apify tests stop cleanly before a 300-second timeout. Set 0 to use the Apify run timeout.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings used for HTTP recovery and browser fallback. Apify Proxy is used by default on the Apify platform.",
            "default": {
              "useApifyProxy": true
            }
          },
          "proxyMode": {
            "title": "Proxy mode",
            "enum": [
              "auto",
              "always",
              "never"
            ],
            "type": "string",
            "description": "Auto tries direct HTTP first and uses the configured proxy only for recovery. Always sends HTTP requests through the proxy. Never disables proxy use.",
            "default": "auto"
          },
          "videoDetailProxyStrategy": {
            "title": "Video detail proxy strategy",
            "enum": [
              "auto",
              "proxyFirst"
            ],
            "type": "string",
            "description": "Auto enriches Shorts directly first for lower latency. Proxy first can help when the Actor's direct YouTube route is repeatedly blocked.",
            "default": "auto"
          },
          "directRetryAttempts": {
            "title": "Direct detail retries",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "Extra direct HTTP attempts for incomplete video metadata before proxy or browser recovery. Defaults to 1 and is capped at 3.",
            "default": 1
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}