How to Get YouTube Transcripts in Python

Two ways to pull YouTube transcripts in Python: the open-source youtube-transcript-api library, and a hosted REST API. Working code for both, and where the self-hosted approach breaks in production.

00:07:00 · SEP 26, 2026

簡単な回答

手早くローカルスクリプトを書くならyoutube-transcript-apiをインストール、デプロイ後にIPブロックやPoTokenの問題に悩まされたくないならホスト型REST APIを呼び出しましょう。どちらも動くコード付きで以下に説明します。
01

オープンソースライブラリをインストール

youtube-transcript-apiはYouTube自身の字幕データを直接取得する、よくメンテナンスされたPythonパッケージです - APIキーもYouTube Data APIのクォータも不要です。

pip install youtube-transcript-api

動画IDで文字起こしを取得:

from youtube_transcript_api import YouTubeTranscriptApi

api = YouTubeTranscriptApi()
transcript = api.fetch("dQw4w9WgXcQ", languages=["en"])

for snippet in transcript:
    print(snippet.text, snippet.start, snippet.duration)
02

デプロイすると壊れる場所

ノートPC上では問題なく動きます。クラウドサーバーにデプロイすると、実際によく知られた失敗にぶつかることがあります - IPブロック、PoTokenRequired、そして見た目通りとは限らない「文字起こし無効」エラーです。正確な原因と対処法は完全な診断チェックリストをご覧ください。

03

APIキーを取得する(セルフホストしたくない場合)

ダッシュボードから無料キーを取得 - 100無料クレジット、カード不要。

pip install requests
04

Pythonからホスト型APIを呼び出す

プロキシプールもIPブロック対応のメンテナンスも不要 - 単なるHTTPリクエストです:

import requests

response = requests.get(
    "https://getyoutubetranscript.com/api/v1/transcript",
    params={"v": "dQw4w9WgXcQ"},
    headers={"Authorization": "Bearer sk_live_..."},
)
result = response.json()

print(result["data"]["transcript"])
print(result["data"]["word_count"])

失敗したリクエストはライブラリ固有の例外を投げる代わりにエラーオブジェクトを返すので、すべてのエンドポイントで同じエラーハンドリングが使えます。

{ "success": false, "code": "...", "message": "..." }
05

複数の動画を取得する

動画IDのリストをループする方法は同じです - プランの分あたりリクエスト数の上限にだけ注意してください。バックオフとリトライのロジックはレート制限ガイドを参照してください。

どちらの方法も同じ情報を返します - 違いはインフラの維持を誰が行うかです。料金の詳細を見る(100無料クレジット、カード不要)、または各エンドポイントについてAPIドキュメントをお読みください。

Python版YouTube文字起こしFAQ

Q01

どちらの方法を使うべきですか?

手早いローカルスクリプトやプロトタイプにはyoutube-transcript-api。本番環境にデプロイし、プロキシ/IPブロックの回避策を自分で維持したくないならホスト型API。

Q02

ホスト型APIにyoutube-transcript-apiライブラリは必要ですか?

いいえ - ただのREST APIです。requests、httpx、curlなど任意のHTTPクライアントで呼び出せます。Python固有の依存関係は不要です。

Q03

全文だけでなく行ごとのタイムスタンプは取得できますか?

オープンソースライブラリはスニペットごとの開始時刻・長さを直接返します。当社のホスト型APIの文字起こしエンドポイントは現在、フラットなテキストと単語数として全文を返すだけで、セグメントごとのタイムスタンプはありません - APIから特にその粒度が必要な場合は、今のところオープンソースライブラリの方が適しています。

Q04

動画に文字起こしがない場合はどうなりますか?

どちらの方法も空文字列ではなく特定のエラーを返します - 各エラーコードの意味は診断チェックリストをご覧ください。

関連記事