Aikの技術日記

技術的な進捗とか成果とかを細々と投稿するブログです。時々雑記も。

Youtube Analytics and Reporting API使ってみた - Part2:Youtube Analytics API編

※当記事の情報は、執筆当時(2023/05/31)時点のものです。
それ以降の最新情報については、公式Docsを参照してください。

はじめに

こんにちは、筆者です。

前回は「基礎知識編」として、当APIの基礎知識や概念、認証方式や必要スコープについて見ていきました。
今回は「Youtube Analytics API編」と題して、Youtube Analytics APIで出来ることやリクエスト/レスポンス型について見ていきます。

宣伝っぽくなりますが、当記事はPart1を読んでる前提で執筆されているので…。
まだ読んでない方は読むことをお勧めします。
特に「ディメンション」「メトリクス」については知っておかないとお話にならないので…。

それではいきましょう。

Youtube Analytics APIで何ができるか

Youtube Analytics APIで叩けるAPIは下記があります:
※各APIで必要とするスコープが異なるので、それも追記してます

  • query
    • メトリクス、ディメンションを指定し様々な情報を取得可能
    • このAPIの本体といっても過言ではない
  • groups
    • Youtube分析用のグループの作成、更新、削除、詳細取得が可能
    • 企業チャンネル等で複数のVtuberを抱えている際に役立つかも
  • groupItems
    • 指定グループへ自分のチャンネル/動画/再生リスト等を登録、削除可能
    • 指定グループに所属するアイテム一覧の取得も可能
    • 1グループにMAX500個まで登録可能

groupsとgroupItemsは、自アカウントで複数のチャンネルを運用している大規模なところ向けになるかと。
個人Youtuberであれば、queryのAPIさえマスターできれば十分かと思います。

当ブログでは、groupsとgroupItemsの紹介はしませんが…。
queryの紹介はがっつりやっていこうと思います、これがこのAPIの肝なのでね…。

queryAPIの紹介

まずは基礎情報から:

  • エンドポイントURL: https://youtubeanalytics.googleapis.com/v2/reports
  • 方式: GET
  • 必須クエリパラメータ:
    • ids: 取得対象のYoutubeチャンネルorコンテンツ所有者を指定
      • チャンネル指定の場合: channel==MINEとすれば、自チャンネルを指定可能
      • コンテンツ所有者指定の場合: contentOwner==[コンテンツ所有者ID]と指定
    • metrics: メトリクスを指定
      • カンマ区切りで複数指定可能
      • 例: views、likes,dislikes
    • startDate: データ取得対象日付(FROM)
      • YYYY-MM-DDで指定
    • endDate: データ取得対象日付(TO)
      • YYYY-MM-DDで指定
      • 未来日付を指定した場合、その地点で取得可能な最新データまで全て取れる
    • access_token: OAuth認証したアクセストークンを指定

APIを使いこなす鍵metricsと、任意パラメータのdimensionsについての詳細は後述。

その他任意指定のパラメータもありますが、量が膨大なので…。
TypeScriptで内容&説明を書いたコードを置いておくので、そちらを参照ください。

長いので折りたたみ

なお、以前は返却値がjson形式かcsv形式か選択できたようですが…。
v2となった現在は指定できないようです。

返却値の書式は以下となります:

長いので折りたたみ

CSV形式のデータをJSONで受け取るとこんな感じになるのかな…という印象です。
これだけだとちょっと分かりにくいので、実際のリクエストを例に見てみましょう。

実際のリクエストをもとにレスポンス構造を知る

例えば以下は、自チャンネルの、2022/01/01〜2023/05/01までの、
「動画再生数」「コメント数」「高評価数」「低評価数」「合計動画試聴時間」「1動画の平均再生時間」を取得できるクエリです。
※見やすいように改行してます、%2C,URIエンコードした値です

https://content-youtubeanalytics.googleapis.com/v2/reports
?ids=channel%3D%3DMINE
&metrics=views%2Ccomments%2Clikes%2Cdislikes%2CestimatedMinutesWatched%2CaverageViewDuration
&startDate=2022-01-01
&endDate=2023-05-01

上記をOAuth認証キーを付与した状態で発火すると、以下のような結果が得られます。

{
  "kind": "youtubeAnalytics#resultTable",
  "columnHeaders": [
    {
      "name": "views",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    },
    {
      "name": "comments",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    },
    {
      "name": "likes",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    },
    {
      "name": "dislikes",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    },
    {
      "name": "estimatedMinutesWatched",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    },
    {
      "name": "averageViewDuration",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    }
  ],
  "rows": [
    [
      // 以下はサンプルの数値です
      100,
      100
      100
      100
      100
      100
    ]
  ]
}

上記はディメンションを指定しない形式でしたので構造が単純ですが、ディメンションを指定すると少し構造が複雑になります。
というわけで、次はディメンションを指定するクエリを見て見ましょう。

例えば以下は、自チャンネルの、2022/01/01〜2023/05/01までの、
「OS」と「デバイス」によってグルーピングされた、
「動画再生数」「合計動画試聴時間」を取得できるクエリです。
※見やすいように改行してます

https://content-youtubeanalytics.googleapis.com/v2/reports
?ids=channel%3D%3DMINE
&dimensions=operatingSystem%2CdeviceType
&metrics=views%2CestimatedMinutesWatched
&startDate=2022-01-01
&endDate=2023-05-01

上記をOAuth認証キーを付与した状態で発火すると、以下のような結果が得られます。

{
  "kind": "youtubeAnalytics#resultTable",
  "columnHeaders": [
    {
      "name": "operatingSystem",
      "columnType": "DIMENSION",
      "dataType": "STRING"
    },
    {
      "name": "deviceType",
      "columnType": "DIMENSION",
      "dataType": "STRING"
    },
    {
      "name": "views",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    },
    {
      "name": "estimatedMinutesWatched",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    }
  ],
  "rows": [
    [
      // 数値はサンプルデータです、デバイスやOS名は実データから引っ張ってきました
      "WINDOWS",
      "DESKTOP",
      100,
      100
    ],
    [
      "ANDROID",
      "MOBILE",
      100,
      100
    ],
    [
      "IOS",
      "MOBILE",
      100,
      100
    ],
    [
      "MACINTOSH",
      "DESKTOP",
      100,
      100
    ],
    [
      "NINTENDO_SWITCH",
      "TV",
      100,
      100
    ]
    // 以下省略
  ]
}

ディメンションを指定した数だけ、その組み合わせだけデータ数が増えているのがわかると思います。
データ構造は少し複雑になりますが、慣れてしまえばこれはこれで分かりやすく感じますね。

正直言うとCSVファイルとして受け取った方が、直感的に分かりやすくなりそうですが…。
そちらをご所望の場合はYoutube Reporting APIを使ってね、ということなのでしょうかね。

お次は、当APIの肝となる「メトリクス」や「ディメンション」に指定できる値について見ていきましょう。

メトリクスとディメンションについて

APIで指定できるメトリクスやディメンションについて…紹介する前に、前回紹介し損ねた「レポート」と言う概念のお話から。

レポートについて

てっきり筆者は「メトリクスやディメンションは、自由に好きな組み合わせを指定できるんだ〜」と思ってましたが…。
公式Docsを見る感じ、どうもそうではなく…ある程度の「組み合わせパターン」が存在するようです。

そしてその組み合わせパターンが「レポート」として定義されてるらしく、
公式Docsから全てのレポート=組み合わせパターンが列挙されてます。
なお、組み合わせパターンには「フィルター」も組み込まれているため…正確には「ディメンションxメトリクスxフィルター」の組み合わせと思った方がいいかと。
((正直思ったこととして分かりづらい……。

そして、このレポートも大きく分けて2つに分かれます:

  • チャンネルレポート
    • 指定チャンネルに対するデータを取得できるもの
    • ユーザーアクティビティをベースにした値(再生数など)のみ取得できる
  • コンテンツ所有者レポート
    • コンテンツ所有者(Youtubeチャンネル所有者)が持つチャンネル全てに対するデータを取得できるもの
    • ユーザーアクティビティベースの値以外に、広告&収益情報も取得可能
      • 「具体的な収益金額」を取得可能なのはこっち

趣味でYoutubeチャンネルやってるのであれば、チャンネルレポートのみ参考にすれば十分そうですが…。
企業で運営している場合や、個人で収益化してて直接的な金額を見たい場合は「コンテンツ所有者レポート」も見ることになるかと。
((Youtubeとしては収益の金額はチャンネルではなく「チャンネルを運用しているアカウント」に紐づくから、このような構成になってるのかと思ったり

私が趣味でYoutubeチャンネル開いている(収益化してない)こともあり、当記事では「チャンネルレポート」に絞って見ていきます。
※なおコンテンツ所有者レポートの公式Docsは執筆当時時点(2023/05/31)で日本語翻訳されていません…あまり一般向けではないのでしょうかね…。

チャンネルレポートの一覧

ここからは、チャンネルレポート=組み合わせパターンの詳細を見ていきましょう。
なお、メトリクス/ディメンション/フィルターの各値が何を示しているかについては、TypeScriptで定義ファイルとして起こしてみましたので合わせて参照に:

メトリクス:長いので折りたたみ

ディメンション:長いので折りたたみ

フィルター:長いので折りたたみ

※なお、幾つかのレポートには「アメリカの州orコロンビア特別区」に限定した範囲で取得可能なレポートが別途用意されてます。
日本向けに展開しているならまず使わないと思いますがね…。
当記事ではそのレポートは扱わないので、気になる方は公式Docsを参照してみてください。

動画関連の情報を取れるレポート

※幾つかのレポートはディメンションやフィルターに「〇〇を必須で指定する」必要があるので、それらについては「必須指定」と記しています
※メトリクスは「指定可能なもの」を列挙してます

  • 基本レポート:
    • ディメンション: なし
    • メトリクス: views, redViews, comments, likes, dislikes, videosAddedToPlaylists, videosRemovedFromPlaylists, shares, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, averageViewPercentage, annotationClickThroughRate, annotationCloseRate, annotationImpressions, annotationClickableImpressions, annotationClosableImpressions, annotationClicks, annotationCloses, cardClickRate, cardTeaserClickRate, cardImpressions, cardTeaserImpressions, cardClicks, cardTeaserClicks, subscribersGained, subscribersLost, estimatedRevenue, estimatedAdRevenue, grossRevenue, estimatedRedPartnerRevenue, monetizedPlaybacks, playbackBasedCpm, adImpressions, cpm
    • フィルター: 以下の2種類を併用可能
      • country, continent, subContinentのいずれか
      • video, groupのいずれか
  • 時間ベースレポート:
    • ディメンション: 必須指定…day, monthのどちらか
      • creatorContentTypeも併用可能
    • メトリクス: views, redViews, comments, likes, dislikes, videosAddedToPlaylists, videosRemovedFromPlaylists, shares, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, averageViewPercentage, annotationClickThroughRate, annotationCloseRate, annotationImpressions, annotationClickableImpressions, annotationClosableImpressions, annotationClicks, annotationCloses, cardClickRate, cardTeaserClickRate, cardImpressions, cardTeaserImpressions, cardClicks, cardTeaserClicks, subscribersGained, subscribersLost, uniques, estimatedRevenue, estimatedAdRevenue, grossRevenue, estimatedRedPartnerRevenue, monetizedPlaybacks, playbackBasedCpm, adImpressions, cpm
    • フィルター: 以下の2種類を併用可能
      • country, continent, subContinentのいずれか
      • video, groupのいずれか
  • 国別ユーザーアクティビティレポート:
    • ディメンション: 必須指定…country
      • creatorContentTypeも併用可能
    • メトリクス: views, redViews, comments, likes, dislikes, videosAddedToPlaylists, videosRemovedFromPlaylists, shares, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, averageViewPercentage, annotationClickThroughRate, annotationCloseRate, annotationImpressions, annotationClickableImpressions, annotationClosableImpressions, annotationClicks, annotationCloses, cardClickRate, cardTeaserClickRate, cardImpressions, cardTeaserImpressions, cardClicks, cardTeaserClicks, subscribersGained, subscribersLost, estimatedRevenue, estimatedAdRevenue, grossRevenue, estimatedRedPartnerRevenue, monetizedPlaybacks, playbackBasedCpm, adImpressions, cpm
    • フィルター: 以下の2種類を併用可能
      • continent, subContinentのいずれか
      • video, groupのいずれか
  • 都市別ユーザーアクティビティレポート
    • ディメンション: 必須指定…city、以下2種類を併用可能
      • creatorContentType, country, subscribedStatusのいずれか
        • country==USと指定する際はprovinceも指定可能
      • day, monthのいずれか
    • メトリクス: views, estimatedMinutesWatched, averageViewDuration, averageViewPercentage
    • フィルター: 以下の2種類を併用可能
      • country, province, continent, subContinentのいずれか
      • video, groupのいずれか
    • 備考:
      • maxResultsの値は最大250件までとなる
      • sort条件の指定も必須、-views,-estimatedMinutesWatchedのいずれか
  • チャンネル登録状況(登録済み/未登録)別レポート
    • ディメンション: 必須指定…subscribedStatus、以下2種類を併用可能
      • creatorContentType
      • day, monthのいずれか
    • メトリクス: views, redViews, likes, dislikes, videosAddedToPlaylists, videosRemovedFromPlaylists, shares, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, averageViewPercentage, annotationClickThroughRate, annotationCloseRate, annotationImpressions, annotationClickableImpressions, annotationClosableImpressions, annotationClicks, annotationCloses, cardClickRate, cardTeaserClickRate, cardImpressions, cardTeaserImpressions, cardClicks, cardTeaserClicks
    • フィルター: 以下の3種類を併用可能
      • country, continent, subContinentのいずれか
      • video, groupのいずれか
      • subscribedStatus
  • 特定期間の動画再生情報統計レポート(ライブ配信版)
    • ディメンション: creatorContentType, liveOrOnDemand, subscribedStatus, youtubeProductと以下を併用可能
      • day, monthのいずれか
    • メトリクス: views, redViews, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration
    • フィルター: 以下の2種類 + liveOrOnDemand, subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
      • video, groupのいずれか
  • 国別の特定期間の動画再生情報統計レポート(ライブ配信版)
    • ディメンション: 必須指定…country
      • creatorContentType, liveOrOnDemand, subscribedStatus, youtubeProductも併用可能
    • メトリクス: views, redViews, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration
    • フィルター: 以下の2種類 + liveOrOnDemand, subscribedStatus, youtubeProductを併用可能
      • continent, subContinentのいずれか
      • video, groupのいずれか
  • 特定期間の動画再生情報統計レポート(ライブ配信以外版)
    • ディメンション: creatorContentType, subscribedStatus, youtubeProductと以下を併用可能
      • day, monthのいずれか
    • メトリクス: views, redViews, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, averageViewPercentage
    • フィルター: 以下の2種類 + subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
      • video, groupのいずれか
  • 国別の特定期間の動画再生情報統計レポート(ライブ配信以外版)
    • ディメンション: 必須指定…country
      • creatorContentType, subscribedStatus, youtubeProductも併用可能
    • メトリクス: views, redViews, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, averageViewPercentage
    • フィルター: 以下の2種類 + subscribedStatus, youtubeProductを併用可能
      • continent, subContinentのいずれか
      • video, groupのいずれか
  • 動画再生ページorアプリケーション別レポート
    • ディメンション: 必須指定…insightPlaybackLocationType
      • creatorContentType, day, liveOrOnDemand, subscribedStatusも併用可能
    • メトリクス: views, estimatedMinutesWatched
    • フィルター: 以下の2種類 + liveOrOnDemand, subscribedStatusを併用可能
      • country, province, continent, subContinentのいずれか
      • video, groupのいずれか
  • 埋め込み動画の再生数レポート
    • ディメンション: 必須指定…insightPlaybackLocationDetail
      • creatorContentTypeも併用可能
    • メトリクス: views, estimatedMinutesWatched
    • フィルター: 必須指定…insightPlaybackLocationType==EMBEDDED + 以下の2種類 + liveOrOnDemand, subscribedStatusを併用可能
      • country, province, continent, subContinentのいずれか
      • video, groupのいずれか
    • 備考:
      • maxResultsの値は最大25件までとなる
      • sort条件の指定も必須、-views,-estimatedMinutesWatchedのいずれか
  • トラフィック別再生情報レポート
    • ディメンション: 必須指定…insightTrafficSourceType
      • creatorContentType, day, liveOrOnDemand, subscribedStatusも併用可能
    • メトリクス: views, estimatedMinutesWatched
    • フィルター: 以下の2種類 + liveOrOnDemand, subscribedStatusを併用可能
      • country, province, continent, subContinentのいずれか
      • video, groupのいずれか
  • トラフィック量多い順レポート
    • ディメンション: 必須指定…insightTrafficSourceDetail
      • creatorContentTypeも併用可能
    • メトリクス: views, estimatedMinutesWatched
    • フィルター: 必須指定…insightTrafficSourceType + 以下の2種類 + liveOrOnDemand, subscribedStatusを併用可能
      • country, province, continent, subContinentのいずれか
      • video, groupのいずれか
    • 備考:
      • maxResultsの値は最大25件までとなる
      • sort条件の指定も必須、-views,-estimatedMinutesWatchedのいずれか
  • バイス種別レポート
    • ディメンション: 必須指定…deviceType
      • creatorContentType, day, liveOrOnDemand, subscribedStatus, youtubeProductも併用可能
    • メトリクス: views, estimatedMinutesWatched
    • フィルター: 以下の2種類 + operatingSystem, liveOrOnDemand, subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
      • video, groupのいずれか
  • OS種別レポート
    • ディメンション: 必須指定…operatingSystem
      • creatorContentType, day, liveOrOnDemand, subscribedStatus, youtubeProductも併用可能
    • メトリクス: views, estimatedMinutesWatched
    • フィルター: 以下の2種類 + deviceType, liveOrOnDemand, subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
      • video, groupのいずれか
  • OS/デバイス種別レポート
    • ディメンション: 必須指定…deviceType, operatingSystem
      • creatorContentType, day, liveOrOnDemand, subscribedStatus, youtubeProductも併用可能
    • メトリクス: views, estimatedMinutesWatched
    • フィルター: 以下の2種類 + liveOrOnDemand, subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
      • video, groupのいずれか
  • 視聴者の年齢/性別層レポート
    • ディメンション: 必須指定…ageGroup, gender(片方のみでも可)
      • creatorContentType, liveOrOnDemand, subscribedStatusも併用可能
    • メトリクス: viewerPercentage
    • フィルター: 以下の2種類 + liveOrOnDemand, subscribedStatusを併用可能
      • country, province, continent, subContinentのいずれか
      • video, groupのいずれか
  • 動画のシェア状況レポート
    • ディメンション: 必須指定…sharingService
      • creatorContentType, subscribedStatusも併用可能
    • メトリクス: shares
    • フィルター: 以下の2種類 + subscribedStatusを併用可能
      • country, continent, subContinentのいずれか
      • video, groupのいずれか
  • 動画の継続視聴時間レポート
    • ディメンション: 必須指定…elapsedVideoTimeRatio
      • creatorContentTypeも併用可能
    • メトリクス: audienceWatchRatio, relativeRetentionPerformance
    • フィルター: 必須指定…video + audienceType, subscribedStatus, youtubeProductを併用可能
  • 地域別人気動画レポート
    • ディメンション: 必須指定…video
      • creatorContentTypeも併用可能
    • メトリクス: views, redViews, comments, likes, dislikes, videosAddedToPlaylists, videosRemovedFromPlaylists, shares, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, averageViewPercentage, annotationClickThroughRate, annotationCloseRate, annotationImpressions, annotationClickableImpressions, annotationClosableImpressions, annotationClicks, annotationCloses, cardClickRate, cardTeaserClickRate, cardImpressions, cardTeaserImpressions, cardClicks, cardTeaserClicks, subscribersGained, subscribersLost, estimatedRevenue, estimatedAdRevenue, grossRevenue, estimatedRedPartnerRevenue, monetizedPlaybacks, playbackBasedCpm, adImpressions, cpm
    • フィルター: country, continent, subContinentのうちいずれかを使用
    • 備考:
      • maxResultsの値は最大200件までとなる
      • sort条件の指定も必須、-views, -redViews, -estimatedRevenue, -estimatedRedPartnerRevenue, -estimatedMinutesWatched, -estimatedRedMinutesWatched, -subscribersGained, -subscribersLostのいずれか
  • チャンネル登録者/未登録者に人気動画レポート
    • ディメンション: 必須指定…video
      • creatorContentTypeも併用可能
    • メトリクス: views, redViews, likes, dislikes, videosAddedToPlaylists, videosRemovedFromPlaylists, shares, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, averageViewPercentage, annotationClickThroughRate, annotationCloseRate, annotationImpressions, annotationClickableImpressions, annotationClosableImpressions, annotationClicks, annotationCloses, cardClickRate, cardTeaserClickRate, cardImpressions, cardTeaserImpressions, cardClicks, cardTeaserClicks
    • フィルター: 以下 + subscribedStatusを併用可能
      • country, continent, subContinentのいずれか
    • 備考:
      • maxResultsの値は最大200件までとなる
      • sort条件の指定も必須、-views, -redViews, -estimatedMinutesWatched, -estimatedRedMinutesWatchedのいずれか
  • Youtubeサービス(YoutubeGame,YoutubeKidsなど)別の人気動画
    • ディメンション: 必須指定…video
      • creatorContentTypeも併用可能
    • メトリクス: views, redViews, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, averageViewPercentage
    • フィルター: 以下 + subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
    • 備考:
      • maxResultsの値は最大200件までとなる
      • sort条件の指定も必須、-views, -redViews, -estimatedMinutesWatched, -estimatedRedMinutesWatchedのいずれか
  • チャンネル内の人気動画
    • ディメンション: 必須指定…video
      • creatorContentTypeも併用可能
    • メトリクス: views, redViews, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration
    • フィルター: 以下 + liveOrOnDemand, subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
    • 備考:
      • maxResultsの値は最大200件までとなる
      • sort条件の指定も必須、-views, -redViews, -estimatedMinutesWatched, -estimatedRedMinutesWatchedのいずれか
再生リスト関連の情報を取れるレポート
  • 基本レポート
    • ディメンション: なし
    • メトリクス: views, redViews, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, playlistStarts, viewsPerPlaylistStart, averageTimeInPlaylist
    • フィルター: 必須指定…isCurated==1 + 以下2種類 + subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
      • playlist, groupのいずれか
  • 時間ベースレポート
    • ディメンション: 必須指定…day, monthのいずれか
      • subscribedStatus, youtubeProductを併用可能
    • メトリクス: views, redViews, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, playlistStarts, viewsPerPlaylistStart, averageTimeInPlaylist
    • フィルター: 必須指定…isCurated==1 + 以下2種類 + subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
      • playlist, groupのいずれか
  • 国別レポート
    • ディメンション: 必須指定…countryのいずれか
      • subscribedStatus, youtubeProductを併用可能
    • メトリクス: views, redViews, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, playlistStarts, viewsPerPlaylistStart, averageTimeInPlaylist
    • フィルター: 必須指定…isCurated==1 + 以下2種類 + subscribedStatus, youtubeProductを併用可能
      • continent, subContinentのいずれか
      • playlist, groupのいずれか
  • 動画再生ページorアプリケーション別レポート
    • ディメンション: 必須指定…insightPlaybackLocationType
      • day, subscribedStatusを併用可能
    • メトリクス: views, estimatedMinutesWatched, playlistStarts, viewsPerPlaylistStart, averageTimeInPlaylist
    • フィルター: 必須指定…isCurated==1 + 以下2種類 + subscribedStatusを併用可能
      • country, province, continent, subContinentのいずれか
      • playlist, groupのいずれか
  • 埋め込み動画の再生数レポート
    • ディメンション: 必須指定…insightPlaybackLocationDetail
    • メトリクス: views, estimatedMinutesWatched, playlistStarts, viewsPerPlaylistStart, averageTimeInPlaylist
    • フィルター: 必須指定…isCurated==1;insightPlaybackLocationType==EMBEDDED + 以下2種類 + subscribedStatusを併用可能
      • country, province, continent, subContinentのいずれか
      • playlist, groupのいずれか
    • 備考:
      • maxResultsの値は最大25件までとなる
      • sort条件の指定も必須、-views,-estimatedMinutesWatched, -playlistStartsのいずれか
  • トラフィック別再生情報レポート
    • ディメンション: 必須指定…insightTrafficSourceType
      • day, subscribedStatusを併用可能
    • メトリクス: views, estimatedMinutesWatched, playlistStarts, viewsPerPlaylistStart, averageTimeInPlaylist
    • フィルター: 必須指定…isCurated==1 + 以下2種類 + subscribedStatusを併用可能
      • country, province, continent, subContinentのいずれか
      • playlist, groupのいずれか
  • トラフィック量多い順レポート
    • ディメンション: 必須指定…insightTrafficSourceDetail
    • メトリクス: views, estimatedMinutesWatched, playlistStarts, viewsPerPlaylistStart, averageTimeInPlaylist
    • フィルター: 必須指定…isCurated==1;insightTrafficSourceType + 以下2種類 + subscribedStatusを併用可能
      • country, province, continent, subContinentのいずれか
      • playlist, groupのいずれか
    • 備考:
      • maxResultsの値は最大25件までとなる
      • sort条件の指定も必須、-views,-estimatedMinutesWatched, -playlistStartsのいずれか
  • バイス種別レポート
    • ディメンション: 必須指定…deviceType
      • day, subscribedStatus, youtubeProductを併用可能
    • メトリクス: views, estimatedMinutesWatched, playlistStarts, viewsPerPlaylistStart, averageTimeInPlaylist
    • フィルター: 必須指定…isCurated==1 + 以下2種類 + operatingSystem, subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
      • playlist, groupのいずれか
  • OS種別レポート
    • ディメンション: 必須指定…operatingSystem
      • day, subscribedStatus, youtubeProductを併用可能
    • メトリクス: views, estimatedMinutesWatched, playlistStarts, viewsPerPlaylistStart, averageTimeInPlaylist
    • フィルター: 必須指定…isCurated==1 + 以下2種類 + deviceType, subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
      • playlist, groupのいずれか
  • OS/デバイス種別レポート
    • ディメンション: 必須指定…deviceType, operatingSystem
      • day, subscribedStatus, youtubeProductを併用可能
    • メトリクス: views, estimatedMinutesWatched, playlistStarts, viewsPerPlaylistStart, averageTimeInPlaylist
    • フィルター: 必須指定…isCurated==1 + 以下2種類 + subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
      • playlist, groupのいずれか
  • 視聴者の年齢/性別層レポート
    • ディメンション: 必須指定…ageGroup, gender(片方のみの指定でもOK)
      • subscribedStatusを併用可能
    • メトリクス: viewerPercentage
    • フィルター: 必須指定…isCurated==1 + 以下2種類 + subscribedStatusを併用可能
      • country, province, continent, subContinentのいずれか
      • playlist, groupのいずれか
  • チャンネル内上位の再生リストレポート
    • ディメンション: 必須指定…playlist
    • メトリクス: views, redViews, estimatedMinutesWatched, estimatedRedMinutesWatched, averageViewDuration, playlistStarts, viewsPerPlaylistStart, averageTimeInPlaylist
    • フィルター: 必須指定…isCurated==1 + 以下 + playlist, subscribedStatus, youtubeProductを併用可能
      • country, province, continent, subContinentのいずれか
    • 備考:
      • maxResultsの値は最大200件までとなる
      • sort条件の指定も必須、-views,-redViews, -estimatedMinutesWatched, -estimatedRedMinutesWatched, -playlistStartsのいずれか
広告パフォーマンス関連の情報を取れるレポート
  • 広告種別別レポート
    • ディメンション: 必須指定…adType
      • dayを併用可能
    • メトリクス: grossRevenue, adImpressions, cpm
    • フィルター: 以下2種類を併用可能
      • country, continent, subContinentのいずれか
      • video, groupのいずれか

サンプルクエリ例をもっと知りたい方へ

ここまで紹介してきたパラメータを駆使することで、当queryAPIは様々なデータを取得できますが…。
こういった分析関連に明るくないと、どんなデータが取れるかなかなか想像つかないと思います。
((少なくとも筆者は全く想像つきません…。

そんな状況に備えてか、公式記事には「基本的なユースケース」と題してクエリの例がいくつか紹介されている上…。
※説明が英語ですが… developers.google.com

公式Docsのクエリサンプル欄

クリックすることで、テストクエリも発火できます。
OAuth認証の実装もテストクエリ発火ツールに組み込まれているので、どんなデータが取れるかイメージつきにくい場合は是非参考にしてみてください。

おわりに

今回はYoutube Analytics and Reporting APIの「Youtube Analytics API」について深掘りしてみました。

知れば知るほど、要素が多いわ項目が多いわで中々に骨が折れましたが…。(特にレポート…)
これだけまとめれば、Youtube Analytics APIで出来ることはある程度分かった気がします。
(使いこなせるとは言ってない)

最後に注意点として…。
今回ディメンションやメトリクス、各レポートについて、公式Docsにて少し難しく記載されているところを私なりに分かりやすい日本語で書き起こしています。

…が、もしかしたら微〜妙に間違ってる記述もあるかも知れないので…。
APIを叩いてみて「あれっ?」となったら、公式Docsを参照に適宜読み替えてもらえればと思います。

次回はいよいよ「Youtube Reporting API」について見ていこうと思いますが…。
正直気力をかなり持っていかれたので、いつ出るかどうか…。
やるとしても、多分「Youtube Analytics APIではできないこと」みたいな観点でまとめると思うので…ご了承ください。

それでは|д゚)