YouTube Shorts Analytics: Find Trending Shorts & Track Creator Performance
YouTube Shorts now gets over 70 billion daily views — but YouTube Studio barely shows you competitor Shorts data. If you want to find trending Shorts before they blow up, or benchmark your content against other creators, you need external data.
Here's how to use SociaVault's API to discover trending Shorts, track creator performance, and figure out what's actually working on the platform.
Find Trending YouTube Shorts
Pull the latest trending Shorts to see what's gaining traction:
const API_KEY = process.env.SOCIAVAULT_API_KEY;
const BASE = 'https://api.sociavault.com/v1/scrape';
const headers = { 'X-API-Key': API_KEY };
async function getTrendingShorts() {
const res = await fetch(
`${BASE}/youtube/shorts/trending`,
{ headers }
);
const shorts = (await res.json()).data || [];
console.log(`\nTrending YouTube Shorts: ${shorts.length} found\n`);
shorts.slice(0, 15).forEach((s, i) => {
const views = s.viewCount || s.views || 0;
const likes = s.likeCount || s.likes || 0;
const channel = s.channelTitle || s.channel || 'Unknown';
console.log(`${i + 1}. "${(s.title || '').substring(0, 60)}"`);
console.log(` Channel: ${channel}`);
console.log(` Views: ${Number(views).toLocaleString()}`);
console.log(` Likes: ${Number(likes).toLocaleString()}`);
console.log('');
});
return shorts;
}
getTrendingShorts();
Python version:
import os
import requests
API_KEY = os.environ["SOCIAVAULT_API_KEY"]
BASE = "https://api.sociavault.com/v1/scrape"
HEADERS = {"X-API-Key": API_KEY}
def get_trending_shorts():
r = requests.get(f"{BASE}/youtube/shorts/trending", headers=HEADERS)
shorts = r.json().get("data", [])
print(f"\nTrending YouTube Shorts: {len(shorts)} found\n")
for i, s in enumerate(shorts[:15]):
views = s.get("viewCount") or s.get("views", 0)
likes = s.get("likeCount") or s.get("likes", 0)
channel = s.get("channelTitle") or s.get("channel", "Unknown")
print(f"{i+1}. \"{s.get('title', '')[:60]}\"")
print(f" Channel: {channel}")
print(f" Views: {int(views):,} | Likes: {int(likes):,}")
print()
return shorts
get_trending_shorts()
Get a Creator's Shorts
Pull all Shorts from a specific channel:
async function getCreatorShorts(channelId) {
// Get channel profile
const profileRes = await fetch(
`${BASE}/youtube/channel?channelId=${encodeURIComponent(channelId)}`,
{ headers }
);
const profile = (await profileRes.json()).data;
console.log(`\nChannel: ${profile?.snippet?.title || channelId}`);
console.log(` Subscribers: ${Number(profile?.statistics?.subscriberCount || 0).toLocaleString()}`);
console.log(` Total views: ${Number(profile?.statistics?.viewCount || 0).toLocaleString()}`);
// Get Shorts
const shortsRes = await fetch(
`${BASE}/youtube/channel/shorts?channelId=${encodeURIComponent(channelId)}`,
{ headers }
);
const shorts = (await shortsRes.json()).data || [];
if (shorts.length === 0) {
console.log('No Shorts found for this channel');
return;
}
// Engagement metrics
const totalViews = shorts.reduce((s, v) => s + Number(v.viewCount || v.views || 0), 0);
const totalLikes = shorts.reduce((s, v) => s + Number(v.likeCount || v.likes || 0), 0);
const avgViews = Math.round(totalViews / shorts.length);
const avgLikes = Math.round(totalLikes / shorts.length);
const likeRate = totalViews > 0 ? ((totalLikes / totalViews) * 100).toFixed(2) : '0';
console.log(`\n Shorts Performance:`);
console.log(` Shorts analyzed: ${shorts.length}`);
console.log(` Total views: ${totalViews.toLocaleString()}`);
console.log(` Avg views per Short: ${avgViews.toLocaleString()}`);
console.log(` Avg likes per Short: ${avgLikes.toLocaleString()}`);
console.log(` Like rate: ${likeRate}%`);
// Top 5 Shorts
const sorted = [...shorts].sort(
(a, b) => Number(b.viewCount || b.views || 0) - Number(a.viewCount || a.views || 0)
);
console.log(`\n Top 5 Shorts:`);
sorted.slice(0, 5).forEach((s, i) => {
console.log(` ${i + 1}. "${(s.title || '').substring(0, 50)}" — ${Number(s.viewCount || s.views || 0).toLocaleString()} views`);
});
return { profile, shorts, avgViews, avgLikes };
}
getCreatorShorts('UCX6OQ3DkcsbYNE6H8uQQuVA'); // MrBeast
Shorts vs Long-Form Comparison
Comparing how the same creator performs on Shorts vs regular videos is key for content strategy:
async function compareShortsVsLongForm(channelId) {
// Get regular videos
const videosRes = await fetch(
`${BASE}/youtube/channel/videos?channelId=${encodeURIComponent(channelId)}`,
{ headers }
);
const videos = (await videosRes.json()).data || [];
// Get Shorts
const shortsRes = await fetch(
`${BASE}/youtube/channel/shorts?channelId=${encodeURIComponent(channelId)}`,
{ headers }
);
const shorts = (await shortsRes.json()).data || [];
const calcAvg = (items, field) => {
if (items.length === 0) return 0;
const total = items.reduce((s, v) => s + Number(v[field] || v.views || 0), 0);
return Math.round(total / items.length);
};
const avgVideoViews = calcAvg(videos, 'viewCount');
const avgShortViews = calcAvg(shorts, 'viewCount');
const avgVideoLikes = calcAvg(videos, 'likeCount');
const avgShortLikes = calcAvg(shorts, 'likeCount');
const videoLikeRate = avgVideoViews > 0 ? ((avgVideoLikes / avgVideoViews) * 100).toFixed(2) : '0';
const shortLikeRate = avgShortViews > 0 ? ((avgShortLikes / avgShortViews) * 100).toFixed(2) : '0';
console.log('\nShorts vs Long-Form Comparison');
console.log('═'.repeat(50));
console.log(` Metric Long-Form Shorts`);
console.log(` ${'─'.repeat(46)}`);
console.log(` Count ${videos.length.toString().padEnd(16)}${shorts.length}`);
console.log(` Avg Views ${avgVideoViews.toLocaleString().padEnd(16)}${avgShortViews.toLocaleString()}`);
console.log(` Avg Likes ${avgVideoLikes.toLocaleString().padEnd(16)}${avgShortLikes.toLocaleString()}`);
console.log(` Like Rate ${videoLikeRate.padEnd(16)}${shortLikeRate}%`);
const viewRatio = avgVideoViews > 0 ? (avgShortViews / avgVideoViews).toFixed(2) : 'N/A';
console.log(`\n Shorts get ${viewRatio}x the views of long-form (per video)`);
return { videos, shorts, avgVideoViews, avgShortViews };
}
compareShortsVsLongForm('UCX6OQ3DkcsbYNE6H8uQQuVA');
Find Shorts Creators in Your Niche
Search for creators in a specific topic and analyze their Shorts performance:
async function findShortsCreators(keyword, minSubscribers = 10000) {
const res = await fetch(
`${BASE}/youtube/search?query=${encodeURIComponent(keyword + ' shorts')}&type=channel`,
{ headers }
);
const channels = (await res.json()).data || [];
const results = [];
for (const ch of channels.slice(0, 10)) {
const channelId = ch.channelId || ch.id;
if (!channelId) continue;
// Get channel details
const profileRes = await fetch(
`${BASE}/youtube/channel?channelId=${encodeURIComponent(channelId)}`,
{ headers }
);
const profile = (await profileRes.json()).data;
const subs = Number(profile?.statistics?.subscriberCount || 0);
if (subs < minSubscribers) continue;
// Get their Shorts
const shortsRes = await fetch(
`${BASE}/youtube/channel/shorts?channelId=${encodeURIComponent(channelId)}`,
{ headers }
);
const shorts = (await shortsRes.json()).data || [];
const avgViews = shorts.length > 0
? Math.round(shorts.reduce((s, v) => s + Number(v.viewCount || v.views || 0), 0) / shorts.length)
: 0;
results.push({
name: profile?.snippet?.title || channelId,
subscribers: subs,
shortsCount: shorts.length,
avgShortsViews: avgViews,
viewsPerSub: subs > 0 ? (avgViews / subs).toFixed(2) : '0'
});
await new Promise(r => setTimeout(r, 2000));
}
results.sort((a, b) => b.avgShortsViews - a.avgShortsViews);
console.log(`\nTop Shorts Creators for "${keyword}":`);
console.table(results.map(r => ({
Creator: r.name,
Subscribers: r.subscribers.toLocaleString(),
'Shorts': r.shortsCount,
'Avg Views': r.avgShortsViews.toLocaleString(),
'Views/Sub': r.viewsPerSub
})));
return results;
}
findShortsCreators('cooking recipes');
Shorts Trend Analysis
Monitor which topics are trending by analyzing trending Shorts content:
import os
import re
import requests
from collections import Counter
API_KEY = os.environ["SOCIAVAULT_API_KEY"]
BASE = "https://api.sociavault.com/v1/scrape"
HEADERS = {"X-API-Key": API_KEY}
def analyze_shorts_trends():
"""Analyze what topics and keywords are trending in Shorts"""
r = requests.get(f"{BASE}/youtube/shorts/trending", headers=HEADERS)
shorts = r.json().get("data", [])
# Extract keywords from titles
stop_words = {"the", "a", "an", "in", "on", "at", "to", "for", "of", "is", "it",
"and", "or", "but", "this", "that", "with", "you", "i", "my", "your"}
words = []
hashtags = []
for s in shorts:
title = (s.get("title") or "").lower()
# Extract words
title_words = re.findall(r"[a-z]+", title)
words.extend([w for w in title_words if w not in stop_words and len(w) > 2])
# Extract hashtags
tags = re.findall(r"#(\w+)", title)
hashtags.extend([t.lower() for t in tags])
print("\nTrending Keywords in YouTube Shorts:")
print("─" * 40)
for word, count in Counter(words).most_common(20):
print(f" {word.ljust(20)} {count} occurrences")
if hashtags:
print("\nTrending Hashtags:")
print("─" * 40)
for tag, count in Counter(hashtags).most_common(10):
print(f" #{tag.ljust(20)} {count}")
analyze_shorts_trends()
YouTube Shorts Benchmarks
| Metric | Below Average | Average | Good | Viral |
|---|---|---|---|---|
| Views (first 48h) | <1K | 1K-10K | 10K-100K | 1M+ |
| Like rate | <2% | 2-4% | 4-8% | 8%+ |
| Comment rate | <0.05% | 0.05-0.2% | 0.2-0.5% | 0.5%+ |
| Views per subscriber | <0.3x | 0.3-1x | 1-5x | 5x+ |
| Share rate | <0.01% | 0.01-0.05% | 0.05-0.2% | 0.2%+ |
The "Views per subscriber" ratio is the most useful metric. A Short that gets 5x the channel's subscribers is genuinely viral — the algorithm is pushing it well beyond the existing audience.
What Kind of Shorts Get the Most Views?
Based on our analysis across thousands of trending Shorts:
- Hook in first 2 seconds — Shorts with text overlays or questions in the first frame get 40% more retention
- 15-30 seconds sweet spot — Under 15 is too short for engagement, over 45 loses viewers
- Trending audio — Shorts using popular sounds get 3-5x more distribution
- End loops — Shorts where the ending flows into the beginning get replayed more
- Reply bait comments — Controversial or question-based captions drive comment velocity
Get Started
Sign up free — start tracking YouTube Shorts trends and creator performance today.
Related Reading
Found this helpful?
Share it with others who might benefit
Ready to Try SociaVault?
Start extracting social media data with our powerful API. No credit card required.