Integrations

YouTube Reporting

Connect YouTube Reporting to see how your channel and videos perform, where viewers come from, who they are, and what they earn.

OAuth authorizationApproval, Google states 3-5 business days…Ads & SocialYouTube Reporting API docs

You paste the OAuth Client ID and Client Secret of a Web application client created in your own Google Cloud project. That project needs the YouTube Analytics API, YouTube Reporting API and YouTube Data API v3 enabled, and the consent screen published.

OAuth scope verification before this connector works

Google must verify your OAuth consent screen for the sensitive YouTube reporting scopes (yt-analytics.readonly and, for revenue reports, yt-analytics-monetary.readonly) before the app can be used by anyone outside your own test-user list; system-managed revenue reports additionally require YouTube Partner Program content-owner status.

Typical wait
Google states 3-5 business days for sensitive-scope verification; 2-6 weeks is commonly reported when the review team asks follow-up questions.
Cost
Free.
Blocked until approved
Distribution, not access. Unverified apps sit in Testing status with a 100 hand-listed test-user cap and refresh tokens that expire after 7 days, which breaks any unattended nightly report download. Publishing unverified keeps the warning interstitial and the user cap. Separately, the system-managed ad-revenue and YouTube Premium revenue reports are only generated for content owners in the YouTube Partner Program, and no API approval unlocks them for an ordinary channel.
Works meanwhile
Channel-level bulk reporting works immediately. Enable the YouTube Reporting API, create an OAuth client, add yourself as a test user, create a reporting job, and the first daily report becomes downloadable within about 48 hours. Backfill of up to 30 days of historical data is issued automatically once the job exists.

Where to apply: Google Cloud Console > Google Auth Platform > Data Access and Branding > Publish app > Prepare for verification. Content owner access is a separate matter: it comes from a YouTube Partner Program / CMS content owner account, not from a form on the developer console.

  • Reporting jobs only start producing data after they are created. There is no way to pull arbitrary historical data beyond the automatic ~30-day backfill, so create jobs before you need the numbers.
  • The 7-day refresh token expiry in Testing status silently kills scheduled downloads a week after setup.
  • Requesting yt-analytics-monetary.readonly without showing revenue usage in the demo video is a frequent rejection cause.
  • Report URLs must be fetched with the OAuth token attached; naively following the download URL without authorization returns an error that looks like a permissions denial.
  • Do not confuse the Reporting API (bulk CSV jobs) with the Analytics API (targeted queries). They share scopes but the Reporting API is the one for high-volume exports.
Setup time
12 min
Auth
OAuth authorization
API base URL
https://youtubereporting.googleapis.com/v1
Rate limits
Reports are generated once per day per job, so there is nothing to poll more frequently. The per-project request quota is shown on the API's Quotas & System Limits page under APIs & Services.

Before you begin

  • A Google account that owns or manages the YouTube channel you want to report on
  • A Google Cloud project you can edit, with the Owner or Editor role
  • Billing is not required, but the project must allow enabling APIs
  • The OAuth app must be published under Audience. Apps left in Testing get refresh tokens that Google expires after 7 days

Get your credentials

Pick or create the Google Cloud project

Open the Google Cloud Console and choose a project from the project chip in the top bar, or click New project. Keep every step below inside that one project.

Open this screen →

Enable all three YouTube APIs

Open APIs & Services and click Library. Search for YouTube Analytics API and click Enable, then repeat for YouTube Reporting API and YouTube Data API v3.

Open this screen →

console.cloud.google.com/apis/library
Search (/) for resources, docs, products, and morepopmcp-yt-reporting
APIs & Services / Library

API Library

Enable the APIs this project is allowed to call.

AllEnabledNot enabled
Search for APIs & Services
APIProviderStatus
YouTube Analytics APIRetrieve channel and video metricsGoogle Enterprise APIEnabled
YouTube Data API v3Channels, playlists and videosGoogle Enterprise APIEnabled
YouTube Reporting APIBulk daily report jobsGoogle Enterprise APINot enabled
YouTube Reporting API
Project
popmcp-yt-reporting
Enable

Repeat until all three rows read Enabled.

Open Google Auth Platform and click Branding. Enter an App name and a User support email, then click Save.

Open this screen →

Publish the app

Click Audience in the left nav. If Publishing status reads Testing, click Publish app and confirm.

Open this screen →

console.cloud.google.com/auth/audience
Search (/) for resources, docs, products, and morepopmcp-yt-reporting
Google Auth Platform / Audience

Audience

Control who can grant your app access to their Google data.

Testing apps issue refresh tokens that expire after 7 days.
Publishing status
User type
External
Publishing status
Testing
Test users
1 of 100
Publish appAdd users

After confirming, the status reads In production.

Create a Web application OAuth client

Click Clients, then Create client. Set Application type to Web application, name it PopMCP, paste the callback URL from the PopMCP connect form into Authorized redirect URIs, and click Create.

Open this screen →

console.cloud.google.com/auth/clients
Search (/) for resources, docs, products, and morepopmcp-yt-reporting
Google Auth Platform / Clients

Clients

OAuth clients your app uses to call Google endpoints.

Create client
NameTypeClient IDCreated
Internal dashboardWeb applicationWeb application8129****.apps.googleusercontent.comMar 4, 2026
Create OAuth client ID
Application type
Web application
Name
PopMCP
Authorized redirect URIs
https://app.popmcp.io/oauth/callback
CancelCreate

Authorized JavaScript origins can stay empty.

Copy the Client ID and secret into PopMCP

Copy Client ID and Client secret from the OAuth client created dialog into PopMCP's OAuth Client ID and OAuth Client Secret fields. If the dialog is already closed, open the client and click Add secret.

Open this screen →

console.cloud.google.com/auth/clients
Search (/) for resources, docs, products, and morepopmcp-yt-reporting
Google Auth Platform / Clients

Clients

Google stores a hash of the secret and will not show it again.
OAuth client created
Client ID
8129****-a4b2.apps.googleusercontent.com
Client secret
GOCSPX-****9f1c
Download JSONOK

Copy both values before dismissing the dialog.

Connect in PopMCP

Open your workspace, choose YouTube Reporting in the marketplace, and fill in the connect dialog:

FieldWhat to enter
OAuth Client IDtextGoogle Cloud Console → Google Auth Platform → Clients → Create client → Web application, with the callback URL above under Authorized redirect URIs. In the same project, enable all three APIs under APIs & Services → Library: YouTube Analytics API, YouTube Reporting API, and YouTube Data API v3. If any is missing, that part of the connector returns "has not been used in project" errors.
OAuth Client SecretsecretShown once, in the popup right after you create the client. Google hashes it and never shows it again. If you closed that popup, open the client and add a new secret. Stored encrypted here, used server-side only. IMPORTANT: in Google Auth Platform → Audience, if the status says "Testing", click "Publish app" first. Testing-mode apps get a refresh token that Google expires after exactly 7 days, so the connection would work for a week and then stop. Publishing does not require Google's review; it only adds a one-time "Google hasn't verified this app" screen, where you click Advanced and continue.Encrypted with AES-256-GCM on save and never shown again.
Callback URL
https://app.popmcp.com/api/providers/google/callback

PopMCP verifies the credential against YouTube Reporting immediately. On success the connection flips to Verified and its MCP tools are provisioned.

Permissions PopMCP requests

These are the scopes sent to YouTube Reporting at authorization time.

ScopeWhy PopMCP asks for it
https://www.googleapis.com/auth/yt-analytics-monetary.readonlyReads the revenue and ad-performance columns of the reporting jobs, and covers the plain analytics data too.
https://www.googleapis.com/auth/youtube.readonlyLets PopMCP list your channels so you can pick which one the reports belong to.

Verify it worked

PopMCP sends you through the Google consent screen, you pick the Google account that manages the channel, and the connector shows Connected with your channel name. Asking for a list of reporting jobs returns data instead of a 403.

Troubleshooting

"YouTube Reporting API has not been used in project ... before or it is disabled"

Why: Only some of the three APIs are enabled, or they were enabled in a different project than the one the OAuth client belongs to.

Fix: Open APIs & Services, then Enabled APIs & services, in the same project and confirm YouTube Analytics API, YouTube Reporting API and YouTube Data API v3 are all listed.

The connection works for a week then breaks with invalid_grant

Why: The OAuth app was left in Testing. Google expires refresh tokens issued by Testing apps after exactly 7 days.

Fix: Open Google Auth Platform, then Audience, click Publish app, and reconnect the connector in PopMCP to mint a fresh token. Publishing needs no Google review. It only adds a one-time "Google hasn't verified this app" screen where you click Advanced and continue.

redirect_uri_mismatch on the consent screen

Why: The callback URL on the OAuth client does not exactly match the one PopMCP shows.

Fix: Copy the callback URL from the PopMCP connect form character for character into Authorized redirect URIs. No trailing slash, https only.

403 insufficientPermissions after connecting

Why: You authorised with a Google account that is not an owner or manager of the channel.

Fix: Disconnect, reconnect, and choose the Google account that owns the channel or the Brand Account.

Reports are empty for today

Why: Reporting API reports are generated once a day, and a new job's first report appears about two days later.

Fix: Wait for the next daily generation, or use the YouTube Analytics connector for on-demand queries.

Reference

On this page