APIドキュメント
YouTubeの文字起こし、検索、メタデータを取得するREST APIです。ダッシュボードからAPIキーを取得してください — 100無料クレジット、カード登録不要。
認証
APIキーはベアラートークンとして、またはx-api-keyヘッダーで渡してください:
Authorization: Bearer sk_live_...
# or
x-api-key: sk_live_...ベースURL
https://getyoutubetranscript.com/api/v1クレジットとプラン
| プラン | 価格 | クレジット/月 | 追加購入価格 | レート制限 |
|---|---|---|---|---|
| 無料 | $0/月 | 100(一回限り) | — | 60リクエスト/分 |
| 月額 | $5/月 | 1,000 | $2.50 / 1,000 | 200リクエスト/分 |
| 年額 | $4.50/月(年額$54) | 1,000 | $1.50 / 1,000 | 300リクエスト/分 |
| Starter | $19/月 | 7,500 | $1.50 / 1,000 | 300リクエスト/分 |
| Pro | $49/月 | 25,000 | $1.50 / 1,000 | 400リクエスト/分 |
| Scale | $99/月 | 60,000 | $1.50 / 1,000 | 600リクエスト/分 |
1クレジット = 1回の成功したリクエスト。失敗したリクエストに課金されることはありません。例: 10回の文字起こしリクエストのうち2本の動画に字幕がない場合、消費は8クレジットです。失敗した動画の再試行は、成功するまで課金されません。追加購入したクレジットは、購入から30日後または現在の請求期間終了時のいずれか遅い方で失効し、使用にはアクティブなサブスクリプションが必要です。
エンドポイント
/transcript1クレジット動画のタイトル、チャンネル名、サムネイルなどのメタデータとともに、YouTube動画の文字起こしを取得します。language_code と requested_language、caption_type(manual または auto、不明な場合は null)、cached / fetched_at も返します。
| パラメータ | 必須 | 説明 |
|---|---|---|
v | はい | 動画IDまたは完全なYouTube URL |
language | いいえ | 言語コード(デフォルト: en) |
timestamps | いいえ | true にすると行ごとのタイムスタンプ(segments: start、duration、text、秒単位)が追加されます。デフォルトはオフです。 |
リクエスト
curl "https://getyoutubetranscript.com/api/v1/transcript?v=jNQXAC9IVRw" \
-H "Authorization: Bearer sk_live_..."レスポンス
{
"success": true,
"data": {
"video_id": "jNQXAC9IVRw",
"language_code": "en",
"requested_language": "en",
"caption_type": "manual",
"title": "Me at the zoo",
"author_name": "jawed",
"author_url": "https://www.youtube.com/channel/UC4Qob...",
"thumbnail_url": "https://...",
"transcript": "All right, so here we are...",
"word_count": 39,
"cached": true,
"fetched_at": "2026-09-20T03:10:58.938Z"
}
}/transcript/languages無料文字起こしを取得する前に、動画で利用できる字幕言語(手動と自動生成)を一覧表示します。default_language_code は言語を指定しない /transcript が返す言語です。字幕のない動画では空のリストを返します。
| パラメータ | 必須 | 説明 |
|---|---|---|
v | はい | 動画IDまたは完全なYouTube URL |
リクエスト
curl "https://getyoutubetranscript.com/api/v1/transcript/languages?v=kJQP7kiw5Fk" \
-H "Authorization: Bearer sk_live_..."レスポンス
{
"success": true,
"data": {
"video_id": "kJQP7kiw5Fk",
"default_language_code": "en",
"languages": [
{ "language_code": "en", "name": "English - en", "caption_type": "manual" },
{ "language_code": "es", "name": "Spanish", "caption_type": "manual" }
]
}
}/batch成功した動画ごとに1クレジット1回の呼び出しで最大100本の動画をキューに追加します。すぐに batch_id を返し、文字起こしはバックグラウンドで取得します。GET /batch で状況を確認するか、webhook_url を指定すると完了時に署名付き POST(X-GYT-Signature ヘッダー)を受け取れます。失敗した動画に課金されることはありません。
| パラメータ | 必須 | 説明 |
|---|---|---|
videos | はい | 動画IDまたはURLの配列(1〜100)。重複は1回だけ取得します。 |
language | いいえ | すべての動画に使う言語コード(デフォルト: en) |
timestamps | いいえ | true で結果に行ごとの segments を含めます |
webhook_url | いいえ | バッチ完了時に通知される公開 https URL |
Idempotency-Key | いいえ | ヘッダー。リクエストを安全に再試行できます。同じキーなら元のバッチを返します。 |
リクエスト
curl -X POST "https://getyoutubetranscript.com/api/v1/batch" \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"videos": ["jNQXAC9IVRw", "https://youtu.be/dQw4w9WgXcQ"],
"webhook_url": "https://example.com/hooks/transcripts"
}'レスポンス
{
"success": true,
"data": {
"batch_id": "324eb615-e4d5-4b3c-b8e7-04235671066b",
"status": "queued",
"total": 2,
"succeeded": 0,
"failed": 0,
"pending": 2,
"results_url": "https://getyoutubetranscript.com/api/v1/batch?id=324eb615-...",
"webhook_secret": "whsec_..."
}
}/batch無料バッチの状況、件数、送信順の結果1ページ分を返します。成功した項目は /transcript と同じフィールドを持ち、失敗した項目には error_code が付きます。
| パラメータ | 必須 | 説明 |
|---|---|---|
id | はい | POST /batch で返された batch_id |
offset | いいえ | スキップする件数(デフォルト: 0) |
limit | いいえ | 1ページの件数、1〜50(デフォルト: 20) |
リクエスト
curl "https://getyoutubetranscript.com/api/v1/batch?id=324eb615-e4d5-4b3c-b8e7-04235671066b" \
-H "Authorization: Bearer sk_live_..."レスポンス
{
"success": true,
"data": {
"batch_id": "324eb615-...",
"status": "completed",
"total": 2,
"succeeded": 1,
"failed": 1,
"credits_charged": 1,
"items": [
{ "position": 0, "status": "succeeded", "charged": true, "video_id": "jNQXAC9IVRw", "caption_type": "manual", "transcript": "All right, so here we are...", ... },
{ "position": 1, "status": "failed", "charged": false, "video_id": "dQw4w9WgXcQ", "error_code": "TRANSCRIPT_DISABLED" }
],
"next_offset": null
}
}/search1クレジット / ページフィルターとページネーションを使ってYouTube動画を検索します。
| パラメータ | 必須 | 説明 |
|---|---|---|
q | はい | 検索クエリ(2文字以上) |
country | いいえ | 2文字の国コード(デフォルト: us) |
language | いいえ | 言語コード(デフォルト: en) |
page_token | いいえ | 次のページを取得するための、前回レスポンスのcontinuation_token |
limit | いいえ | 最大結果数(デフォルト20、最大50) |
リクエスト
curl "https://getyoutubetranscript.com/api/v1/search?q=lofi+beats" \
-H "Authorization: Bearer sk_live_..."レスポンス
{
"success": true,
"data": {
"query": "lofi beats",
"video_results": [ { "title": "...", "videoId": "...", "channel": { "name": "..." } } ],
"continuation_token": "c_bKt9xQ2mVf7LpR0aZ3sWyA"
}
}/resolve無料チャンネルのハンドル、URL、またはユーザー名を実際のチャンネルIDに解決します。構文的な入力(すでにチャンネルIDまたはIDを含むURL)は通信なしで即座に解決されますが、単なるハンドルの場合は1回の実際のルックアップが発生します。
| パラメータ | 必須 | 説明 |
|---|---|---|
handle | はい | チャンネルID、URL、または@ハンドル |
リクエスト
curl "https://getyoutubetranscript.com/api/v1/resolve?handle=@mkbhd" \
-H "Authorization: Bearer sk_live_..."レスポンス
{
"success": true,
"data": {
"channel_id": "UCBJycsmduvYEL83R_U4JriQ",
"title": "Marques Brownlee",
"handle": "http://www.youtube.com/@mkbhd",
"resolved_via": "scrape"
}
}/channel/latest無料チャンネル情報(タイトル、登録者数、説明、アイコン)と、チャンネルのホームタブに表示される最新動画を返します。すべてのアップロード履歴には /channel/videos を使用してください。
| パラメータ | 必須 | 説明 |
|---|---|---|
channel | はい | チャンネルの@handle、URL、またはチャンネルID |
リクエスト
curl "https://getyoutubetranscript.com/api/v1/channel/latest?channel=@mkbhd" \
-H "Authorization: Bearer sk_live_..."レスポンス
{
"success": true,
"data": {
"channel": { "id": "UCBJycsmduvYEL83R_U4JriQ", "title": "Marques Brownlee", "subscribers": 1160000, "avatar": "https://..." },
"about": { "description": "...", "links": [] },
"videos_sections": [ ... ]
}
}/channel/videos1クレジット / ページチャンネルがアップロードしたすべての動画を新しい順にページ単位で返します。
| パラメータ | 必須 | 説明 |
|---|---|---|
channel | はい | チャンネルの@handle、URL、またはチャンネルID |
continuation | いいえ | 次のページを取得するための、前回のレスポンスのcontinuation_token(他のパラメータの代わりに指定)。24時間で失効します。 |
リクエスト
curl "https://getyoutubetranscript.com/api/v1/channel/videos?channel=@mkbhd" \
-H "Authorization: Bearer sk_live_..."レスポンス
{
"success": true,
"data": {
"videos": [ { "position": 1, "id": "...", "title": "...", "views": "6.2M", "published_time": "1d ago", "length": "10:47" } ],
"has_more": true,
"continuation_token": "c_pqHR9v13sqaqxlcKhA4MnA"
}
}/channel/search1クレジット / ページ1つのチャンネルの動画内を検索します(ページ単位)。
| パラメータ | 必須 | 説明 |
|---|---|---|
channel | はい | チャンネルの@handle、URL、またはチャンネルID |
q | はい | 検索クエリ(2文字以上) |
continuation | いいえ | 次のページを取得するための、前回のレスポンスのcontinuation_token(他のパラメータの代わりに指定)。24時間で失効します。 |
リクエスト
curl "https://getyoutubetranscript.com/api/v1/channel/search?channel=@mkbhd&q=iphone" \
-H "Authorization: Bearer sk_live_..."レスポンス
{
"success": true,
"data": {
"videos": [ { "position": 1, "id": "...", "title": "...", "published_time": "3w ago", "length": "17:14", "channel": { "name": "Marques Brownlee" } } ],
"has_more": true,
"continuation_token": "c_pnm10M6orzLgOTVWJk2oww"
}
}/playlist1クレジット / ページプレイリスト内のすべての動画をページ単位で返します。最後のページでは continuation_token が null になります。
| パラメータ | 必須 | 説明 |
|---|---|---|
list | はい | プレイリストIDまたはURL |
continuation | いいえ | 次のページを取得するための、前回のレスポンスのcontinuation_token(他のパラメータの代わりに指定)。24時間で失効します。 |
リクエスト
curl "https://getyoutubetranscript.com/api/v1/playlist?list=PLxxx" \
-H "Authorization: Bearer sk_live_..."レスポンス
{
"success": true,
"data": {
"playlist_id": "PLxxx",
"title": "...",
"videos": [ { "position": 1, "id": "...", "title": "...", "channel": { "name": "..." } } ],
"has_more": true,
"continuation_token": "c_DfE9mQx2Ln8TbW4kJ1pZsA"
}
}/credits無料使う前にこのキーの残りクレジット残高を確認できます - MCPのget_creditsツールと同じデータです。
| パラメータ | 必須 | 説明 |
|---|
リクエスト
curl "https://getyoutubetranscript.com/api/v1/credits" \
-H "Authorization: Bearer sk_live_..."レスポンス
{
"success": true,
"data": {
"plan_credits_left": 87,
"topup_credits_left": 0,
"plan": "monthly",
"rate_limit_per_minute": 200
}
}エラー
エラーはHTTPステータスに加え、条件分岐に使える安定したcodeフィールドを含むJSONボディを返します:
| ステータス | コード | 意味 |
|---|---|---|
| 400 | BAD_REQUEST | パラメータが不足しているか無効です |
| 400 | CURSOR_EXPIRED | ページカーソルの有効期限切れ(24時間後)- 最初のページからやり直してください |
| 401 | MISSING_API_KEY / INVALID_API_KEY | キーが指定されていないか、無効/失効しています |
| 402 | PAYMENT_REQUIRED | クレジット不足 - 追加購入するかアップグレードしてください |
| 404 | VIDEO_UNAVAILABLE / TRANSCRIPT_NOT_FOUND | 動画またはリソースが見つかりません |
| 429 | RATE_LIMITED | プランのレート制限を超えるリクエストです |
| 503 | UPSTREAM_UNAVAILABLE | 一時的な上流の問題です - 再試行しても問題ありません |
| 504 | UPSTREAM_TIMEOUT | 上流の応答が25秒を超えました - 課金されず、再試行しても問題ありません |
このAPIをAIツールと組み合わせて使う
リクエストを自分で書く代わりに、Claude(または他のAIコーディングツール)にこのAPIを呼び出させたいですか?YouTube Transcriptスキルをダウンロードしてください - 文字起こしの取得、検索などの方法をAIに教える、すぐに使えるClaude Skillです。
Zapierで使う
コード不要:Zapierアプリを使えば、どのZapでも文字起こしの取得、YouTube検索、チャンネル動画の一覧取得ができます。同じAPIキーで接続でき、各アクションのクレジットはAPI呼び出しと同じです。