YouTube API データ活用

YouTube Data API v3入門|APIキー発行と最初のコード実行【最小サンプル付き】

2023年8月26日

このページでは、Google CloudでのAPIキー発行から、YouTube Data API v3を叩いて動画情報を取得するところまでを、最短ルートで解説します。この記事を終えれば、他の記事(動画一覧取得・チャット・字幕・文字起こし)へスムーズに進めます。

1. 事前準備

  • Googleアカウント
  • Google Cloud Console にアクセスできること

2. APIキー発行(Google Cloud Console)

  1. Google Cloud Console にログイン
  2. 右上のプロジェクト選択から、新しいプロジェクトを作成
  3. 左上メニュー「API とサービス」→「認証情報
  4. +認証情報を作成」→「API キー」を選択
  5. 表示されたAPIキーを控える(後でコードに貼り付け)

安全のためのキー制限(推奨)

  • 「アプリケーションの制限」:必要に応じてHTTPリファラ/IPv4などを制限
  • 「API の制限」:YouTube Data API v3 のみに制限

3. YouTube Data API v3 を有効化

  1. 「API とサービス」→「ライブラリ
  2. 検索欄に YouTube Data API v3 と入力
  3. 該当APIを開き、有効にする をクリック

これで準備完了です。次に最小コードでAPIを叩いてみましょう。

4. 最小コードで動画情報を取得(Python)

使い方

  1. 下記の API_KEY に発行したキーを貼り付け
  2. VIDEO_ID に任意のYouTube動画IDを設定(URLの v= の値)
  3. 実行すると、タイトル・公開日・再生回数などが表示されます
pip install google-api-python-client
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

API_KEY = "YOUR_API_KEY"           # ← 置き換え
VIDEO_ID = "dQw4w9WgXcQ"           # ← 任意の動画IDに置き換え

def main():
    try:
        youtube = build("youtube", "v3", developerKey=API_KEY)
        res = youtube.videos().list(
            part="snippet,statistics,contentDetails",
            id=VIDEO_ID
        ).execute()

        items = res.get("items", [])
        if not items:
            print("Video not found or unavailable.")
            return

        it = items[0]
        snippet = it.get("snippet", {})
        stats   = it.get("statistics", {})
        cdet    = it.get("contentDetails", {})

        print("-- BASIC INFO --")
        print("title:", snippet.get("title"))
        print("publishedAt:", snippet.get("publishedAt"))
        print("channelTitle:", snippet.get("channelTitle"))

        print("-- STATISTICS --")
        print("viewCount:", stats.get("viewCount"))
        print("likeCount:", stats.get("likeCount"))
        print("commentCount:", stats.get("commentCount"))

        print("-- CONTENT DETAILS --")
        print("duration(ISO8601):", cdet.get("duration"))

    except HttpError as e:
        print("HTTP Error:", e)
    except Exception as ex:
        print("Error:", ex)

if __name__ == "__main__":
    main()

5. 実行結果サンプル(抜粋)

-- BASIC INFO --
title: サンプル動画のタイトル
publishedAt: 2025-08-10T12:00:03Z
channelTitle: Sample Channel

-- STATISTICS --
viewCount: 123456
likeCount: 7890
commentCount: 321

-- CONTENT DETAILS --
duration(ISO8601): PT4M12S

6. よくあるハマりどころ&安全運用のコツ

  • 403/400エラー:API有効化忘れ・キー制限の設定ミスが多い。まずは制限を緩めて動作確認→段階的に厳格化
  • クォータ:1日1万ユニットが目安。videos.list は50件まで一括取得可能(呼び出し回数削減)
  • 個人情報は取れない:メールアドレスや個別視聴履歴はAPIで取得不可
  • 次の拡張:チャンネルの動画一覧、コメント取得、配信/アーカイブ判別などに展開可能

7. 次に読む(実装記事へ)

YouTube Data APIでチャンネルの動画一覧を取得する方法

pytchatでアーカイブ配信のチャットを取得する方法

youtube-transcript-apiで字幕を取得する方法

Whisperで文字起こしして要約する方法

YouTubeの情報を取得する方法まとめ(入口へ戻る)

-YouTube API, データ活用