YouTube-Web-V2-API

获取视频字幕/Get video captions

Changed on

[中文]

用途:

  • 获取视频的字幕列表或指定语言的字幕内容
  • 支持多种字幕格式输出

参数:

  • video_id: 视频ID(推荐)
  • video_url: 完整的视频URL(可选)
  • language_code: 语言代码(如 en, zh-Hans, a.en),为空时返回可用字幕列表
  • format: 字幕格式
    • srt: SubRip 字幕格式(带时间轴)
    • xml: 原始 XML 格式
    • json3: JSON 格式(YouTube 原始结构)
    • txt: 纯文本(无时间轴)

使用流程:

  1. 不传 language_code,获取字幕列表
  2. 从列表中选择 language_code,获取字幕内容

返回数据:

不传 language_code 时(字幕语言列表):

{
  "video_id": "dQw4w9WgXcQ",
  "captions": [
    { "language_code": "en", "language_name": "English" },
    { "language_code": "ja", "language_name": "Japanese" }
  ]
}

传 language_code 时(字幕内容):

  • format=srt: 标准 SRT 字幕文件内容(含序号、时间轴、文本)
  • format=txt: 纯文本(仅文字,无时间轴)
  • format=xml: YouTube 原始 XML 字幕
  • format=json3: YouTube JSON 格式字幕

视频较大时(转异步任务):

{
  "video_id": "dQw4w9WgXcQ",
  "status": "processing",
  "job_id": "123e4567-e89b-12d3-a456-426614174000"
}
  • 返回 status="processing" 时,用 job_id 调用 /get_video_captions_result 取最终字幕

视频无字幕时:

{
  "video_id": "dQw4w9WgXcQ",
  "captions": [],
  "message": "No transcript is available for this video",
  "message_zh": "该视频没有可用字幕"
}

注意事项:

  • 并非所有视频都有字幕
  • 仅返回视频本身已有的字幕,不提供 AI 语音转写生成;视频没有字幕时直接返回上述无字幕结果
  • video_id 和 video_url 至少提供一个
  • 大视频会转为异步任务,需配合 /get_video_captions_result 轮询获取结果
  • 视频无字幕时返回 200 + 上述提示,且照常计费(上游已对该请求计费)

价格:

  • $0.008 USD / 请求

[English]

Purpose:

  • Get video caption list or caption content for a specific language
  • Supports multiple caption format outputs

Parameters:

  • video_id: Video ID (recommended)
  • video_url: Full video URL (optional)
  • language_code: Language code (e.g. en, zh-Hans, a.en), returns available caption list if empty
  • format: Caption format
    • srt: SubRip subtitle format (with timestamps)
    • xml: Raw XML format
    • json3: JSON format (YouTube raw structure)
    • txt: Plain text (no timestamps)

Returns:

Without language_code (caption language list):

{
  "video_id": "dQw4w9WgXcQ",
  "captions": [
    { "language_code": "en", "language_name": "English" },
    { "language_code": "ja", "language_name": "Japanese" }
  ]
}

With language_code (caption content):

  • format=srt: Standard SRT subtitle content (with sequence numbers, timestamps, text)
  • format=txt: Plain text (text only, no timestamps)
  • format=xml: YouTube raw XML captions
  • format=json3: YouTube JSON format captions

Large videos (async job):

{
  "video_id": "dQw4w9WgXcQ",
  "status": "processing",
  "job_id": "123e4567-e89b-12d3-a456-426614174000"
}
  • When status="processing" is returned, poll /get_video_captions_result with the job_id to retrieve the final captions

Video has no captions:

{
  "video_id": "dQw4w9WgXcQ",
  "captions": [],
  "message": "No transcript is available for this video",
  "message_zh": "该视频没有可用字幕"
}

Usage flow:

  1. Call without language_code to get available caption list
  2. Select language_code from the list to get caption content

Notes:

  • Not all videos have captions
  • Only captions that already exist on the video are returned; AI speech-to-text transcription is not provided. Videos without captions return the no-captions result shown above
  • At least one of video_id or video_url is required
  • Large videos become async jobs; poll /get_video_captions_result for the result
  • A video with no captions returns 200 with the message above and is still billed (the upstream provider charges for this request)

Price:

  • $0.008 USD / request

[示例/Example]

Step 1 - 获取字幕列表: GET /get_video_captions?video_id=dQw4w9WgXcQ

Step 2 - 获取字幕内容: GET /get_video_captions?video_id=dQw4w9WgXcQ&language_code=en&format=srt

get/api/v1/youtube/web_v2/get_video_captions

Request

  • Base URL
    https://api.tikhub.io (the document declares no server; this is the origin it was published from)
  • Auth
    HTTP bearer

Query parameters

video_idstring

视频ID/Video ID

video_urlstring

视频URL/Video URL

language_codestring

语言代码,为空时返回可用字幕列表/Language code, returns available caption list if empty

format'srt' | 'xml' | 'json3' | 'txt'

字幕格式/Caption format

Response

Successful Response

codeinteger

HTTP status code | HTTP状态码

request_idstring nullable

Unique request identifier | 唯一请求标识符

messagestring

Response message (EN-US) | 响应消息 (English)

message_zhstring

Response message (ZH-CN) | 响应消息 (中文)

supportstring

Support message | 支持消息

timestring

The time the response was generated | 生成响应的时间

time_stampinteger

The timestamp the response was generated | 生成响应的时间戳

time_zonestring

The timezone of the response time | 响应时间的时区

docsstring nullable

Link to the API Swagger documentation for this endpoint | 此端点的 API Swagger 文档链接

cache_messagestring nullable

Cache message (EN-US) | 缓存消息 (English)

cache_message_zhstring nullable

Cache message (ZH-CN) | 缓存消息 (中文)

cache_urlstring nullable

The URL to access the cached result | 访问缓存结果的 URL

routerstring

The endpoint that generated this response | 生成此响应的端点

paramsunknown
dataunknown

Changes

    • info

      added the optional property // to the response with the status

    • info

      added the optional property // to the response with the status

    • info

      the response's property default value changed from This request will be cached. You can access the cached result directly using the URL below valid for 24 hours. Accessing the cache will not incur additional charges. to This response is cached and accessible via the URL below for 24 hours at no extra cost. The cache is for request tracing only — it doesn't affect the API's data freshness and won't be returned through the API again. for the status

    • info

      the response's property default value changed from 本次请求将被缓存,你可以使用下面的 URL 直接访问缓存结果,有效期为 24 小时,访问缓存不会产生额外费用。 to 本次响应已缓存,可通过下方 URL 直接查看,有效期 24 小时,访问缓存链接无额外费用。缓存仅用于请求溯源,不影响接口数据的时效性,也不会再次通过接口返回。 for the status