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は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)デプロイすると壊れる場所
ノートPC上では問題なく動きます。クラウドサーバーにデプロイすると、実際によく知られた失敗にぶつかることがあります - IPブロック、PoTokenRequired、そして見た目通りとは限らない「文字起こし無効」エラーです。正確な原因と対処法は完全な診断チェックリストをご覧ください。
APIキーを取得する(セルフホストしたくない場合)
ダッシュボードから無料キーを取得 - 100無料クレジット、カード不要。
pip install requestsPythonからホスト型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": "..." }複数の動画を取得する
動画IDのリストをループする方法は同じです - プランの分あたりリクエスト数の上限にだけ注意してください。バックオフとリトライのロジックはレート制限ガイドを参照してください。
どちらの方法も同じ情報を返します - 違いはインフラの維持を誰が行うかです。料金の詳細を見る(100無料クレジット、カード不要)、または各エンドポイントについてAPIドキュメントをお読みください。
Python版YouTube文字起こしFAQ
どちらの方法を使うべきですか?
手早いローカルスクリプトやプロトタイプにはyoutube-transcript-api。本番環境にデプロイし、プロキシ/IPブロックの回避策を自分で維持したくないならホスト型API。
ホスト型APIにyoutube-transcript-apiライブラリは必要ですか?
いいえ - ただのREST APIです。requests、httpx、curlなど任意のHTTPクライアントで呼び出せます。Python固有の依存関係は不要です。
全文だけでなく行ごとのタイムスタンプは取得できますか?
オープンソースライブラリはスニペットごとの開始時刻・長さを直接返します。当社のホスト型APIの文字起こしエンドポイントは現在、フラットなテキストと単語数として全文を返すだけで、セグメントごとのタイムスタンプはありません - APIから特にその粒度が必要な場合は、今のところオープンソースライブラリの方が適しています。
動画に文字起こしがない場合はどうなりますか?
どちらの方法も空文字列ではなく特定のエラーを返します - 各エラーコードの意味は診断チェックリストをご覧ください。
関連記事
- YouTube API Quota Exceeded: Causes and Fixes
- YouTube Transcript API Rate Limit: What It Is and How to Handle 429s
- YouTube Transcript MCP Server: Setup Guide for Claude and Other AI Tools
- YouTube Transcripts in n8n: HTTP Request Workflow Guide
- Migrating from Supadata: A Field Guide
- Migrating from TranscriptAPI.com: A Field Guide
- Build an AI YouTube Video Summarizer with LangChain and Next.js
- GetYouTubeTranscript vs TranscriptAPI
- GetYouTubeTranscript vs youtubetotranscript.com
- GetYouTubeTranscript vs youtube-transcript.io
- GetYouTubeTranscript vs NoteGPT