ParseForge Scrapers

YouTube Channel Scraper - Stats and Video List

parseforge/youtube-channel-scraper

VideosSocial mediaLead generation

Scrape YouTube channels by URL, @handle or channel ID. Returns subscribers, total views, video count, join date, country, description, links and verification, plus the latest uploads with title, views, duration and publish date. No API key needed. Export to CSV, Excel, JSON or XML.

Run this scraper See the API call
Total users
12
Monthly active
3
Total runs
379
Bookmarked
0
Last modified
2 days ago

This scraper was last updated on .

What does the YouTube Channel Scraper - Stats and Video List return?

ParseForge

YouTube Channel Scraper - Stats and Video List

Scrape YouTube channels by URL, @handle or channel ID. Each channel comes back as one row with its subscriber count, total views, video count, join date, country, description, links and verification badge, plus a list of its latest uploads with title, views, duration and publish date. No login or API key. Export to CSV, JSON, Excel or XML.

The official YouTube Data API needs a Google Cloud project, an API key and a daily quota. This Actor reads the same public channel data that youtube.com shows, so there is nothing to register.

Who uses it What they get from it
Influencer marketers Subscriber counts, verification, country and business-email availability for a creator shortlist.
Content strategists The latest uploads of competitor channels, with views and publish dates, to see what is working now.
Analysts Total views, video counts and average views per video across many channels, tracked run after run.
Data journalists Channel metadata and upload history for stories on creators and platform trends.

What it does

  • ๐Ÿ“Š Channel stats: subscribers (subscribers, plus the text YouTube shows in subscriberCountText), total views, video count, average views per video, join date and country.
  • ๐Ÿชช Channel profile: name, @handle, channel ID, description, keywords, external links, avatar and banner images, RSS feed URL, verification badge, family-safe flag and whether a business email is available.
  • ๐Ÿ“น Latest videos: up to 100 recent uploads per channel in the videos list (30 by default), each with videoId, title, videoUrl, viewCount, viewCountText, publishedTimeText, publishedDate, durationSeconds, durationText and thumbnailUrl.
  • ๐Ÿ”— Any channel format: https://www.youtube.com/@MrBeast, @MrBeast, https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA, a bare UCX6OQ3DkcsbYNE6H8uQQuVA, and legacy /c/ and /user/ links. Two inputs that point to the same channel are returned and charged once.

Each row has 30 fields. Channels that fail (for example a handle that does not exist) come back as a row with an error message and are not charged.

Good to know about the numbers

  • Subscribers are rounded by YouTube. YouTube shows "518M subscribers" to everyone, so subscribers is 518,000,000. Nobody outside the channel can see the exact figure.
  • Total views and video count are exact, as shown on the channel's About panel.
  • Video views and dates: the newest uploads (about 15, from the channel RSS feed) get exact view counts and exact publish timestamps (publishedDateIsApproximate: false). Older uploads carry the rounded view count YouTube displays ("4.2 million views") and a date worked out from "3 months ago" (publishedDateIsApproximate: true).
  • The video list covers regular uploads (the channel's Videos tab), not Shorts or live streams.

Configure the run

Input What it does
startUrls Channel URLs, @handles or channel IDs, one per line.
maxItems Maximum number of channels in the run (one row per channel).
maxVideosPerChannel How many of the latest uploads to include per channel, 0 to 100. Default 30. Set 0 for channel stats only.
proxyConfiguration Apify datacenter proxy by default, which works for YouTube.

Example input:

{
  "startUrls": [
    "https://www.youtube.com/@MrBeast",
    "@mkbhd",
    "UCsXVk37bltHxD1rDPwtNM8Q"
  ],
  "maxVideosPerChannel": 30
}

Example row (shortened, with one of the 30 videos):

{
  "type": "channel",
  "channelName": "MrBeast",
  "handle": "@MrBeast",
  "channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA",
  "isVerified": true,
  "subscribers": 518000000,
  "subscriberCountText": "518M subscribers",
  "totalViews": 140853133713,
  "videoCount": 1003,
  "avgViewsPerVideo": 140431838,
  "country": "United States",
  "joinedDate": "2012-02-19",
  "channelUrl": "https://www.youtube.com/@MrBeast",
  "videosCollected": 30,
  "videos": [
    {
      "videoId": "v9QtM6qnG50",
      "title": "I Built A City To Save Kids From Illegal Labor",
      "videoUrl": "https://www.youtube.com/watch?v=v9QtM6qnG50",
      "viewCount": 65695011,
      "viewCountText": "65 million views",
      "publishedTimeText": "6 days ago",
      "publishedDate": "2026-09-19T16:00:01.000Z",
      "publishedDateIsApproximate": false,
      "durationSeconds": 1143,
      "durationText": "19:03"
    }
  ],
  "error": null
}

Free users

Free-plan runs are capped at 100 channels per run. Upgrade your Apify plan to remove the cap.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the YouTube Channel Scraper.
  3. Paste your channels into YouTube channels and click Start.
  4. Export the results as CSV, Excel, JSON or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to YouTube channel data through the Model Context Protocol. Add the Actor to Claude, Cursor or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/youtube-channel-scraper"

Then ask it in plain language to look up a list of channels.

Next step

Every row carries the channel's handle and the videoUrl and videoId of each video in videos, so the other ParseForge YouTube Actors can take it from here:

Troubleshooting

A channel came back with "Channel not found or unavailable".

The handle or ID does not exist, or the channel was removed or terminated. Open the link in a browser to check. Handles are the part after @ in the channel URL, which is not always the channel's display name.

videos is empty for a channel.

The channel has no regular uploads (only Shorts or live streams), or maxVideosPerChannel is 0.

Why does a video have publishedDateIsApproximate: true?

YouTube shows older uploads as "3 months ago" on the channel page. The date is worked out from that text. The newest uploads get their exact date from the channel RSS feed.

The run ended as FAILED.

That happens only when every channel in the run failed, so the problem is visible instead of hiding behind a green status. The dataset still holds one row per channel with the error message, and nothing was charged.

FAQ

Question Answer
Do I need a YouTube API key? No. The Actor reads public channel data, so no API key or OAuth is needed.
Which channel formats are supported? @handle, /@handle URLs, /channel/UC... URLs, bare UC... IDs, and legacy /c/ and /user/ URLs.
How many videos per channel? Up to 100 of the latest uploads, set with maxVideosPerChannel. For a channel's full history use YouTube Scraper.
Is the subscriber count exact? It is the figure YouTube displays, which YouTube rounds (for example 21.3M).
Do private or unlisted videos appear? No. Only public uploads on the channel's Videos tab.
Am I charged for channels that fail? No. Error rows are free, and a duplicate of a channel already in the run is skipped.
Can I export to Google Sheets? Yes, through Apify's Google Sheets integration, or download a CSV and import it.

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by YouTube (Google LLC). It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

What input does the YouTube Channel Scraper - Stats and Video List accept?

FieldTypeWhat it doesDefault
startUrls array Channel URLs, @handles or channel IDs, one per line. Accepted: https://www.youtube.com/@MrBeast, @MrBeast, https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA, UCX6OQ3DkcsbYNE6H8uQQuVA, and legacy /c/ and /user/ links. Each channel becomes one result row. ["https://www.youtube.com/@MrBeast","htt
maxItems integer How many channels to scrape in this run (one result row per channel). Free-plan runs are capped at 100. 10
maxVideosPerChannel integer How many of the latest uploads to include in each channel row (the videos list), up to 100. Set 0 to get channel stats only. The latest ~15 uploads get exact publish dates and view counts from the channel RSS feed; older ones carry YouTube rounded view counts and approximate dates. 30
proxyConfiguration object Proxy settings. The default Apify datacenter proxy works for YouTube; change it only if you see blocks. {"useApifyProxy":true}

How much does the YouTube Channel Scraper - Stats and Video List cost?

from $3.50 per 1,000 results

Charged forWhat it isPrice each
Result Item Charged once per result collected. $0.0035 to $0.00499

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the YouTube Channel Scraper - Stats and Video List API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~youtube-channel-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [
      "https://www.youtube.com/@MrBeast",
      "https://www.youtube.com/@PewDiePie",
      "https://www.youtube.com/@tseries",
      "https://www.youtube.com/@cocomelon",
      "https://www.youtube.com/@SETIndia",
      "https://www.youtube.com/@KidsDianaShow",
      "https://www.youtube.com/@LikeNastyaofficial",
      "https://www.youtube.com/@5minutecraftsyoutube",
      "https://www.youtube.com/@zeemusiccompany",
      "https://www.youtube.com/@justinbieber",
      "https://www.youtube.com/@edsheeran",
      "https://www.youtube.com/@BLACKPINK",
      "https://www.youtube.com/@arianagrande",
      "https://www.youtube.com/@taylorswift",
      "https://www.youtube.com/@eminem",
      "https://www.youtube.com/@marvel",
      "https://www.youtube.com/@warnerbros",
      "https://www.youtube.com/@NetflixFamily",
      "https://www.youtube.com/@kurzgesagt",
      "https://www.youtube.com/@veritasium",
      "https://www.youtube.com/@mkbhd",
      "https://www.youtube.com/@Linustechtips",
      "https://www.youtube.com/@unboxtherapy",
      "https://www.youtube.com/@mrwhosetheboss",
      "https://www.youtube.com/@TheVerge",
      "https://www.youtube.com/@BuzzFeedVideo",
      "https://www.youtube.com/@Vox",
      "https://www.youtube.com/@NASA"
    ],
    "maxItems": 10,
    "maxVideosPerChannel": 30,
    "proxyConfiguration": {
      "useApifyProxy": true
    }
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "startUrls": [
    "https://www.youtube.com/@MrBeast",
    "https://www.youtube.com/@PewDiePie",
    "https://www.youtube.com/@tseries",
    "https://www.youtube.com/@cocomelon",
    "https://www.youtube.com/@SETIndia",
    "https://www.youtube.com/@KidsDianaShow",
    "https://www.youtube.com/@LikeNastyaofficial",
    "https://www.youtube.com/@5minutecraftsyoutube",
    "https://www.youtube.com/@zeemusiccompany",
    "https://www.youtube.com/@justinbieber",
    "https://www.youtube.com/@edsheeran",
    "https://www.youtube.com/@BLACKPINK",
    "https://www.youtube.com/@arianagrande",
    "https://www.youtube.com/@taylorswift",
    "https://www.youtube.com/@eminem",
    "https://www.youtube.com/@marvel",
    "https://www.youtube.com/@warnerbros",
    "https://www.youtube.com/@NetflixFamily",
    "https://www.youtube.com/@kurzgesagt",
    "https://www.youtube.com/@veritasium",
    "https://www.youtube.com/@mkbhd",
    "https://www.youtube.com/@Linustechtips",
    "https://www.youtube.com/@unboxtherapy",
    "https://www.youtube.com/@mrwhosetheboss",
    "https://www.youtube.com/@TheVerge",
    "https://www.youtube.com/@BuzzFeedVideo",
    "https://www.youtube.com/@Vox",
    "https://www.youtube.com/@NASA"
  ],
  "maxItems": 10,
  "maxVideosPerChannel": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}

What do users say about the YouTube Channel Scraper - Stats and Video List?

No reviews yet. Be the first.

How do I report an issue with the YouTube Channel Scraper - Stats and Video List?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run YouTube Channel Scraper - Stats and Video List on Apify All scrapers