| この記事の要点 |
|
API キーでできること・できないこと
YouTube Data API (v3) は、動画・チャンネル・再生リスト・コメントなどの情報をプログラムから取得するための API です。リクエストに付ける認証情報には API キーと OAuth 2.0 の 2 種類があり、用途で使い分けます。
| やりたいこと | API キー | OAuth 2.0 |
|---|---|---|
| 公開動画の検索・タイトルや再生回数の取得 | 可 | 可 |
| 公開チャンネル・再生リストの情報取得 | 可 | 可 |
| 動画のアップロード・再生リストの編集 | 不可 | 可 |
| 自分のチャンネルの非公開動画・限定公開の管理 | 不可 | 可 |
「人気動画を一覧表示したい」「チャンネルの最新動画をサイトに載せたい」といった読み取り中心の用途なら、API キーだけで足ります。
API キーの取得手順
Google アカウントでログインした状態で進めます。画面の文言や配置は時期によって変わることがありますが、流れは同じです。
- Google Cloud コンソール(旧 Google Developers Console)にアクセスします
- 画面上部のプロジェクト選択から「プロジェクトを作成」(または「新しいプロジェクト」)を押します

- 任意のプロジェクト名を入力して「作成」を押します。プロジェクト名は後から変更できますが、プロジェクト ID は変更できません

- 「API とサービス」→「ライブラリ」を開き、「YouTube Data API v3」を検索して「有効にする」を押します。この操作を忘れると、キーを作っても API 呼び出しがエラーになります
- 「API とサービス」→「認証情報」→「認証情報を作成」→「API キー」の順に押します

- API キーが作成され、文字列が表示されます。これがリクエストの
keyパラメータに渡す値です - 続けて「キーを制限」(または作成したキーの編集画面)から、使用元と使える API を制限します

キーの制限を必ず設定する
API キーは、知っている人なら誰でも使えてしまう文字列です。漏れると他人にクォータを使い切られるため、作成したら次の 2 種類の制限を設定します。
| 制限の種類 | 選ぶ値 | 向いている使い方 |
|---|---|---|
| アプリケーションの制限 | HTTP リファラー(ウェブサイト) | ブラウザの JavaScript から直接呼ぶ場合。自サイトのドメインを登録 |
| アプリケーションの制限 | IP アドレス | サーバー(PHP・Python など)から呼ぶ場合。サーバーのグローバル IP を登録 |
| API の制限 | キーを制限 → YouTube Data API v3 | どの使い方でも設定推奨。他の API に流用されるのを防ぐ |
サーバーから呼ぶのに HTTP リファラー制限を付けると、リファラーが送られないため 403 エラーになります。呼び出し元に合った種類を選んでください。
取得したキーの動作確認
ターミナルから次のように実行し、JSON が返ってくれば成功です。YOUR_API_KEY を発行したキーに置き換えます(動画 ID は任意の公開動画のものを指定)。
curl "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&id=VIDEO_ID&key=YOUR_API_KEY"
返ってきた items の中に、タイトル(snippet.title)や再生回数(statistics.viewCount)が入っています。
クォータ(利用上限)の考え方
YouTube Data API v3 には 1 日あたりのクォータがあり、新規プロジェクトの既定値は 10,000 ユニットです(2026 年時点)。メソッドごとに消費量が決まっていて、videos.list や channels.list は 1 ユニット、search.list は 100 ユニットです。検索を多用すると 1 日 100 回程度で上限に達するため、結果をキャッシュする、検索の代わりにチャンネルのアップロード再生リストを playlistItems.list で取得する、といった工夫が有効です。クォータは太平洋時間の午前 0 時にリセットされます。
よくあるエラーと原因
- 400 API key not valid: キーの文字列が間違っている、またはキーを削除した
- 403 accessNotConfigured: プロジェクトで YouTube Data API v3 が有効化されていない(有効化直後は数分かかることがある)
- 403 quotaExceeded: その日のクォータを使い切った
- 403 の Requests from referer ... are blocked: リファラー制限・IP 制限と呼び出し元が一致していない
キーを安全に扱うために
- キーをソースコードに直接書いて Git に push しない。環境変数や
.envファイルで管理し、.gitignoreに入れる - 漏えいに気づいたら、コンソールでキーを再生成(または削除して新規作成)する
- 可能ならブラウザから直接呼ばず、自分のサーバー経由で呼んでキーを公開しない
関連
- Google OAuth 2.0 認証の実装方法
- OAuth 2.0 認可フロー完全ガイド
- Google Cloud Platform(GCP)とは
- .env ファイル完全ガイド — 環境変数・dotenv・シークレット管理
子ページはありません
- APIキー取得方法
- APIの有効化
- チャンネル情報の取得
- 動画やチャンネルの検索
- エラー一覧
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38