YouTube Reporting API - Get Bulk Data Reports
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
O YouTube gera automaticamente um conjunto de relatórios de receita de publicidade gerenciados pelo sistema para proprietários de conteúdo que têm acesso aos relatórios correspondentes no Estúdio de Criação. Esses relatórios foram criados para fornecer acesso programático a dados que também estão disponíveis em relatórios para download manual acessíveis no menu "Relatórios" do YouTube Studio.
Observação:a API oferece acesso a um conjunto diferente de relatórios do YouTube Studio, mas eles contêm dados semelhantes. Os relatórios da API podem ter campos diferentes e usar nomes de campo diferentes dos relatórios do Estúdio de Criação.
Como o YouTube gera automaticamente relatórios gerenciados pelo sistema, o processo para recuperar esses relatórios é diferente do processo para os relatórios de dados em massa do YouTube Analytics disponíveis pela API.
Como recuperar relatórios
As etapas a seguir explicam como recuperar relatórios gerenciados pelo sistema usando a API.
Etapa 1: extrair credenciais de autorização
Todas as solicitações da API YouTube Reporting precisam ser autorizadas. O guia de autorização explica como usar o protocolo OAuth 2.0 para recuperar tokens de autorização.
As solicitações da API YouTube Reporting usam os seguintes escopos de autorização:
Escopos |
https://www.googleapis.com/auth/yt-analytics.readonly |
Visualizar os relatórios do YouTube Analytics para seu conteúdo do YouTube. Este escopo fornece acesso às métricas de atividade do usuário, como contagens de visualização e de classificação. |
https://www.googleapis.com/auth/yt-analytics-monetary.readonly |
Visualizar os relatórios monetários do YouTube Analytics para seu conteúdo do YouTube. Esse escopo dá acesso a métricas de atividade do usuário e a métricas estimadas de receita e performance de anúncios. |
Etapa 2: recuperar o ID do job do relatório desejado
Chame o método jobs.list
para recuperar uma lista de jobs gerenciados pelo sistema. Defina o parâmetro includeSystemManaged
como true
.
A propriedade reportTypeId
em cada recurso Job
retornado identifica o tipo de relatório gerenciado pelo sistema associado a esse job. Seu aplicativo vai precisar do valor da propriedade id
do mesmo recurso na etapa a seguir.
O documento Relatórios lista os relatórios disponíveis, os IDs dos tipos de relatório e os campos que eles contêm. Também é possível usar o método reportTypes.list
para recuperar uma lista de tipos de relatórios compatíveis.
Etapa 3: extrair o URL de download do relatório
Chame o método jobs.reports.list
para recuperar uma lista de relatórios criados para o job. Na solicitação, defina o parâmetro jobId
como a ID do job do relatório que você quer recuperar.
É possível filtrar a lista de relatórios usando qualquer um ou todos os seguintes parâmetros:
-
Use o parâmetro createdAfter
para indicar que a API só deve retornar relatórios criados após um horário especificado. Esse parâmetro pode ser usado para garantir que a API retorne apenas relatórios que você ainda não processou.
-
Use o parâmetro startTimeBefore
para indicar que a resposta da API só deve conter relatórios se os dados mais antigos estiverem antes da data especificada. Enquanto o parâmetro createdAfter
se refere ao momento em que o relatório foi criado, essa data se refere aos dados no relatório.
-
Use o parâmetro startTimeAtOrAfter
para indicar que a resposta da API só deve conter relatórios se os dados mais antigos estiverem na data especificada ou depois dela. Assim como o parâmetro startTimeBefore
, esse valor corresponde aos dados do relatório, não ao momento em que ele foi criado.
A resposta da API contém uma lista de recursos Report
para esse job. Cada recurso se refere a um relatório que contém dados de um período exclusivo.
- As propriedades
startTime
e endTime
do recurso identificam o período que os dados do relatório abrangem.
- A propriedade
downloadUrl
do recurso identifica o URL de onde o relatório pode ser buscado.
- A propriedade
createTime
do recurso especifica a data e a hora em que o relatório foi gerado. O aplicativo precisa armazenar esse valor e usá-lo para determinar se os relatórios baixados anteriormente mudaram.
Etapa 4: faça o download do relatório
Envie uma solicitação HTTP GET para o downloadUrl
obtido na etapa 4 para recuperar o relatório.
Relatórios de processamento
Práticas recomendadas
Os aplicativos que usam a API YouTube Reporting precisam sempre seguir estas práticas:
-
Use a linha de cabeçalho de um relatório para determinar a ordem das colunas. Por exemplo, não suponha que visualizações será a primeira métrica retornada em um relatório só porque é a primeira métrica listada na descrição. Em vez disso, use a linha de cabeçalho do relatório para determinar qual coluna contém esses dados.
-
Mantenha um registro dos relatórios baixados para evitar o processamento repetido do mesmo relatório. A lista a seguir sugere algumas maneiras de fazer isso.
-
Ao chamar o método reports.list
, use o parâmetro createdAfter para recuperar apenas os relatórios criados após uma determinada data. Omita o parâmetro createdAfter
na primeira vez que você recuperar relatórios.
Sempre que você recuperar e processar relatórios, armazene o carimbo de data/hora correspondente à data e hora em que o mais recente desses relatórios foi criado. Em seguida, atualize o valor do parâmetro createdAfter
em cada chamada sucessiva ao método reports.list
para garantir que você só recupere relatórios novos, incluindo aqueles com dados preenchidos, sempre que chamar a API.
Como medida de segurança, antes de recuperar um relatório, verifique se o ID dele já não está listado no seu banco de dados.
-
Armazene o ID de cada relatório que você baixou e processou. Também é possível armazenar outras informações, como a data e a hora em que cada relatório foi gerado ou o startTime
e o endTime
do relatório, que juntos identificam o período em que o relatório contém dados. Para relatórios que recuperam dados em massa do YouTube Analytics, cada job provavelmente terá muitos relatórios, já que cada um deles contém dados de um período de 24 horas. Os jobs gerenciados pelo sistema que abrangem períodos mais longos terão menos relatórios.
Use o ID para identificar os relatórios que ainda precisam ser baixados e importados. No entanto, se dois novos relatórios tiverem os mesmos valores de propriedade startTime
e endTime
, importe apenas o relatório com o valor createTime
mais recente.
Características do relatório
Os relatórios da API são arquivos .csv
(valores separados por vírgula) versionados com as seguintes características:
-
Cada relatório contém dados de um período único que vai das 0h do horário do Pacífico na data de início até as 23h59 do horário do Pacífico na data de término.
-
Os dados do relatório não estão classificados.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-08-21 UTC.
[null,null,["Última atualização 2025-08-21 UTC."],[[["\u003cp\u003eYouTube's Reporting API provides access to system-managed ad revenue reports, which differ from Creator Studio reports in terms of fields and naming, yet contain similar data.\u003c/p\u003e\n"],["\u003cp\u003eRetrieving these reports involves four steps: getting authorization credentials, retrieving the job ID, getting the report's download URL, and downloading the report.\u003c/p\u003e\n"],["\u003cp\u003eThe API requires specific authorization scopes, either \u003ccode\u003ehttps://www.googleapis.com/auth/yt-analytics.readonly\u003c/code\u003e for general user activity metrics or \u003ccode\u003ehttps://www.googleapis.com/auth/yt-analytics-monetary.readonly\u003c/code\u003e for monetary and ad performance metrics.\u003c/p\u003e\n"],["\u003cp\u003eBest practices for using the API include using the header row to identify column ordering and keeping a record of downloaded reports to avoid reprocessing the same data, while also checking for updated reports.\u003c/p\u003e\n"],["\u003cp\u003eEach report is a \u003ccode\u003e.csv\u003c/code\u003e file containing data for a specific period, from 12:00 a.m. to 11:59 p.m. Pacific Time, and the data within the reports is not sorted.\u003c/p\u003e\n"]]],["YouTube provides system-managed ad revenue reports accessible via the Reporting API. To retrieve these reports, first, obtain authorization credentials using OAuth 2.0. Next, retrieve the job ID for the desired report type by calling `jobs.list` with `includeSystemManaged` set to `true`. Then, call `jobs.reports.list`, providing the job ID, to get the report's download URL, which may be filtered by creation or start times. Finally, use an HTTP GET request to download the report. Remember to store downloaded report details to avoid reprocessing.\n"],null,["# YouTube Reporting API - Get Bulk Data Reports\n\nYouTube automatically generates a set of system-managed ad revenue reports for content owners that have access to the corresponding reports in [Creator Studio](http://studio.youtube.com/). These reports are designed to provide programmatic access to data that is also available in manually downloadable reports accessible in the [Reports menu](https://support.google.com/youtube/answer/7648605) of the YouTube Creator Studio.\n\n**Note:** The API provides access to a different set of reports than Creator Studio, though the reports contain similar data. API reports might have different fields and also use different field names than Creator Studio reports.\n\nSince YouTube automatically generates system-managed reports, the process for retrieving these reports is different than for the YouTube Analytics bulk data reports available via the API.\n\nRetrieving reports\n------------------\n\nThe following steps explain how to retrieve system-managed reports via the API.\n\n### Step 1: Retrieve authorization credentials\n\nAll YouTube Reporting API requests must be authorized. The [Authorization guide](/youtube/reporting/guides/authorization) explains how to use the OAuth 2.0 protocol to retrieve authorization tokens.\n\nYouTube Reporting API requests use the following authorization scopes:\n\n| Scopes ||\n|----------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| https://www.googleapis.com/auth/yt-analytics.readonly | View YouTube Analytics reports for your YouTube content. This scope provides access to user activity metrics, like view counts and rating counts. |\n| https://www.googleapis.com/auth/yt-analytics-monetary.readonly | View YouTube Analytics monetary reports for your YouTube content. This scope provides access to user activity metrics and to estimated revenue and ad performance metrics. |\n\n### Step 2: Retrieve the job ID for the desired report\n\nCall the `jobs.list` method to retrieve a list of system-managed jobs. Set the [includeSystemManaged](/youtube/reporting/v1/reference/rest/v1/jobs/list#includeSystemManaged) parameter to `true`.\n\nThe [reportTypeId](/youtube/reporting/v1/reference/rest/v1/jobs#reportTypeId) property in each returned `Job` resource identifies the type of system-managed report associated with that job. Your application needs the [id](/youtube/reporting/v1/reference/rest/v1/jobs#id) property value from the same resource in the following step.\n\nThe [Reports](/youtube/reporting/v1/reports/system_managed/reports) document lists available reports, their report type IDs, and the fields they contain. You can also use the [reportTypes.list](/youtube/reporting/v1/reference/rest/v1/reportTypes/list) method to retrieve a list of supported report types.\n\n### Step 3: Retrieve the report's download URL\n\nCall the `jobs.reports.list` method to retrieve a list of reports created for the job. In the request, set the [jobId](/youtube/reporting/v1/reference/rest/v1/jobs.reports/list#jobId) parameter to the job ID of the report that you want to retrieve.\n\nYou can filter the list of reports using any or all of the following parameters:\n\n- Use the [createdAfter](/youtube/reporting/v1/reference/rest/v1/jobs.reports/list#createdAfter) parameter to indicate that the API should only return reports created after a specified time. This parameter can be used to ensure that the API only returns reports that you have not already processed.\n\n- Use the [startTimeBefore](/youtube/reporting/v1/reference/rest/v1/jobs.reports/list#startTimeBefore) parameter to indicate that the API response should only contain reports if the earliest data in the report is before the specified date. Whereas the `createdAfter` parameter pertains to the time the report was created, this date pertains to the data in the report.\n\n- Use the [startTimeAtOrAfter](/youtube/reporting/v1/reference/rest/v1/jobs.reports/list#startTimeAtOrAfter) parameter to indicate that the API response should only contain reports if the earliest data in the report is on or after the specified date. Like the `startTimeBefore` parameter, this parameter value corresponds to the data in the report and not the time the report was created.\n\nThe API response contains a list of `Report` resources for that job. Each resource refers to a report that contains data for a unique period.\n\n- The resource's [startTime](/youtube/reporting/v1/reference/rest/v1/jobs.reports#startTime) and [endTime](/youtube/reporting/v1/reference/rest/v1/jobs.reports#endTime) properties identify the time period that the report's data covers.\n- The resource's [downloadUrl](/youtube/reporting/v1/reference/rest/v1/jobs.reports#downloadUrl) property identifies the URL from which the report can be fetched.\n- The resource's [createTime](/youtube/reporting/v1/reference/rest/v1/jobs.reports#createTime) property specifies the date and time when the report was generated. Your application should store this value and use it to determine whether previously downloaded reports have changed.\n\n### Step 4: Download the report\n\nSend an HTTP GET request to the `downloadUrl` obtained in step 4 to retrieve the report.\n\nProcessing reports\n------------------\n\n### Best practices\n\nApplications that use the YouTube Reporting API should *always* follow these practices:\n\n- Use a report's header row to determine the ordering of the report's columns. For example, do not assume that [views](/youtube/reporting/v1/reports/metrics#views) will be the first metric returned in a report just because it is the first metric listed in a report description. Instead, use the report's header row to determine which column contains that data.\n\n- Keep a record of the reports you have downloaded to avoid repeatedly processing the same report. The following list suggests a couple of ways to do that.\n\n - When calling the [reports.list](/youtube/reporting/v1/reference/rest/v1/jobs.reports/list) method, use the [createdAfter](/youtube/reporting/v1/reference/rest/v1/jobs.reports/list#createdAfter) parameter to only retrieve reports created after a certain date. (Omit the `createdAfter` parameter the first time you retrieve reports.)\n\n Each time you retrieve and successfully process reports, store the timestamp corresponding to the [date and time](/youtube/reporting/v1/reference/rest/v1/jobs.reports#createTime) when the newest of those reports was created. Then, update the `createdAfter` parameter value on each successive call to the [reports.list](/youtube/reporting/v1/reference/rest/v1/jobs.reports/list) method to ensure that you are only retrieving new reports, including new reports with backfilled data, each time you call the API.\n\n As a safeguard, before retrieving a report, also check to ensure that the report's [ID](/youtube/reporting/v1/reference/rest/v1/jobs.reports#id) is not already listed in your database.\n - Store the [ID](/youtube/reporting/v1/reference/rest/v1/jobs.reports#id) for each report that you have downloaded and processed. You can also store additional information like the [date and time](/youtube/reporting/v1/reference/rest/v1/jobs.reports#createTime) when each report was generated or the report's [startTime](/youtube/reporting/v1/reference/rest/v1/jobs.reports#startTime) and [endTime](/youtube/reporting/v1/reference/rest/v1/jobs.reports#endTime), which together identify the period for which the report contains data. For reports that retrieve bulk data for YouTube Analytics, each job will likely have many reports since each report contains data for a 24-hour period. System-managed jobs that cover longer time periods will have fewer reports.\n\n Use the report ID to identify reports that you still need to download and import. However, if two new reports have the same [startTime](/youtube/reporting/v1/reference/rest/v1/jobs.reports#startTime) and [endTime](/youtube/reporting/v1/reference/rest/v1/jobs.reports#endTime) property values, only import the report with the newer [createTime](/youtube/reporting/v1/reference/rest/v1/jobs.reports#createTime) value.\n\n### Report characteristics\n\nAPI reports are versioned `.csv` (comma-separated values) files that have the following characteristics:\n\n- Each report contains data for a unique period lasting from 12:00 a.m. Pacific time on the report's start date through 11:59 p.m. Pacific time on the report's end date.\n\n- Report data is not sorted."]]