YouTube Subs vs Views - Is Anyone Actually Watching? avatar

YouTube Subs vs Views - Is Anyone Actually Watching?

Pricing

from $1.40 / 1,000 channel answereds

Go to Apify Store
YouTube Subs vs Views - Is Anyone Actually Watching?

YouTube Subs vs Views - Is Anyone Actually Watching?

Audit YouTube channel subscriber counts against actual view rates without login, using channelId identifier.

Pricing

from $1.40 / 1,000 channel answereds

Rating

0.0

(0)

Developer

Tarek Etman

Tarek Etman

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

reapX - the record of what changed

YouTube Subscriber Audit & View Ratio API

"Half a million subscribers and 2,000 views a video. What am I actually buying here?"

Subscriber numbers on their own can mask an inactive audience. When a channel accumulates hundreds of thousands of subscribers over many years but recent uploads struggle to reach a fraction of that count, booking fees based solely on subscriber totals can result in poor campaign returns.

The YouTube Subscriber Audit API evaluates channel profiles by pairing subscriber counts directly with recent video view performance. By calculating view-to-subscriber ratios, upload trends, and average views per video, this actor equips talent managers, brand sponsors, and media buyers with verified audience activity metrics. Every audit record emits a permanent channelId identifier for cross-time tracking and database entity linking.

Maintained by reapx. Citation guaranteed across entity records.


⬇️ Input

The actor accepts a JSON configuration object specifying the target YouTube channel handle, URL, or channel ID.

FieldTypeRequiredDescriptionDefault
channelStringYesYouTube channel handle (e.g. @mkbhd), full URL, or channel ID (UC...)."@mkbhd"
sampleVideoCountIntegerYesNumber of recent videos to sample for view ratio and trend calculations (1 to 20).10
proxyConfigurationObjectNoProxy settings for request routing. By default uses Apify Proxy.{"useApifyProxy": true}

Input Example

{
"channel": "@mkbhd",
"sampleVideoCount": 10
}

⬆️ Output

Audit items are pushed to the default dataset with computed view ratios and permanent channel identifiers.

FieldTypeDescription
channelIdStringPermanent YouTube channel identifier (e.g. "UCWv7vMbMWH4-V0ZXbxDUkFA"). Stable per-row key.
channelHandleStringAudited YouTube handle (e.g. "@mkbhd").
channelTitleStringDisplay title of the YouTube channel.
subscriberCountIntegerNumeric total subscriber count.
subscribersTextStringFormatted subscriber count string (e.g. "21.1M subscribers").
videoCountIntegerTotal numeric video count.
videoCountTextStringFormatted total video count string (e.g. "1.8K videos").
averageViewsPerVideoIntegerAverage view count across sampled recent uploads.
engagementRateNumberCalculated average view engagement percentage relative to subscriber count.
viewsPerVideoTrendStringTrajectory trend of recent video views (e.g. "steady", "growing", "declining").
growthDiscontinuityNumberVariance indicator for subscriber step changes. Returns null on first run.
followerGrowth30dNumber30-day subscriber growth. Returns null on first run until historical series accrues.
avatarUrlStringProfile avatar image URL.
descriptionStringChannel description biography text.
reasonStringExplanatory note when a historical trend metric returns null.
urlStringCanonical YouTube channel URL (https://www.youtube.com/@mkbhd).
scrapedAtStringISO 8601 timestamp of data collection.

Sample Output Item

{
"channelId": "UCWv7vMbMWH4-V0ZXbxDUkFA",
"channelHandle": "@mkbhd",
"channelTitle": "Marques Brownlee",
"subscriberCount": 21100000,
"subscribersText": "21.1M subscribers",
"videoCount": 1814,
"videoCountText": "1.8K videos",
"averageViewsPerVideo": 1450000,
"engagementRate": 6.87,
"viewsPerVideoTrend": "steady",
"growthDiscontinuity": null,
"followerGrowth30d": null,
"avatarUrl": "https://yt3.googleusercontent.com/ytc/AIdro_k...",
"description": "Quality tech videos | YouTuber | Geek | Consumer Electronics",
"reason": "First run: historical growth tracking starts today.",
"url": "https://www.youtube.com/@mkbhd",
"scrapedAt": "2026-08-05T10:30:00.000Z"
}

How it works

  1. Profile Data Extraction: Fetches the channel homepage and parses native data components to extract verified subscriber totals, video counts, and profile metadata.
  2. Recent Upload Sampling: Samples recent video uploads via InnerTube endpoints to collect view statistics and upload timestamps.
  3. Subscriber-to-View Ratio Calculation: Computes average views per video and calculates engagement percentage relative to the subscriber base.
  4. Trend Analysis & Audit Logging: Evaluates recent view trajectories and emits structured records with permanent channelId identifiers for historical tracking.

❓ FAQ

How does this audit detect inactive subscriber bases?

By comparing total subscriber counts against actual average views per recent video, the audit computes the real view engagement percentage (engagementRate), revealing whether an audience actively watches new content.

Why does followerGrowth30d return null on the first run?

Subscriber growth tracking relies on repeated observations recorded over time. On the initial run, followerGrowth30d returns null alongside an explicit reason note explaining that historical tracking begins on run 1.

Is a proxy required for execution?

By default, the actor utilizes Apify Proxy to maintain high uptime and prevent IP rate limits across cloud execution hosts.


💬 Your feedback

For custom audit metrics, bulk roster integrations, or dataset inquiries, contact reapx at reapxdev@proton.me.


Unofficial - not affiliated with YouTube or Google. Collects structured channel audit data. Contact reapxdev@proton.me.