{
  "openapi": "3.0.1",
  "info": {
    "title": "Youtube Video Details Scraper",
    "description": "YouTube Video Details Scraper extracts video titles, descriptions, tags, view counts, likes, comments, upload dates, channel information, and more from YouTube videos. Ideal for SEO analysis, competitor research, content tracking, market research, and data-driven decision-making.",
    "version": "2.0",
    "x-build-id": "3517pXKFPYVZskHDo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapevanta~youtube-video-details-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapevanta-youtube-video-details-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/scrapevanta~youtube-video-details-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapevanta-youtube-video-details-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/scrapevanta~youtube-video-details-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapevanta-youtube-video-details-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": {
          "videoUrls": {
            "title": "Video URLs or IDs",
            "type": "array",
            "description": "Individual videos to scrape. Accepts watch links, youtu.be links, Shorts links, live links, embed links and bare 11-character video IDs.",
            "items": {
              "type": "string"
            }
          },
          "channelUrls": {
            "title": "Channel URLs, @handles or channel IDs",
            "type": "array",
            "description": "Channels to expand into their most recent videos through YouTube's public feed. Accepts https://www.youtube.com/@handle, an @handle on its own, or a UC... channel ID.",
            "items": {
              "type": "string"
            }
          },
          "playlistUrls": {
            "title": "Playlist URLs or IDs",
            "type": "array",
            "description": "Public playlists to expand into videos. Accepts a playlist link or a bare playlist ID.",
            "items": {
              "type": "string"
            }
          },
          "maxVideosPerSource": {
            "title": "Max videos per channel or playlist",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "How many videos to take from each channel or playlist. The public feed holds roughly the 15 most recent items and offers no paging, so higher values cannot return more than the feed contains.",
            "default": 10
          },
          "includeTranscript": {
            "title": "Fetch transcripts",
            "type": "boolean",
            "description": "Fetch the caption track and derive word count, speaking rate and keywords from it. Adds roughly a second per video.",
            "default": true
          },
          "transcriptLanguages": {
            "title": "Preferred transcript languages",
            "type": "array",
            "description": "Language codes in order of preference, for example en, en-GB, es. A manually written transcript is preferred over auto-generated captions; if none of these languages exist, any available track is used.",
            "default": [
              "en"
            ],
            "items": {
              "type": "string"
            }
          },
          "transcriptSearchTerms": {
            "title": "Search terms to locate in transcripts",
            "type": "array",
            "description": "Words or phrases to find in the transcript. Each match is returned with a timestamp, surrounding context and a link that jumps to that moment. Phrases are matched across caption boundaries.",
            "items": {
              "type": "string"
            }
          },
          "includeTranscriptSnippets": {
            "title": "Include raw transcript segments",
            "type": "boolean",
            "description": "Add the full list of timed caption segments to each record. Off by default because it makes records very large.",
            "default": false
          },
          "keywordCount": {
            "title": "Keywords per video",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "How many of the most frequent meaningful words to report from each transcript.",
            "default": 15
          },
          "includeChapters": {
            "title": "Extract chapters",
            "type": "boolean",
            "description": "Read chapter markers from the description and return each with a start time, end time and deep link.",
            "default": true
          },
          "includeDescription": {
            "title": "Include the full description",
            "type": "boolean",
            "description": "Keep the video description in the output. Turn off for smaller records; chapters and hashtags are still extracted first.",
            "default": true
          },
          "minViewCount": {
            "title": "Minimum view count",
            "minimum": 0,
            "type": "integer",
            "description": "Drop videos below this many views. Videos whose view count could not be read are also dropped, since an unknown value cannot be shown to meet a minimum."
          },
          "minDurationSeconds": {
            "title": "Minimum duration (seconds)",
            "minimum": 0,
            "type": "integer",
            "description": "Drop videos shorter than this. Set to 61 to exclude Shorts by length."
          },
          "maxDurationSeconds": {
            "title": "Maximum duration (seconds)",
            "minimum": 1,
            "type": "integer",
            "description": "Drop videos longer than this."
          },
          "publishedAfter": {
            "title": "Published after",
            "type": "string",
            "description": "Keep only videos published on or after this date, as YYYY-MM-DD or a full ISO timestamp."
          },
          "filterKeywords": {
            "title": "Title or description must contain",
            "type": "array",
            "description": "Keep only videos whose title or description contains at least one of these, matched case-insensitively.",
            "items": {
              "type": "string"
            }
          },
          "requireTranscript": {
            "title": "Only keep videos with a transcript",
            "type": "boolean",
            "description": "Drop videos where no caption track could be retrieved.",
            "default": false
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "",
              "viewCount",
              "likeCount",
              "commentCountApprox",
              "publishedAt",
              "engagementRatePercent",
              "viewsPerDay",
              "durationSeconds",
              "transcriptWordCount"
            ],
            "type": "string",
            "description": "Field to order the dataset by. Videos missing that field are placed last.",
            "default": ""
          },
          "sortDescending": {
            "title": "Sort highest first",
            "type": "boolean",
            "description": "Order descending. Turn off for ascending.",
            "default": true
          },
          "concurrentRequests": {
            "title": "Concurrent requests",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "How many videos to fetch at once. Raise for speed, lower if you start seeing challenged requests.",
            "default": 5
          },
          "emitRunSummary": {
            "title": "Append a run summary",
            "type": "boolean",
            "description": "Add one final record with totals, averages, channel and category breakdowns and the top-performing videos.",
            "default": true
          },
          "proxyConfig": {
            "title": "Proxy",
            "type": "object",
            "description": "Proxy settings. Leave this on: YouTube answers Apify's shared addresses with a bot check for most videos, so a run without a proxy returns far less data. Either the default datacenter group or a residential group works; residential holds up better across long runs.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}