Track public YouTube subscriber counts, recent uploads, and Shorts without an API key

Collect structured public YouTube channel metadata for competitor tracking and content research: subscriber text when public, lifetime view totals when exposed, channel descriptions, recent long-form uploads, and optional Shorts. This Actor crawls public channel surfaces. It is not a caption or transcript extractor — video captions belong on YouTube Transcript Scraper.

Open YouTube Channel Analytics Scraper on Apify

Channel metrics and uploads, not captions

Use this page when the job is public channel health: publishing cadence, upload mix, Shorts usage, and outbound about-page links. Use YouTube Transcript Scraper when the job is public YouTube caption tracks as timed text, SRT, VTT, or plain text (HTTP-first, no browser).

This Actor YouTube Transcript Scraper
Intent Public channel metrics, recent uploads, and Shorts Bulk public YouTube captions for pipelines, RAG, and subtitle export
Primary input Required channelUrls (channel URLs or bare @handles) videoUrls, videoIds, playlistUrls, and/or channelUrls
Channel URLs mean Resolve public channel surfaces, uploads, and optional Shorts Expand visible video IDs, then fetch public caption tracks
What it reads Public channel, Videos, Shorts, About, and watch pages Public YouTube caption tracks (HTTP-first, no browser)
Primary output Subscriber/view text, recent upload metadata, cadence hints, availability warnings One row per video: metadata, full text, timed segments, SRT/VTT/text
Transcripts / captions No. Not documented and not returned Yes — that is the documented job
Channel subscriber / cadence metrics Yes, when YouTube exposes them publicly No. Captions only

This Actor does not return transcripts, captions, subtitles, fullText, timed segments, SRT, VTT, or speech-to-text. It also does not provide private YouTube Studio analytics.

Use cases

The published README also positions the Actor for content strategists, SEO professionals, and digital marketers who want to skip browsing individual YouTube pages to check publishing frequency. You can schedule it to pull fresh public subscriber counts, lifetime views, channel descriptions, and recent long-form uploads or Shorts when YouTube exposes them. Market research and competitor performance reviews get structured public channel data, outbound about-page links, follower-growth snapshots, and recent upload metadata for dashboards.

How is YouTube Channel Analytics Scraper different from YouTube Transcript Scraper?

This Actor reads public YouTube channel pages. Required input is channelUrls (channel URLs or bare @handles). It returns channel-level public metrics, recent long-form uploads from the Videos tab, and optional Shorts from the Shorts tab. YouTube Transcript Scraper extracts public caption tracks. Its live inputs are videoUrls, videoIds, playlistUrls, and/or channelUrls. It is HTTP-first, does not use a browser, and returns one row per video with full text, timed segments, and formatted SRT, VTT, or plain text. Both Actors can accept channel URLs, but this Actor does not expand channels into caption rows and does not return transcripts. Use this page for competitor cadence and upload mix. Use YouTube Transcript Scraper when the job is video captions.

Do I need a YouTube Data API key or OAuth?

No. The published README states the Actor collects public metrics without OAuth tokens or YouTube Data API keys. It crawls public channel surfaces: @handle, /channel/, /user/, /c/ URLs, and bare @handles.

What input is required?

channelUrls is required. The published schema accepts YouTube channel URLs or bare @handles. Other published fields:

Field Type Default Notes
channelUrls string[] required YouTube channel URLs or bare @handles. Schema prefill is https://www.youtube.com/@Google, @YouTubeCreators.
videoLimit integer 8 Recent items per section (uploads and, when enabled, Shorts). OpenAPI: 1–25.
includeShorts boolean true Also resolve public Shorts from the channel Shorts tab.
timeoutMs integer 20000 HTTP timeout per public page request (ms). OpenAPI: 5000–60000.
delivery string dataset dataset or webhook
webhookUrl string POST target when delivery is webhook
dryRun boolean false Run without saving rows to the dataset (README: skip dataset/webhook delivery)
maxChargeUsd number 1 Safety cap for this run (minimum 0). Billable rows beyond the cap are returned as no-charge limit_reached summaries.

The schema sets additionalProperties to false. Use channelUrls, videoLimit, and includeShorts. README examples that use channels, includeUploadCadence, or includeRecentVideos are not live input fields.

Published Store Quickstart:

{
  "channelUrls": [
    "https://www.youtube.com/@Google",
    "@YouTubeCreators"
  ],
  "dryRun": false,
  "maxChargeUsd": 1
}

Published Store input-object example (includes schema defaults):

{
  "channelUrls": [
    "https://www.youtube.com/@Google",
    "@YouTubeCreators"
  ],
  "videoLimit": 8,
  "includeShorts": true,
  "timeoutMs": 20000,
  "delivery": "dataset",
  "dryRun": false,
  "maxChargeUsd": 1
}

Start with 1–3 channel URLs or @handles and keep videoLimit at 8 or below for the first run. Leave includeShorts on if you care about creator cadence; turn it off when long-form uploads are enough. Use dataset delivery first so you can inspect channel-level warnings and resolved content counts. After the first useful run, the README points to a recurring cadence-watch template, then a webhook handoff template for new-upload alerts.

Run YouTube Channel Analytics Scraper on Apify

What does a result contain?

The published README sample is a meta object plus channels[]. There is no separate published dataset or output JSON schema on the Store page.

Published README sample:

{
  "meta": {
    "generatedAt": "2025-01-01T00:00:00.000Z",
    "implementationStatus": "live",
    "totalSources": 1,
    "totals": {
      "totalResolvedChannels": 1,
      "totalResolvedUploads": 8,
      "totalResolvedShorts": 4,
      "totalResolvedContent": 12,
      "warningCount": 1
    },
    "limits": {
      "recentItemsPerSection": 8,
      "includeShorts": true,
      "timeoutMs": 20000
    },
    "notes": ["..."]
  },
  "channels": [
    {
      "inputUrl": "https://www.youtube.com/@Google",
      "status": "ok",
      "channel": {
        "channelId": "UC...",
        "title": "Google",
        "handle": "@Google",
        "canonicalUrl": "https://www.youtube.com/@Google",
        "subscriberCountText": "14.1M subscribers",
        "totalViewCountText": "6,332,598,834 views"
      },
      "recentUploads": [{ "videoId": "...", "title": "...", "viewCountText": "...", "durationText": "...", "keywords": ["..."] }],
      "recentShorts": [{ "videoId": "...", "isShort": true }],
      "rollups": {
        "totalResolvedVideos": 12,
        "recentPostingCadenceHint": "Roughly weekly posting inferred from recent public labels."
      },
      "availability": {
        "videosTab": "ok",
        "shortsTab": "ok",
        "aboutTab": "ok"
      },
      "warnings": []
    }
  ]
}

That sample is the published README illustration, not a live coverage guarantee. README “What it does” also names numeric subscriber count when public, avatar/banner, description/about fields, about-page links, thumbnail, and publish/upload dates when public. Status values are ok (all requested public surfaces resolved), partial (some surfaces or enrichments unavailable, but useful data collected), missing (YouTube returned a missing page), blocked (challenge or block page), invalid (input was not a supported channel URL or handle), and error (no usable public data).

Can it return YouTube Studio analytics or hidden subscriber counts?

No. Because the Actor uses public pages only, it cannot provide private YouTube Studio analytics such as watch time, revenue, CTR, impressions, audience demographics, traffic sources, or hidden subscriber counts. Subscriber and view figures exist when YouTube exposes them. Posting cadence is a hint inferred from recent public labels, not official Studio analytics.

How is YouTube Channel Analytics Scraper priced?

Billing is pay per event. The published Store card is from $8.00 / 1,000 results. Published events are Actor Start at $0.001 (charged when the Actor starts; number of events depends on Actor memory, one event per GB, minimum one event) and result at $0.008 (single result in the default dataset). You are not charged for Apify platform usage, only the fixed event price.

Total cost mainly follows how many channelUrls you analyze and how many recent items you resolve. Start with a short channelUrls list. Keep videoLimit low while testing. Disable includeShorts when you only need long-form uploads. Use dryRun: true before larger batches or webhook delivery. maxChargeUsd defaults to 1; billable rows beyond the cap are returned as no-charge limit_reached summaries. Check the Store pricing card for the current per-event rates.

From $8.00 per 1,000 results ($0.008 per default-dataset result; Actor Start $0.001)

See YouTube Channel Analytics Scraper pricing on Apify

Limits to keep in mind

Open YouTube Channel Analytics Scraper on Apify

Related pages