{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Shorts Scraper & Data Extractor",
    "description": "Fast YouTube Shorts scraper for extracting video data at scale — Get metadata, views, likes, comments, sponsor segments, sentiment analysis, and content insights from any YouTube Short. Scrape by search, channel, or playlist. Perfect for content creators, marketers, researchers, and data analysts.",
    "version": "1.0",
    "x-build-id": "hLcSHhpbh8hqzCB4A"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/webdatalabs~youtube-shorts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-webdatalabs-youtube-shorts-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/webdatalabs~youtube-shorts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-webdatalabs-youtube-shorts-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/webdatalabs~youtube-shorts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-webdatalabs-youtube-shorts-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "🔍 How do you want to find Shorts?",
            "enum": [
              "search",
              "channel",
              "playlist",
              "videoIds"
            ],
            "type": "string",
            "description": "Choose your collection method",
            "default": "videoIds"
          },
          "query": {
            "title": "Search Keywords",
            "type": "string",
            "description": "What to search for on YouTube (e.g., 'b2b marketing tips', 'funny cat videos')"
          },
          "channelUrl": {
            "title": "YouTube Channel URL",
            "pattern": "^https?://.*youtube\\.com.*$",
            "type": "string",
            "description": "Paste the full channel URL (e.g., https://youtube.com/@MrBeast)"
          },
          "playlistUrl": {
            "title": "YouTube Playlist URL",
            "pattern": "^https?://.*youtube\\.com/playlist.*$",
            "type": "string",
            "description": "Paste the full playlist URL (starts with https://youtube.com/playlist?list=...)"
          },
          "videoIds": {
            "title": "Video IDs (one per line)",
            "type": "array",
            "description": "Enter YouTube video IDs - the 11-character code from the URL (e.g., 'dQw4w9WgXcQ' from youtube.com/shorts/dQw4w9WgXcQ)",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "📊 How many videos?",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of Shorts to collect (affects cost: $0.007 per video)",
            "default": 5
          },
          "since": {
            "title": "📅 From date (optional)",
            "type": "string",
            "description": "Only videos published after this date (ISO 8601 format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ)"
          },
          "until": {
            "title": "📅 Until date (optional)",
            "type": "string",
            "description": "Only videos published before this date (ISO 8601 format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ)"
          },
          "includeSponsorSegments": {
            "title": "💰 Detect sponsor segments",
            "type": "boolean",
            "description": "Find sponsored content using SponsorBlock community data (~30-40% coverage)",
            "default": true
          },
          "includeAnalytics": {
            "title": "📈 Generate content analytics",
            "type": "boolean",
            "description": "Extract keywords, sentiment scores, and topics from video titles and descriptions",
            "default": true
          },
          "shortsOnly": {
            "title": "🎬 Shorts only (recommended)",
            "type": "boolean",
            "description": "Filter to only YouTube Shorts (videos under 60 seconds). Turn off to include all videos.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy settings (advanced)",
            "type": "object",
            "description": "Use Apify proxies for large-scale scraping (recommended for 100+ videos). Leave empty for default."
          },
          "maxConcurrency": {
            "title": "⚡ Speed (concurrent requests)",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many videos to process simultaneously. Higher = faster but may hit rate limits. Recommended: 5 for most cases, 10+ for proxies.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}