Reports: Query

Wichtig:Für API-Anfragen an diese Methode ist jetzt Zugriff auf den Bereich https://www.googleapis.com/auth/youtube.readonly erforderlich.

Mit dieser Methode können Sie viele verschiedene Analytics-Berichte abrufen. Bei jeder Anfrage werden mit Abfrageparametern eine Kanal-ID oder ein Rechteinhaber, ein Startdatum, ein Enddatum und mindestens eine Messwert angegeben. Sie können auch zusätzliche Abfrageparameter wie Dimensionen, Filter und Sortieranweisungen angeben.

  • Messwerte sind einzelne Messungen der Nutzeraktivität, z. B. Videoaufrufe oder Bewertungen („Mag ich“ und „Mag ich nicht“).
  • Dimensionen sind gängige Kriterien, mit denen Daten aggregiert werden, z. B. das Datum, an dem die Nutzeraktivität stattgefunden hat, oder das Land, in dem sich die Nutzer befanden. In einem Bericht hat jede Datenzeile eine eindeutige Kombination von Dimensionswerten.
  • Filter sind Dimensionswerte, mit denen die abzurufenden Daten angegeben werden. Sie können beispielsweise Daten für ein bestimmtes Land, ein bestimmtes Video oder eine Gruppe von Videos abrufen.

Hinweis:Rechteinhaberberichte sind nur für YouTube-Inhaltspartner verfügbar, die am YouTube-Partnerprogramm teilnehmen.

Gängige Anwendungsfälle

Anfrage

HTTP-Anfrage

GET https://youtubeanalytics.googleapis.com/v2/reports

Alle YouTube Analytics API-Anfragen müssen autorisiert sein. Im Autorisierungsleitfaden wird beschrieben, wie Sie mit dem OAuth 2.0-Protokoll Autorisierungstokens abrufen.

Für YouTube Analytics API-Anfragen werden die folgenden Autorisierungsbereiche verwendet:

Bereiche
https://www.googleapis.com/auth/yt-analytics.readonly YouTube Analytics-Berichte für deine YouTube-Inhalte ansehen Dieser Bereich bietet Zugriff auf Messwerte zur Nutzeraktivität wie Aufruf- und Bewertungszahlen.
https://www.googleapis.com/auth/yt-analytics-monetary.readonly YouTube Analytics-Finanzberichte für deine YouTube-Inhalte abrufen Dieser Bereich bietet Zugriff auf Messwerte zur Nutzeraktivität sowie auf geschätzte Umsatz- und Anzeigenleistungsmesswerte.
https://www.googleapis.com/auth/youtube YouTube-Konto verwalten In der YouTube Analytics API verwenden Kanalinhaber diesen Bereich, um YouTube Analytics-Gruppen und Gruppenelemente zu verwalten.
https://www.googleapis.com/auth/youtubepartner Ihre YouTube-Assets und zugehörigen Inhalte bei YouTube abrufen und verwalten In der YouTube Analytics API verwenden Content-Inhaber diesen Bereich, um YouTube Analytics-Gruppen und ‑Gruppenelemente zu verwalten.

Parameter

In den folgenden Tabellen sind die erforderlichen und optionalen Abfrageparameter für API-Anfragen zum Abrufen von Abfrageberichten aufgeführt. Die in der Tabelle aufgeführten Standardabfrageparameter sind ebenfalls optional und werden von vielen Google APIs unterstützt.

Parameter
Erforderliche Parameter
endDate string
Das Enddatum für das Abrufen von YouTube Analytics-Daten. Der Wert sollte das Format YYYY-MM-DD haben.

Die API-Antwort enthält Daten bis zum letzten Tag, für den alle Messwerte in der Abfrage zum Zeitpunkt der Abfrage verfügbar sind. Wenn in der Anfrage beispielsweise das Enddatum 5. Juli 2017 angegeben ist und Werte für alle angeforderten Messwerte nur bis zum 3. Juli 2017 verfügbar sind, ist das das letzte Datum, für das Daten in die Antwort aufgenommen werden. Das gilt auch dann, wenn Daten für einige der angeforderten Messwerte für den 4. Juli 2017 verfügbar sind.
Hinweis:In Version 1 der API hieß dieser Parameter end-date.
ids string
Gibt den YouTube-Kanal oder Rechteinhaber an, für den du YouTube Analytics-Daten abrufst.

  • Wenn Sie Daten für einen YouTube-Kanal anfordern möchten, legen Sie den Parameterwert ids auf channel==MINE oder channel==CHANNEL_ID fest. Dabei steht CHANNEL_ID für den YouTube-Kanal des derzeit authentifizierten Nutzers.
  • Wenn Sie Daten für einen YouTube-Rechteinhaber anfordern möchten, legen Sie den Parameterwert ids auf contentOwner==OWNER_NAME fest, wobei OWNER_NAME die content owner ID für den Nutzer ist.

metrics string
Eine durch Kommas getrennte Liste von YouTube Analytics-Messwerten, z. B. views oder likes,dislikes. Eine Liste der Berichte, die Sie abrufen können, und der in den einzelnen Berichten verfügbaren Messwerte finden Sie in der Dokumentation zu Kanalberichten oder Berichten für Rechteinhaber. Das Dokument Messwerte enthält Definitionen für alle Messwerte.
startDate string
Das Startdatum für das Abrufen von YouTube Analytics-Daten. Der Wert sollte das Format YYYY-MM-DD haben.
Hinweis:In Version 1 der API hieß dieser Parameter start-date.
Optionale Parameter
currency string
Die Währung, die von der API verwendet wird, um die folgenden geschätzten Umsatzmesswerte anzugeben: estimatedRevenue, estimatedAdRevenue, estimatedRedPartnerRevenue, grossRevenue, cpm, playbackBasedCpm. Die Werte, die die API für diese Messwerte zurückgibt, sind Schätzungen, die anhand von Wechselkursen berechnet werden, die sich täglich ändern. Wenn keiner dieser Messwerte angefordert wird, wird der Parameter ignoriert.

Der Parameterwert ist ein aus drei Buchstaben bestehender ISO 4217-Währungscode aus der Liste der Währungen unten. Die API gibt einen Fehler zurück, wenn eine nicht unterstützte Währung angegeben wird. Der Standardwert ist USD.

dimensions string
Eine durch Kommas getrennte Liste von YouTube Analytics-Dimensionen, z. B. video oder ageGroup,gender. Eine Liste der Berichte, die Sie abrufen können, und der Dimensionen, die für diese Berichte verwendet werden, finden Sie in der Dokumentation zu Kanalberichten oder Berichten für Rechteinhaber. Das Dokument Dimensionen enthält Definitionen für alle Dimensionen.
filters string
Eine Liste von Filtern, die beim Abrufen von YouTube Analytics-Daten angewendet werden sollen. In der Dokumentation zu Kanalberichten und Berichten für Rechteinhaber sind die Dimensionen aufgeführt, mit denen die einzelnen Berichte gefiltert werden können. Diese Dimensionen werden im Dokument Dimensionen definiert.

Wenn in einer Anfrage mehrere Filter verwendet werden, werden sie mit einem Semikolon (;) verknüpft. Die zurückgegebene Ergebnistabelle erfüllt dann beide Filter. Ein filters-Parameterwert von video==dMH0bHeiRNg;country==IT beschränkt das Ergebnisset beispielsweise auf Daten für das angegebene Video in Italien.

Mehrere Werte für einen Filter angeben

Die API unterstützt die Angabe mehrerer Werte für die Filter video, playlist und channel. Geben Sie dazu eine durch Kommas getrennte Liste der Video-, Playlist- oder Kanal-IDs an, nach denen die API-Antwort gefiltert werden soll. Ein filters-Parameterwert von video==pd1FJh59zxQ,Zhawgd0REhA;country==IT beschränkt das Ergebnisset beispielsweise auf Daten für die angegebenen Videos in Italien. Im Parameterwert können bis zu 500 IDs angegeben werden.

Wenn Sie mehrere Werte für denselben Filter angeben, können Sie diesen Filter auch der Liste der Dimensionen hinzufügen, die Sie für die Anfrage angeben. Dies gilt auch, wenn der Filter nicht als unterstützte Dimension für einen bestimmten Bericht aufgeführt ist. Wenn Sie den Filter der Liste der Dimensionen hinzufügen, werden die Ergebnisse in der API auch anhand der Filterwerte gruppiert.

Angenommen, Sie rufen den Bericht zu Zugriffsquellen eines Kanals ab. Dieser Bericht enthält zusammengefasste Statistiken zu Aufrufen, die auf der Art und Weise basieren, wie Zuschauer auf die Videoinhalte des Kanals zugegriffen haben. Angenommen, mit dem filters-Parameter Ihrer Anfrage wird eine Liste mit 10 Videos angegeben, für die Daten zurückgegeben werden sollen.
  • Wenn Sie dem Wert des Parameters dimensions video hinzufügen, enthält die API-Antwort separate Statistiken zur Traffic-Quelle für jedes der 10 Videos.
  • Wenn Sie dem Wert des Parameters dimensions nicht video hinzufügen, werden in der API-Antwort die Statistiken zur Traffic-Quelle für alle 10 Videos zusammengefasst.
includeHistoricalChannelData boolean
Hinweis:Dieser Parameter gilt nur für Berichte für Rechteinhaber.

Gibt an, ob die API-Antwort Daten zur Wiedergabezeit und zu Aufrufen von Kanälen aus dem Zeitraum vor der Verknüpfung der Kanäle mit dem Rechteinhaber enthalten soll. Der Standardparameterwert ist false. Das bedeutet, dass die API-Antwort nur Daten zu Wiedergabezeit und Aufrufen aus den Zeiträumen enthält, in denen die Kanäle mit dem Rechteinhaber verknüpft waren.

Es ist wichtig zu beachten, dass verschiedene Kanäle möglicherweise an unterschiedlichen Daten mit einem Rechteinhaber verknüpft wurden. Wenn mit der API-Anfrage Daten für mehrere Channels abgerufen werden und der Parameterwert false ist, enthält die API-Antwort Daten, die auf dem Verknüpfungsdatum für die einzelnen Channels basieren. Wenn der Parameterwert true ist, enthält die API-Antwort Daten, die den in der API-Anfrage angegebenen Datumsangaben entsprechen.
Hinweis:In Version 1 der API hieß dieser Parameter include-historical-channel-data.
maxResults integer
Die maximale Anzahl von Zeilen, die in die Antwort aufgenommen werden sollen.
Hinweis:In Version 1 der API hieß dieser Parameter max-results.
sort string
Eine durch Kommas getrennte Liste von Dimensionen oder Messwerten, die die Sortierreihenfolge für YouTube Analytics-Daten bestimmen. standardmäßig ist die Sortierfolge aufsteigend Das Präfix - bewirkt eine absteigende Sortierreihenfolge.
startIndex integer
Der 1-basierte Index der ersten abzurufenden Einheit. Der Standardwert ist 1. Verwenden Sie diesen Parameter zusammen mit dem Parameter max-results als Paginierungsmechanismus.
Hinweis:In Version 1 der API hieß dieser Parameter start-index.
Standardparameter
access_token OAuth 2.0-Token für den aktuellen Nutzer.
alt Dieser Parameter wird in Version 2 der API nicht unterstützt, da dort nur JSON-Antworten unterstützt werden. Das Datenformat für die API-Antwort.
  • Gültige Werte: json, csv
  • Standardwert: json
callback Callback-Funktion
  • Name der JavaScript Callback-Funktion für die Antwortbehandlung.
  • Wird in JavaScript-JSON-P-Anfragen verwendet.
prettyPrint

Gibt die Antwort mit Einzügen und Zeilenumbrüchen zurück.

  • Gibt die Antwort in einem für Menschen lesbaren Format zurück, wenn true.
  • Standardwert: true.
  • Bei Einstellung auf false kann die Nutzlast der Antwort reduziert werden. Dies kann in einigen Umgebungen zu einer besseren Leistung führen.
quotaUser Dieser Parameter wurde in Version 1 der API unterstützt, die jetzt eingestellt ist. Dieser Parameter wird in Version 2 der API nicht unterstützt.
userIp Dieser Parameter wurde in Version 1 der API unterstützt, die jetzt eingestellt ist. Dieser Parameter wird in Version 2 der API nicht unterstützt.

Anfragetext

Senden Sie beim Aufrufen dieser Methode keinen Anfragetext.

Antwort

Wie in der Parameterdefinition für alt beschrieben, kann die API Antworten im JSON- oder CSV-Format zurückgeben. Informationen zum Antworttext für die einzelnen Typen finden Sie unten:

JSON
{
  "kind": "youtubeAnalytics#resultTable",
  "columnHeaders": [
    {
      "name": string,
      "dataType": string,
      "columnType": string
    },
    ... more headers ...
  ],
  "rows": [
    [
      {value}, {value}, ...
    ]
  ]
}
Attribute
kind string
Dieser Wert gibt den Typ der in der API-Antwort enthaltenen Daten an. Für die Methode query ist der Wert des Attributs kind youtubeAnalytics#resultTable. Wenn die API jedoch Unterstützung für andere Methoden hinzufügt, können in API-Antworten für diese Methoden andere kind-Attributwerte enthalten sein.
columnHeaders[] list
Dieser Wert enthält Informationen zu den Daten, die in den Feldern rows zurückgegeben werden. Jedes Element in der Liste columnHeaders gibt ein Feld an, das im Wert rows zurückgegeben wird. Dieser enthält eine Liste mit durch Kommas getrennten Daten.

Die Liste columnHeaders beginnt mit den in der API-Anfrage angegebenen Dimensionen, gefolgt von den in der API-Anfrage angegebenen Messwerten. Die Reihenfolge der Dimensionen und Messwerte entspricht der Reihenfolge in der API-Anfrage.

Wenn die API-Anfrage beispielsweise die Parameter dimensions=ageGroup,gender&metrics=viewerPercentage enthält, werden in der API-Antwort Spalten in dieser Reihenfolge zurückgegeben: ageGroup,gender,viewerPercentage.
columnHeaders[].name string
Der Name der Dimension oder des Messwerts.
columnHeaders[].columnType string
Der Typ der Spalte (DIMENSION oder METRIC).
columnHeaders[].dataType string
Der Typ der Daten in der Spalte (STRING, INTEGER, FLOAT usw.).
rows[] list
Die Liste enthält alle Zeilen der Ergebnistabelle. Jedes Element in der Liste ist ein Array, das durch Kommas getrennte Daten für eine einzelne Datenzeile enthält. Die Reihenfolge der durch Kommas getrennten Datenfelder entspricht der Reihenfolge der Spalten, die im Feld columnHeaders aufgeführt sind.

Wenn für die angegebene Abfrage keine Daten verfügbar sind, wird das Element rows aus der Antwort ausgelassen.

Die Antwort für eine Abfrage mit der Dimension day enthält keine Zeilen für die letzten Tage.

CSV
day, views, likes, ...
"2012-01-01", 12.0, 3, ...
"2012-01-02", 16.0, 2, ...
"2012-01-03", 18.0, 8, ...
...

Beispiele

Hinweis:Die folgenden Codebeispiele enthalten möglicherweise nicht alle unterstützten Programmiersprachen. Eine Liste der unterstützten Sprachen finden Sie in der Dokumentation zu Clientbibliotheken.

JavaScript

In diesem Beispiel wird die YouTube Analytics API aufgerufen, um die täglichen Aufrufe und andere Messwerte für den Kanal des autorisierenden Nutzers für das Kalenderjahr 2017 abzurufen. Im Beispiel wird die Google APIs-Clientbibliothek für JavaScript verwendet.

Bevor Sie dieses Beispiel zum ersten Mal lokal ausführen, müssen Sie Autorisierungsanmeldedaten für Ihr Projekt einrichten:
  1. Erstellen oder wählen Sie ein Projekt in der Google API Console aus.
  2. Aktivieren Sie die YouTube Analytics API für Ihr Projekt.
  3. Wählen Sie oben auf der Seite Anmeldedaten den Tab OAuth-Zustimmungsbildschirm aus. Wählen Sie eine E‑Mail-Adresse aus, geben Sie einen Produktnamen ein, falls noch nicht geschehen, und klicken Sie auf die Schaltfläche „Speichern“.
  4. Klicken Sie auf der Seite Anmeldedaten auf die Schaltfläche Anmeldedaten erstellen und wählen Sie OAuth-Client-ID aus.
  5. Wählen Sie den Anwendungstyp „Webanwendung“ aus.
  6. Geben Sie im Feld „Autorisierte JavaScript-Quellen“ die URL ein, über die Sie das Codebeispiel bereitstellen. Sie können beispielsweise http://localhost:8000 oder http://yourserver.example.com verwenden. Sie können das Feld „Autorisierte Weiterleitungs-URIs“ leer lassen.
  7. Klicken Sie auf die Schaltfläche Erstellen, um das Erstellen der Anmeldedaten abzuschließen.
  8. Kopieren Sie die Client-ID, bevor Sie das Dialogfeld schließen. Sie benötigen sie für das Codebeispiel.

Speichern Sie das Beispiel dann in einer lokalen Datei. Suchen Sie im Beispiel die folgende Zeile und ersetzen Sie YOUR_CLIENT_ID durch die Client-ID, die Sie beim Einrichten Ihrer Anmeldedaten für die Autorisierung erhalten haben.

gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'});

Jetzt können Sie das Beispiel testen:

  1. Öffnen Sie die lokale Datei in einem Webbrowser und öffnen Sie die Debugging-Konsole im Browser. Es sollte eine Seite mit zwei Schaltflächen angezeigt werden.
  2. Klicken Sie auf die Schaltfläche Autorisieren und laden, um den Nutzerautorisierungsablauf zu starten. Wenn Sie der App die Berechtigung erteilen, Ihre Kanaldaten abzurufen, sollten im Browser die folgenden Zeilen in der Konsole angezeigt werden:
    Sign-in successful
    GAPI client loaded for API
  3. Wenn Sie anstelle der oben genannten Zeilen eine Fehlermeldung sehen, prüfen Sie, ob Sie das Skript über den autorisierten Weiterleitungs-URI laden, den Sie für Ihr Projekt eingerichtet haben, und ob Sie Ihre Client-ID wie oben beschrieben in den Code eingefügt haben.
  4. Klicken Sie auf die Schaltfläche Ausführen, um die API aufzurufen. Im Browser sollte ein response-Objekt in der Konsole ausgegeben werden. In diesem Objekt wird die Eigenschaft result einem Objekt zugeordnet, das die API-Daten enthält.
<script src="https://apis.google.com/js/api.js"></script>
<script>
  function authenticate() {
    return gapi.auth2.getAuthInstance()
        .signIn({scope: "https://www.googleapis.com/auth/yt-analytics.readonly"})
        .then(function() { console.log("Sign-in successful"); },
              function(err) { console.error("Error signing in", err); });
  }
  function loadClient() {
    return gapi.client.load("https://youtubeanalytics.googleapis.com/$discovery/rest?version=v2")
        .then(function() { console.log("GAPI client loaded for API"); },
              function(err) { console.error("Error loading GAPI client for API", err); });
  }
  // Make sure the client is loaded and sign-in is complete before calling this method.
  function execute() {
    return gapi.client.youtubeAnalytics.reports.query({
      "ids": "channel==MINE",
      "startDate": "2017-01-01",
      "endDate": "2017-12-31",
      "metrics": "views,estimatedMinutesWatched,averageViewDuration,averageViewPercentage,subscribersGained",
      "dimensions": "day",
      "sort": "day"
    })
        .then(function(response) {
                // Handle the results here (response.result has the parsed body).
                console.log("Response", response);
              },
              function(err) { console.error("Execute error", err); });
  }
  gapi.load("client:auth2", function() {
    gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'});
  });
</script>
<button onclick="authenticate().then(loadClient)">authorize and load</button>
<button onclick="execute()">execute</button>

Python

In diesem Beispiel wird die YouTube Analytics API aufgerufen, um die täglichen Aufrufe und andere Messwerte für den Kanal des autorisierenden Nutzers für das Kalenderjahr 2017 abzurufen. Im Beispiel wird die Google APIs-Clientbibliothek für Python verwendet.

Bevor Sie dieses Beispiel zum ersten Mal lokal ausführen, müssen Sie Autorisierungsanmeldedaten für Ihr Projekt einrichten:
  1. Erstellen oder wählen Sie ein Projekt in der Google API Console aus.
  2. Aktivieren Sie die YouTube Analytics API für Ihr Projekt.
  3. Wählen Sie oben auf der Seite Anmeldedaten den Tab OAuth-Zustimmungsbildschirm aus. Wählen Sie eine E‑Mail-Adresse aus, geben Sie einen Produktnamen ein, falls noch nicht geschehen, und klicken Sie auf die Schaltfläche „Speichern“.
  4. Klicken Sie auf der Seite Anmeldedaten auf die Schaltfläche Anmeldedaten erstellen und wählen Sie OAuth-Client-ID aus.
  5. Wählen Sie als Anwendungstyp Andere aus, geben Sie den Namen „YouTube Analytics API Quickstart“ ein und klicken Sie auf die Schaltfläche „Erstellen“.
  6. Klicken Sie auf OK, um das resultierende Dialogfeld zu schließen.
  7. Klicken Sie rechts neben der Client-ID auf die Schaltfläche (JSON herunterladen).
  8. Verschieben Sie die heruntergeladene Datei in Ihr Arbeitsverzeichnis.

Außerdem müssen Sie die Google APIs-Clientbibliothek für Python und einige zusätzliche Bibliotheken installieren:

pip install --upgrade google-api-python-client
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2

Jetzt können Sie das Beispiel testen:

  1. Kopieren Sie das folgende Codebeispiel in Ihr Arbeitsverzeichnis.
  2. Aktualisieren Sie im Beispiel den Wert der Variablen CLIENT_SECRETS_FILE so, dass er dem Speicherort der Datei entspricht, die Sie nach dem Einrichten Ihrer Autorisierungsanmeldedaten heruntergeladen haben.
  3. Führen Sie den Beispielcode in einem Terminalfenster aus:
    python yt_analytics_v2.py
  4. Führen Sie den Autorisierungsvorgang durch. Der Autorisierungsvorgang wird möglicherweise automatisch in Ihrem Browser geladen. Andernfalls müssen Sie die Autorisierungs-URL in ein Browserfenster kopieren. Fügen Sie am Ende des Autorisierungsvorgangs bei Bedarf den im Browser angezeigten Autorisierungscode in das Terminalfenster ein und drücken Sie die Eingabetaste.
  5. Die API-Abfrage wird ausgeführt und die JSON-Antwort wird im Terminalfenster ausgegeben.
# -*- coding: utf-8 -*-

import os
import google.oauth2.credentials
import google_auth_oauthlib.flow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from google_auth_oauthlib.flow import InstalledAppFlow

SCOPES = ['https://www.googleapis.com/auth/yt-analytics.readonly']

API_SERVICE_NAME = 'youtubeAnalytics'
API_VERSION = 'v2'
CLIENT_SECRETS_FILE = 'YOUR_CLIENT_SECRET_FILE.json'
def get_service():
  flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES)
  credentials = flow.run_console()
  return build(API_SERVICE_NAME, API_VERSION, credentials = credentials)

def execute_api_request(client_library_function, **kwargs):
  response = client_library_function(
    **kwargs
  ).execute()

  print(response)

if __name__ == '__main__':
  # Disable OAuthlib's HTTPs verification when running locally.
  # *DO NOT* leave this option enabled when running in production.
  os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'

  youtubeAnalytics = get_service()
  execute_api_request(
      youtubeAnalytics.reports().query,
      ids='channel==MINE',
      startDate='2017-01-01',
      endDate='2017-12-31',
      metrics='estimatedMinutesWatched,views,likes,subscribersGained'
      dimensions='day',
      sort='day'
  )

Testen!

Verwenden Sie APIs Explorer, um diese API aufzurufen und die API-Anfrage und -Antwort zu sehen.