この記事では、YouTube Data API v3を使い、Pythonから動画情報を取得する基本手順をまとめます。
YouTube関連データを扱う方法には、公式API、字幕取得ライブラリ、yt-dlp、Whisperなど複数あります。その中でYouTube Data APIは、動画タイトル、チャンネル情報、公開日、再生数、コメント数などのメタデータを取得するための公式APIです。
この記事でできること
- YouTube Data APIで取得できる情報を確認する
- APIキーをPythonから読み込む
videos.listで動画情報を取得する- 取得結果からタイトル、公開日、再生数などを取り出す
- 次に読むチャンネル動画一覧取得記事へつなげる
YouTube Data APIで取得できるもの
YouTube Data API v3では、動画、チャンネル、再生リスト、コメントなどの公開情報を取得できます。たとえば、動画情報を取得する videos.list では、リクエストに一致する動画リソースの一覧が返ります。公式ドキュメントでは、このメソッドのクォータコストは1ユニットとされています。
Videos: list - YouTube Data API
| 取得対象 | 代表的なAPI | 例 |
|---|---|---|
| 動画情報 | videos.list | タイトル、説明文、公開日、再生数、高評価数など |
| チャンネル情報 | channels.list | チャンネル名、登録者数、アップロード再生リストIDなど |
| 再生リスト内の動画 | playlistItems.list | チャンネルに投稿された動画一覧など |
| 検索結果 | search.list | キーワードや条件に合う動画・チャンネル |
字幕本文、音声、動画ファイルそのものを取得するAPIではありません。字幕や文字起こしを扱う場合は、別の方法と役割を分けて考えます。
利用上の注意
- APIキーを公開しない
- 取得できるのはAPIで提供されている範囲の情報に限られる
- クォータ消費を意識し、必要なAPIだけ呼び出す
- 大量取得や再配布前提の使い方は避ける
- YouTube API Servicesの利用規約やポリシーを確認する
Googleの公式ドキュメントでは、APIにはクォータがあり、メソッドごとにコストが設定されています。特に search.list は便利ですがコストが高いため、動画一覧取得では後述する playlistItems.list を使うほうが扱いやすいです。
Quota Calculator - YouTube Data API
APIキーを用意する
Google Cloud Consoleでプロジェクトを作成し、YouTube Data API v3を有効化したうえでAPIキーを発行します。キーはPythonコードに直接書かず、.env で管理します。
YOUTUBE_API_KEY=ここにAPIキーを書くAPIキーの管理方法は、次の記事で整理しています。
APIキーを外部ファイルで管理する方法|.envとconfig.iniの使い分け
必要なライブラリをインストールする
この記事では、まず requests でHTTPリクエストを送る方法を使います。公式クライアントライブラリもありますが、最初はURLとパラメータの関係が見えるほうが理解しやすいです。
pip install requests python-dotenv動画IDから動画情報を取得する
まず、1本の動画IDを指定して、タイトル、公開日、再生数などを取得します。
import os
import requests
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv("YOUTUBE_API_KEY")
if not API_KEY:
raise RuntimeError("YOUTUBE_API_KEY が設定されていません")
VIDEO_ID = "dQw4w9WgXcQ"
url = "https://www.googleapis.com/youtube/v3/videos"
params = {
"part": "snippet,statistics,contentDetails",
"id": VIDEO_ID,
"key": API_KEY,
}
response = requests.get(url, params=params, timeout=30)
response.raise_for_status()
data = response.json()
if not data["items"]:
raise RuntimeError("動画が見つかりませんでした")
item = data["items"][0]
snippet = item["snippet"]
statistics = item.get("statistics", {})
print("title:", snippet["title"])
print("published_at:", snippet["publishedAt"])
print("channel_title:", snippet["channelTitle"])
print("view_count:", statistics.get("viewCount"))part には、取得したい情報のまとまりを指定します。基本的には、タイトルや公開日なら snippet、再生数やコメント数なら statistics、動画時間なら contentDetails を使います。
取得結果を整形する
後から分析に使う場合は、APIレスポンスをそのまま保存するより、必要な項目だけを辞書にまとめると扱いやすくなります。
video = {
"video_id": item["id"],
"title": snippet["title"],
"published_at": snippet["publishedAt"],
"channel_id": snippet["channelId"],
"channel_title": snippet["channelTitle"],
"view_count": int(statistics.get("viewCount", 0)),
"like_count": int(statistics.get("likeCount", 0)),
"comment_count": int(statistics.get("commentCount", 0)),
"duration": item["contentDetails"]["duration"],
}
print(video)高評価数やコメント数は、動画や設定によって取得できない場合があります。そのため、get() を使って欠損に備えます。
CSVに保存する
1本だけでも、CSV保存まで確認しておくと、複数動画へ拡張しやすくなります。
import csv
from pathlib import Path
output_dir = Path("outputs/youtube")
output_dir.mkdir(parents=True, exist_ok=True)
csv_path = output_dir / "video_info.csv"
with csv_path.open("w", encoding="utf-8-sig", newline="") as f:
writer = csv.DictWriter(f, fieldnames=video.keys())
writer.writeheader()
writer.writerow(video)
print(f"saved: {csv_path}")よくあるエラー
APIキーが設定されていない
YOUTUBE_API_KEY が読み込めていない場合は、.env の場所、変数名、仮想環境の作業ディレクトリを確認します。
403エラーが出る
APIが有効化されていない、APIキー制限が合っていない、クォータを使い切っている、といった可能性があります。Google Cloud Console側の設定を確認します。
itemsが空になる
動画IDが間違っている、動画が削除・非公開になっている、地域や権限の都合で取得できない、といった可能性があります。
他のYouTube取得方法との違い
| 方法 | 向いている用途 |
|---|---|
| YouTube Data API | 動画・チャンネル・再生リストなどのメタデータ取得 |
| youtube-transcript-api | 字幕がある動画の字幕取得 |
| yt-dlp | 許諾済み素材の音声・字幕取得や前処理 |
| Whisper | 字幕がない許諾済み音声の文字起こし |
| pytchat | チャット取得の検証。ただし保守停止中のため注意 |
まず公式APIで取得できる情報は公式APIを使い、字幕や音声など公式APIの範囲外のものは目的と権利関係を確認して別手段を検討する、という切り分けが扱いやすいです。
次に読む記事
- YouTube Data APIでチャンネルの動画一覧を取得してCSV保存する方法|Python
- YouTubeの情報を取得する方法まとめ|公式API・字幕・チャット・文字起こしの使い分け
- youtube-transcript-apiで許諾済み動画の字幕を取得する方法|Pythonで分析前処理を整える
まとめ
YouTube Data API v3を使うと、動画IDからタイトル、公開日、チャンネル情報、再生数などのメタデータを取得できます。まずは videos.list で1本の動画情報を取得し、レスポンスの構造を確認すると理解しやすいです。
複数動画を扱う場合は、チャンネルのアップロード再生リストから動画一覧を取得し、必要に応じて videos.list で統計情報を補う流れに進むと、クォータを抑えながら分析用データを作れます。