YouTube Reporting
Connect YouTube Reporting to see how your channel and videos perform, where viewers come from, who they are, and what they earn.
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.
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.
API Library
Enable the APIs this project is allowed to call.
| API | Provider | Status |
|---|---|---|
| YouTube Analytics APIRetrieve channel and video metrics | Google Enterprise API | Enabled |
| YouTube Data API v3Channels, playlists and videos | Google Enterprise API | Enabled |
| YouTube Reporting APIBulk daily report jobs | Google Enterprise API | Not enabled |
Repeat until all three rows read Enabled.
Set the consent screen branding
Open Google Auth Platform and click Branding. Enter an App name and a User support email, then click Save.
Publish the app
Click Audience in the left nav. If Publishing status reads Testing, click Publish app and confirm.
Audience
Control who can grant your app access to their Google data.
- User type
- External
- Publishing status
- Testing
- Test users
- 1 of 100
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.
Clients
OAuth clients your app uses to call Google endpoints.
| Name | Type | Client ID | Created |
|---|---|---|---|
| Internal dashboardWeb application | Web application | 8129****.apps.googleusercontent.com | Mar 4, 2026 |
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.
Clients
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:
| Field | What to enter |
|---|---|
| OAuth Client IDtext | Google 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 Secretsecret | Shown 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. |
https://app.popmcp.com/api/providers/google/callbackPopMCP 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.
| Scope | Why PopMCP asks for it |
|---|---|
| https://www.googleapis.com/auth/yt-analytics-monetary.readonly | Reads the revenue and ad-performance columns of the reporting jobs, and covers the plain analytics data too. |
| https://www.googleapis.com/auth/youtube.readonly | Lets 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.