APIの利用にはAPIキーが必要です。これを作成するにはGoogle Developers Consoleを開き、まず[Create Project]からプロジェクトを作成します。

次に作成したプロジェクトのページを開き、[Enable an API]をクリックします。

[YouTube Data API v3]の右にある[OFF]をクリックして、STATUSを[ON]にします。

利用条件への同意を求められます。これに同意すると、このAPIが有効となります。

続けて左のサイドバーの[Credentials]をクリックします。そして[Create new Key]をクリックします。

用途に合わせたキーを選択します。ここでは[Server Key]を選択するものとします。

リクエストを許可するサーバーのIPアドレスを入力します。テストと本番で異なるIPアドレスからアクセスするならば、それら複数の登録が必要です。複数のアドレスは、1行に1つずつ記述します。

作成したキーは、先ほどの[Credentials]のページの表にある[API KEY]で確認できます。

なお作成したキーが有効となるまで、少し時間がかかります。
Google Cloud Platformでは、この情報は認証情報 – API とサービスで確認できます。
APIキーを指定しなかった場合は、次のようにレスポンスがあります。
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "https://code.google.com/apis/console"
}
],
"code": 403,
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
}
https://www.googleapis.com/youtube/v3/search?part=id
許可していないIPアドレスからアクセスした場合には、次のようになります。許可した直後にも、このように返される場合があります。
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "accessNotConfigured",
"message": "Access Not Configured. Please use Google Developers Console to activate the API for your project."
}
],
"code": 403,
"message": "Access Not Configured. Please use Google Developers Console to activate the API for your project."
}
}
OAuthのIDを入手する手順は、基本的にAPIキーのそれと同じです。違いはCredentialsのページからの操作で、ここで[Create new Client ID]をクリックします。

APIのリクエスト数には制限が設けられています。それはユニットという単位で規定され、リクエストごとに消費されていきます。クォータの使用量 - YouTube Data API の概要 | YouTube Data API (v3) | Google Developers
たとえば検索では1回のリクエストで100ユニット消費されることから、1日で検索できるのは500,000回までです。
この割り当ての「Queries /日 (Queries per day)」が予期せず0となった場合には、プロジェクトを作成し直します。YouTube Queries per day becomes to 0 - Stack Overflow
Data APIを各種言語から簡単に利用するための、ライブラリが用意されています。
JavaScriptのライブラリからData APIにアクセスするには、Google Developers ConsoleのJAVASCRIPT ORIGINSの設定が重要で、これが正しくないと「origin_mismatch」としてエラーとなります。
基本的に、次のようにAPIのURLへリクエストします。
操作 https://www.googleapis.com/youtube/v3/リソース?クエリ
各種のリクエストに対するレスポンスは、YouTube Data API v3 - Google APIs Explorerで確認できます。
操作 (operations) はHTTPメソッドであり、リソースに対する操作によって下表のように使い分けます。
| リソースに対する操作 | メソッド | APIでの用語 |
|---|---|---|
| リソースを取得 | GET | list |
| リソースを作成 | POST | insert |
| リソースを変更 | PUT | update |
| リソースを削除 | DELETE | delete |
リソース (resources) には次項の文字列を指定します。このとき、そのリソースがサポートされる操作に注意が必要です。
| リソース | サポートされる操作 | |||||
|---|---|---|---|---|---|---|
| 表記 | 意味 | list | insert | update | delete | その他 |
| activities | アクティビティ | ○ | ○ | × | × | |
| Captions | ○ | ○ | ○ | ○ | download | |
| channelBanners | チャンネルバナー | × | ○ | × | × | |
| channelSections | ○ | ○ | ○ | ○ | ||
| channels | チャンネル | ○ | × | × | × | |
| CommentThreads | ○ | ○ | ○ | × | ||
| Comments | ○ | ○ | ○ | ○ | markAsSpam、setModerationStatus | |
| guideCategories | ガイドカテゴリ | ○ | × | × | × | |
| i18nLanguages | 国際化言語 | ○ | × | × | × | |
| i18nRegions | 国際化地域 | ○ | × | × | × | |
| ○ | ○ | ○ | ○ | bind、control、transition | ||
| ○ | ○ | ○ | ○ | |||
| playlistItems | 再生リストの項目 | ○ | ○ | ○ | ○ | |
| playlists | 再生リスト | ○ | ○ | ○ | ○ | |
| search | 検索 | ○ | × | × | × | |
| subscriptions | サブカテゴリ | ○ | × | × | × | |
| thumbnails | サムネイル | × | × | × | × | |
| VideoAbuseReportReasons | ○ | × | × | × | ||
| videoCategories | 動画カテゴリ | ○ | × | × | × | |
| videos | 動画 | ○ | ○ | ○ | ○ | |
| watermarks | ウォーターマーク | × | × | × | × | set、unset |
クエリ (query) に指定できる値はリソースにより異なりますが、下表のパラメータはすべてに共通です。
| パラメータ | 意味 |
|---|---|
| key | APIキー (必須) |
| access_token | 現在のユーザーのOAuth 2.0トークン |
| callback | コールバック関数 |
| fields | レスポンスに含めるフィールドのサブセット |
| prettyPrint | レスポンスをインデントと改行により書式を整えて返すかどうか |
| userIp | ユーザーのIPアドレス |
| quotaUser | ユーザーのIPアドレス (userIp) の代替 |
このうちfieldsパラメータは、etag,items(id,snippet)の形式で指定します。実際にはこれをURLエンコードするため、クエリに含めるときにはfields=etag%2Citems%28id%2Csnippet%29とします。fields パラメータについて - YouTube Data API の概要 - YouTube | Google Developers
この他にもリソースを取得する操作、つまりGETでリクエストするAPIではpartパラメータが必須となります。part パラメータについて - YouTube Data API の概要 - YouTube | Google Developers
特定のYouTubeチャンネル、または現在認証されているユーザーがYouTubeで行った操作に関する情報の取得や、お知らせメッセージの投稿を行えます。
パラメータには、
のいずれかを指定します。さもなくば「No filter selected.」としてエラーとなります。
YouTubeチャンネルに関する情報を取得できます。このリソースの可能な操作は、取得 (list) のみです。パラメータには、次のいずれかを指定します。
たとえば「音楽」のカテゴリに関連付けられているチャンネルを取得するには、categoryIdでそのチャンネル カテゴリIDを指定して、次のようにリクエストします。
GET https://www.googleapis.com/youtube/v3/channels
?part=snippet&categoryId=GCTXVzaWM&key=API_KEY
Data API v3ではチャンネルの指定にYouTubeユーザー名 (YouTube ID) は指定できず、すべてチャンネルIDで指定する必要があります。YouTube Data API - チャンネル ID への対応 - YouTube | Google Developers
YouTubeユーザー名からチャンネルIDを得るには、
GET https://www.googleapis.com/youtube/v3/channels
?part=id&forUsername=GoogleDevelopers&key=API_KEY
のように、channelsリソースへGETリクエストします。この結果は次のように返され、この例では「UC_x5XG1OV2P6uZZ5FSM9Ttw」がチャンネルIDです。
"{
"kind": "youtube#channelListResponse",
"etag": "\"gMjDJfS6nsym0T-NKCXALC_u_rM/9Uu_LJKSiIBlJOBZoZLkKcjhUUE\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 5
},
"items": [
{
"kind": "youtube#channel",
"etag": "\"gMjDJfS6nsym0T-NKCXALC_u_rM/JgZIwrlCnsd1wzjssCxaCFp8mRU\"",
"id": "UC_x5XG1OV2P6uZZ5FSM9Ttw"
}
]
}
"
このとき該当するチャンネルIDが存在しないときはtotalResultsが0となり、itemsは空の配列となります。
なおチャンネルIDは、つねに"UC"から始まる24文字の文字列です。YouTube ユーザー ID とチャンネル ID - YouTube ヘルプ
さしあたってチャンネルIDを知りたいだけならば、youtube.channels.list - Google APIs Explorerでリクエストすることで得られます。
またはユーザーのページ、たとえばwww.youtube.com/user/GoogleDevelopersからそのユーザーの動画ページを開きます。そして下図のユーザーのチャンネルへのリンクのURLを調べるとwww.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttwとなっており、ここからチャンネルIDを知ることもできます。

ガイドカテゴリはYouTubeのシステムによって自動で割り当てられるカテゴリであり、ユーザーによって割り当てられる動画カテゴリとは異なります。
たとえば日本で有効なガイドカテゴリを取得するには、regionCodeをjpとして
GET https://www.googleapis.com/youtube/v3/guideCategories
?part=snippet®ionCode=jp&key=API_KEY
とリクエストします。
なおレスポンスで返されるチャンネルID「UCBR8-60-B28hp2BmDPdntcQ」は、YouTube Spotlight - YouTubeのIDです。
| レスポンス | 意味 |
|---|---|
| items.id | チャンネル カテゴリID |
| items.snippet.channelId | チャンネルID |
YouTubeでサポートされる地域の一覧を取得できます。
GET https://www.googleapis.com/youtube/v3/i18nRegions
?part=snippet&key=API_KEY
条件に一致する、
に関する情報を取得できます。たとえばキーワードで検索するならば、次のようにします。
GET https://www.googleapis.com/youtube/v3/search
?part=snippet&q=KEYWORD&key=API_KEY
このときpartに指定できるのはidもしくはsnippetのみで、さらに詳細まで知るには得られた個々のIDを動画でリクエストします。
またqパラメータには論理演算子、NOT (-) およびOR (|) を指定できます。たとえばAまたはBであるが、Cではないという条件ならば、"A|B -C"とします。ただしパラメータに含めるときにはURLエンコードが必要なため、実際には"A%7CB%20-C"となります。
チャンネルを検索するには、そのチャンネルIDで次のように検索します。
GET https://www.googleapis.com/youtube/v3/search
?part=snippet&channelId=CHANNEL_ID&key=API_KEY
必須のパラメータはpartだけとされていますが、クエリを指定するqパラメータを指定しないと、レスポンスのitemsパラメータが空のリストとして返されることがあります。
既定では一致する動画、チャンネル、再生リストのすべてが返されますが、typeパラメータによりそれを制限できます。
以下のパラメータを指定する場合は、typeパラメータをvideoとしなければなりません。Errors - Search: list - YouTube | Google Developers
さもなくばbadRequest (400) エラーとなり、「Invalid combination of search filters and/or restrictions.」と返されます。またchannelTypeパラメータを指定する場合には、typeはchannelとします。さもなくば、これも同様にinvalidSearchFilterとなります。
| パラメータ | 意味 |
|---|---|
| publishedAfter | 指定日時より後に作成されたリソースにのみ制限する (RFC 3339形式) |
| publishedBefore | 指定日時より前に作成されたリソースにのみ制限する (RFC 3339形式) |
| レスポンス | 意味 |
|---|---|
| items.snippet.liveBroadcastContent | 動画またはチャンネルに、ライブ配信が含まれているかどうか
|
パラメータには次のいずれかを指定し、動画カテゴリの情報を取得できます。
特定の動画カテゴリの情報を取得するには、YouTubeのカテゴリ一覧にあるカテゴリごとに割り当てられたIDを、idパラメータに指定します。
GET https://www.googleapis.com/youtube/v3/videoCategories
?part=snippet&id=1&key=API_KEY
特定の地域でサポートされるカテゴリの一覧を取得するには、regionCodeパラメータを指定します。このパラメータの値はISO 3166-1 alpha-2の国コードで、たとえば日本はそれが「jp」であるから、
GET https://www.googleapis.com/youtube/v3/videoCategories
?part=snippet®ionCode=jp&key=API_KEY
とすると、日本で使用できる動画カテゴリの一覧を取得できます。
| レスポンス | 意味 |
|---|---|
| snippet.channelId | 動画カテゴリを作成したYouTubeチャンネル |
| snippet.title | 動画カテゴリのタイトル |
| snippet.assignable | 動画がそのカテゴリに関連付けられるかどうか |
個別の動画を操作できます。
GET https://www.googleapis.com/youtube/v3/videos
?part=snippet&id=VIDEO_ID&key=API_KEY
partパラメータに指定できるのは以下の値であり、これらの情報を取得できます。
idではビデオIDを指定します。これはYouTubeの再生ページでは、https://www.youtube.com/watch?v=VIDEO_IDにあるVIDEO_IDです。このIDはカンマで区切って複数指定できるため、複数の動画の情報を一括して取得できます。
| レスポンス | 意味 |
|---|---|
| statistics.viewCount | 動画の再生回数 |
| fileDetails.creationTime | アップロードされた動画ファイルの作成日時 (動画の所有者のみ) |
| topicDetails.topicIds[] | 動画に関連付けられている中心的なFreebaseトピックIDのリスト。各トピックの詳細は、そのIDを検索のパラメータでtopicIdに指定することで得られる。google api - How to use `relevantTopicIds` from YouTube Data API v3? - Stack Overflow |