You have access to youtube-analytics-cli, a read-only CLI for the YouTube Data API v3 and YouTube Analytics API v2. Use it to fetch channel and video details, run analytics reports, and manage analytics groups.
# Check if the CLI is available
youtube-analytics-cli --help
# Get a channel's public data (API key sufficient)
youtube-analytics-cli channels UCxxxxxxxxxxxxxx
# Get your own channel (OAuth required)
youtube-analytics-cli channels
If the CLI is not installed, install it:
npm install -g youtube-analytics-cli
The CLI supports two authentication methods:
| Method | Use case | Commands |
|---|---|---|
| -------- | ---------- | ---------- |
| API key | Public data (channels, videos) | channels , videos |
| OAuth 2.0 | Private data + analytics | All commands (required for report, groups, group-items, channels without ID) |
Credentials are resolved in this order:
--credentials flag (per-command)YOUTUBE_API_KEY, YOUTUBE_CLIENT_ID, YOUTUBE_CLIENT_SECRET, YOUTUBE_REFRESH_TOKEN env vars~/.config/youtube-analytics-cli/credentials.json (auto-detected)The credentials JSON file supports these fields:
{
"api_key": "YOUR_API_KEY",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"refresh_token": "YOUR_REFRESH_TOKEN"
}
The file must contain at least api_key or client_id. OAuth commands require all three OAuth fields (client_id, client_secret, refresh_token).
Important: Service accounts do NOT work with YouTube APIs. You must use OAuth 2.0 with a refresh token. Required scopes:
https://www.googleapis.com/auth/youtube.readonlyhttps://www.googleapis.com/auth/yt-analytics.readonlyhttps://www.googleapis.com/auth/yt-analytics-monetary.readonly (for revenue metrics -- note: revenue metrics may only be available for content owner reports, not standard channel reports)Before running analytics commands, verify OAuth credentials by running youtube-analytics-cli channels (no ID). If it fails, ask the user to set up OAuth 2.0 credentials.
All commands output pretty-printed JSON by default. Use --format compact for single-line JSON.
Global options:
--format -- json (default, pretty-printed) or compact (single-line)--credentials -- path to credentials JSON fileErrors are written to stderr as JSON with an error field and a non-zero exit code.
Get channel details. Omit the channel ID to get the authenticated user's own channel (requires OAuth).
# Get a specific channel by ID (API key sufficient)
youtube-analytics-cli channels UCxxxxxxxxxxxxxx
# Get your own channel (OAuth required)
youtube-analytics-cli channels
# Request specific parts
youtube-analytics-cli channels UCxxxxxxxxxxxxxx --part snippet,statistics,brandingSettings
Options:
--part -- parts to include (default: snippet,statistics,contentDetails)When no channel ID is provided, the command uses mine=true which requires OAuth authentication.
Get video details by IDs. Accepts one or more comma-separated video IDs.
# Single video
youtube-analytics-cli videos dQw4w9WgXcQ
# Multiple videos
youtube-analytics-cli videos dQw4w9WgXcQ,jNQXAC9IVRw
# Request specific parts
youtube-analytics-cli videos dQw4w9WgXcQ --part snippet,statistics,contentDetails
Options:
--part -- parts to include (default: snippet,statistics,contentDetails)Run a YouTube Analytics report. Requires OAuth.
youtube-analytics-cli report \
--metrics <metrics> \
--start-date <YYYY-MM-DD> \
--end-date <YYYY-MM-DD> \
[--dimensions <dims>] \
[--filters <filters>] \
[--sort <sort>] \
[--max-results <n>] \
[--ids <ids>] \
[--currency <code>]
Required options:
--metrics -- metrics to retrieve (e.g. views,likes,subscribersGained)--start-date -- start date in YYYY-MM-DD format--end-date -- end date in YYYY-MM-DD formatOptional options:
--dimensions -- dimensions (e.g. day, video, country)--filters -- filters (e.g. video==VIDEO_ID;country==US)--sort -- sort order (e.g. -views for descending)--max-results -- max rows to return--ids -- channel or content owner (default: channel==MINE)--currency -- currency code (e.g. USD)Daily views and engagement for the last 30 days:
youtube-analytics-cli report \
--metrics views,likes,subscribersGained \
--start-date 2026-02-17 \
--end-date 2026-03-19 \
--dimensions day
Top videos by views:
youtube-analytics-cli report \
--metrics views,estimatedMinutesWatched,averageViewDuration \
--start-date 2026-01-01 \
--end-date 2026-03-19 \
--dimensions video \
--sort -views \
--max-results 10
Country breakdown:
youtube-analytics-cli report \
--metrics views,likes,estimatedMinutesWatched \
--start-date 2026-01-01 \
--end-date 2026-03-19 \
--dimensions country \
--sort -views \
--max-results 20
Country breakdown for a specific video:
youtube-analytics-cli report \
--metrics views,likes \
--start-date 2026-01-01 \
--end-date 2026-03-19 \
--dimensions country \
--filters video==dQw4w9WgXcQ
Traffic source breakdown:
youtube-analytics-cli report \
--metrics views,estimatedMinutesWatched \
--start-date 2026-01-01 \
--end-date 2026-03-19 \
--dimensions insightTrafficSourceType \
--sort -views
Device type breakdown:
youtube-analytics-cli report \
--metrics views,estimatedMinutesWatched \
--start-date 2026-01-01 \
--end-date 2026-03-19 \
--dimensions deviceType \
--sort -views
Subscriber changes by day:
youtube-analytics-cli report \
--metrics subscribersGained,subscribersLost \
--start-date 2026-02-17 \
--end-date 2026-03-19 \
--dimensions day
Revenue report (content owner reports only -- may not work with channel==MINE):
youtube-analytics-cli report \
--metrics estimatedRevenue,estimatedAdRevenue,grossRevenue \
--start-date 2026-01-01 \
--end-date 2026-03-19 \
--dimensions day \
--currency USD
List YouTube Analytics groups. Requires OAuth. Supports pagination via --next-page-token.
# List all your groups
youtube-analytics-cli groups
# Get a specific group by ID
youtube-analytics-cli groups --id GROUP_ID
# Paginate through results
youtube-analytics-cli groups --next-page-token TOKEN
Options:
--id -- group ID(s) to retrieve (comma-separated)--next-page-token -- pagination tokenWhen no --id is provided, the command uses mine=true to list the authenticated user's groups.
List items in a YouTube Analytics group. Requires OAuth. Supports pagination via --next-page-token.
# List items in a group
youtube-analytics-cli group-items GROUP_ID
# Paginate through results
youtube-analytics-cli group-items GROUP_ID --next-page-token TOKEN
Options:
--next-page-token -- pagination tokenTime: day, month
Content: video, playlist, channel (content owner reports only)
Geography: country, province, continent (filter-only), subContinent (filter-only)
Traffic source: insightTrafficSourceType, insightTrafficSourceDetail
Device: deviceType, operatingSystem
Playback: liveOrOnDemand, subscribedStatus, youtubeProduct
Demographics: ageGroup, gender
Sharing: sharingService
Annotations (deprecated since 2019): annotationType, annotationId
Cards: cardType, cardId
End screens: endScreenElementType, endScreenElementId
Views and engagement: views, likes, dislikes, comments, shares
Watch time: estimatedMinutesWatched, averageViewDuration, averageViewPercentage
Subscribers: subscribersGained, subscribersLost
Revenue (monetized channels): estimatedRevenue, estimatedAdRevenue, grossRevenue, estimatedRedPartnerRevenue, monetizedPlaybacks, adImpressions, cpm
Cards: cardImpressions, cardClicks, cardClickRate
Annotations (deprecated -- historical data only, annotations removed from YouTube in 2019): annotationImpressions, annotationClicks, annotationClickThroughRate, annotationClosableImpressions, annotationCloseRate
End screens: endScreenElementImpressions, endScreenElementClicks, endScreenElementClickRate
youtube-analytics-cli channels to get your channel's current stats--dimensions day and key metrics (views,likes,subscribersGained,estimatedMinutesWatched) for the last 30 dayscountry, insightTrafficSourceType, or deviceType--filters video==VIDEO_ID to isolate a single video--dimensions country to see geographic distribution--dimensions ageGroup,gender for demographics--dimensions subscribedStatus to compare subscriber vs non-subscriber engagement--dimensions video --sort -views --max-results 20--dimensions insightTrafficSourceTypeestimatedMinutesWatched across videos to identify engaging contentsubscribersGained to see which content drives subscriptionsclient_id, client_secret, and refresh_token. API key alone is not sufficient for analytics commands.--credentials, environment variables, or ~/.config/youtube-analytics-cli/credentials.json.共 1 个版本