{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Transcript Scraper with SRT and VTT",
    "description": "Extract existing YouTube video and Shorts captions from URLs or IDs. Get full text, timestamped segments, caption languages, basic video details, and optional SRT/VTT files for research and LLM workflows. No YouTube API key or account required. Independent tool, not affiliated with YouTube.",
    "version": "0.1",
    "x-build-id": "3bSnkbIFxH9523PJ3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/arjun_code~youtube-transcript-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-arjun_code-youtube-transcript-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/arjun_code~youtube-transcript-scraper/runs": {
      "post": {
        "operationId": "runs-sync-arjun_code-youtube-transcript-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/arjun_code~youtube-transcript-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-arjun_code-youtube-transcript-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": [
          "videos"
        ],
        "properties": {
          "videos": {
            "title": "Video / Shorts URLs or IDs",
            "minItems": 1,
            "maxItems": 100,
            "type": "array",
            "description": "Add one public YouTube video or Shorts URL, or 11-character video ID, per line. Up to 100 inputs. The same video is processed once even if added in different link formats. Channel and playlist links are not supported. Videos must already have captions.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": [
              "https://www.youtube.com/watch?v=UF8uR6Z6KLc",
              "https://www.youtube.com/shorts/cjSKS1D9Kow",
              "https://www.youtube.com/watch?v=Vs-bzi-jNiE"
            ]
          },
          "languages": {
            "title": "Preferred caption languages",
            "minItems": 1,
            "maxItems": 10,
            "type": "array",
            "description": "Choose languages from the dropdown, or type a caption language code if it is not listed. Keep Auto selected by itself to use the video's default caption language. To request specific languages, remove Auto first. Languages are tried in the order shown; use the JSON editor to check or change their priority. Select up to 10. This selects existing captions only and does not translate text.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "auto",
                "en",
                "zh-Hans",
                "zh-Hant",
                "es",
                "pt",
                "fr",
                "de",
                "ja",
                "ko",
                "ru",
                "ar",
                "hi",
                "id",
                "vi",
                "th",
                "ms",
                "it",
                "nl",
                "tr",
                "pl",
                "uk",
                "ro",
                "cs",
                "hu",
                "sv",
                "da",
                "no",
                "fi",
                "el",
                "he",
                "fa",
                "bn",
                "ur"
              ],
              "enumTitles": [
                "Auto - use the video's default caption language",
                "English (en)",
                "Chinese - Simplified / 简体中文 (zh-Hans)",
                "Chinese - Traditional / 繁體中文 (zh-Hant)",
                "Spanish (es)",
                "Portuguese (pt)",
                "French (fr)",
                "German (de)",
                "Japanese / 日本語 (ja)",
                "Korean / 한국어 (ko)",
                "Russian (ru)",
                "Arabic (ar)",
                "Hindi (hi)",
                "Indonesian (id)",
                "Vietnamese (vi)",
                "Thai (th)",
                "Malay (ms)",
                "Italian (it)",
                "Dutch (nl)",
                "Turkish (tr)",
                "Polish (pl)",
                "Ukrainian (uk)",
                "Romanian (ro)",
                "Czech (cs)",
                "Hungarian (hu)",
                "Swedish (sv)",
                "Danish (da)",
                "Norwegian (no)",
                "Finnish (fi)",
                "Greek (el)",
                "Hebrew (he)",
                "Persian (fa)",
                "Bengali (bn)",
                "Urdu (ur)"
              ]
            },
            "default": [
              "auto"
            ]
          },
          "captionType": {
            "title": "Caption type",
            "enum": [
              "preferManual",
              "preferAuto",
              "manualOnly",
              "autoOnly"
            ],
            "type": "string",
            "description": "Uploaded captions are tracks not marked as auto-generated by YouTube. Prefer modes may use the other type if needed; Only modes never switch type. Your language priority is applied first. Uploaded does not guarantee human authorship or complete coverage.",
            "default": "preferManual"
          },
          "fallbackToAnyLanguage": {
            "title": "Allow another language",
            "type": "boolean",
            "description": "On: if no requested language is available, return another available language. Off: return a languageUnavailable status instead. The actual returned language is always reported. This never translates text or overrides an Only caption-type restriction.",
            "default": true
          },
          "includeSegments": {
            "title": "Include timestamped segments",
            "type": "boolean",
            "description": "On: include each caption's text, start time, and available duration in seconds. Off: omit the segments array for a smaller result. Full transcript text is always returned, and SRT/VTT files can still be created. This does not change the number of YouTube requests.",
            "default": true
          },
          "subtitleFormats": {
            "title": "Subtitle files (optional)",
            "uniqueItems": true,
            "type": "array",
            "description": "Leave empty for Dataset output only. Select SRT, WebVTT, or both to create additional subtitle files in the run's Key-Value Store. File references are included in the result. Files use the same fetched captions and need no extra YouTube request.",
            "items": {
              "type": "string",
              "enum": [
                "srt",
                "vtt"
              ],
              "enumTitles": [
                "SRT (.srt)",
                "WebVTT (.vtt)"
              ]
            },
            "default": []
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}