YouTube Channel Statistics Scraper
Pricing
from $3.50 / 1,000 channel statistics
YouTube Channel Statistics Scraper
Bulk enrich known YouTube channels with public statistics only — subscribers, views, video count, joined date, country. No recent videos. Cookieless, MCP-ready.
Pricing
from $3.50 / 1,000 channel statistics
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
What does YouTube Channel Statistics Scraper do?
Bulk-enrich known YouTube channels with lean public statistics only: subscribers, lifetime views, video count, joined date, country, handle, and avatar. Paste channel URLs, @handles, or /channel/UC… IDs and get one predictable dataset row per channel — focused on channel counters rather than video catalogs.
This Actor is for analysts and AI agents that already know which channels matter and need a fast size/reach check before they spend on full profile + video scrapes.
Best fit for this Actor
- Enrich a CRM or watchlist of known YouTube channels with public counters.
- Compare subscriber / view / video totals across a short list before outreach.
- Feed MCP or enrichment pipelines when you need stats, channel-counter catalogs.
For profile plus recent videos/Shorts, use YouTube Channel Scraper. For keyword channel discovery, use YouTube Channel Search Scraper. For video lists only, use YouTube Channel Videos Scraper. For SocialBlade ranks/earnings estimates, use a SocialBlade-oriented Actor instead.
Practical scenario
A media buyer pastes @Apify and https://www.youtube.com/@GoogleDevelopers, keeps includeDescription on, and runs with the default Residential proxy. The Actor returns one stats row each: subscriberCount, viewCount, videoCount, joinedDateText, and country when YouTube exposes them. A fake handle finishes SUCCEEDED with VALID_EMPTY and keeps channel-stats at zero. Channels that clear the size bar can later be sent to the full channel scraper for video listings.
Quick start input
{"channelUrls": ["@Apify"],"maxChannels": 2,"includeDescription": true,"providerMode": "auto"}
channelUrls accepts @handles, plain handles, /channel/UC… IDs, /c/ or /user/ paths, and full YouTube channel URLs. Duplicates (URL vs handle for the same channel) are collapsed before any fetch.
Input reference
| Field | Type | What it controls |
|---|---|---|
channelUrls | array | Known channel URLs, handles, or UC IDs. Prefill @Apify. Max 100 unique after dedupe. |
maxChannels | integer | Hard cap after dedupe. Default 100. Prefill 2 for cheap quality tests. |
includeDescription | boolean | Include a short about-text preview. Default true. |
providerMode | enum | auto (native then providers), direct, or providerOnly. |
country / language | string | YouTube gl / hl locale. Defaults US / en. |
proxyConfiguration | object | Apify proxy for native fetches. Residential by default. |
What data you receive
One dataset item is one public channel statistics row. The contract is stats-only (sibling Actors cover video listings).
{"input": "@Apify","channelId": "UCTgwcoeGGKmZ3zzCXN2qo_A","channelUrl": "https://www.youtube.com/channel/UCTgwcoeGGKmZ3zzCXN2qo_A","handle": "@Apify","title": "Apify","description": "Full-stack web scraping and automation platform...","subscriberCount": 29200,"subscriberCountText": "29.2K subscribers","viewCount": 13548406,"viewCountText": "13,548,406 views","videoCount": 288,"videoCountText": "288 videos","joinedDateText": "Joined Jan 4, 2017","country": "Czechia","isVerified": false,"avatarUrl": "https://yt3.googleusercontent.com/...","keywords": ["scraping", "automation"],"source": "youtube","provider": "youtube","scrapedAt": "2026-01-15T12:00:00.000Z"}
| Field | Meaning |
|---|---|
subscriberCount / viewCount / videoCount | Parsed public counters |
joinedDateText / country | Public About fields when YouTube shows them |
source / provider | Provenance: youtube, scrapecreators, or sociavault |
scrapedAt | ISO-8601 collection time |
OUTPUT and RUN_SUMMARY in the default key-value store hold outcome, itemsPushed, channelsFound, and chargedEventCounts.
Use through the API
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~youtube-channel-statistics-scraper/runs" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"channelUrls":["@Apify"],"maxChannels":1}'
Download rows as JSON, CSV, Excel, or HTML from the Dataset tab.
Use with AI agents through Apify MCP
Enrich these known YouTube channels with public statistics only: @Apify. Return channelId, handle, subscriberCount, viewCount, videoCount, joinedDateText, country, and source. Keep the job to channel stats (use sibling Actors for video catalogs).
Connect via https://mcp.apify.com. Read OUTPUT.outcome and itemsPushed to interpret empty datasets. Cost signal: about $0.0035 per found channel plus platform usage. Missing channels surface as VALID_EMPTY and keep channel-stats at zero.
Connect the workflow
- Need recent videos too? After this stats pass, continue with YouTube Channel Scraper when you want profile detail plus recent videos/Shorts.
- Still discovering channels? Start with YouTube Channel Search Scraper for keyword discovery, then enrich known matches here for lean counters.
- Need emails from channel About? Use YouTube Channel Email Extractor after you confirm the handle exists and meets your size bar.
Pricing
This Actor uses Pay per event plus Apify platform usage. The live Pricing tab is the current source of truth for billing details.
| Event | Price | When it charges |
|---|---|---|
apify-actor-start | $0.00005 | Once per run |
channel-stats | $0.0035 | Per persisted valid statistics row |
Billing unit: 1 channel-stats event per persisted valid statistics row. Worked example: 1 row (@Apify prefill) ≈ $0.0035 in result events plus a few seconds of Apify platform usage (passed through). 10 rows ≈ $0.035 in channel-stats if all resolve. Invalid inputs and missing channels keep channel-stats at zero.
How it works
- Normalize and deduplicate channel URLs,
@handles, and UC IDs. - Fetch the public YouTube
/aboutpage and parseytInitialData(stats only). - On native block or empty parse, fall through to owner-managed ScrapeCreators, then SociaVault.
- Charge
channel-statsfor found rows, then write the dataset item. - Always write
OUTPUT+RUN_SUMMARYwith an honest outcome from this set:
COMPLETE | PARTIAL | VALID_EMPTY | INVALID_INPUT | UPSTREAM_FAILED | CONFIG_ERROR
Best results tips
- Prefer
@handlesor/channel/UC…IDs over ambiguous vanity paths. - Keep batches small for MCP canaries; raise
maxChannelsonly when you need bulk enrichment. - Leave
providerModeonautoso Residential native fetches can fall back to providers when YouTube serves a consent or empty page.
Recovery and scope notes
- Native YouTube HTML can be intermittent;
autorecovers via owner-managed providers. PreferproviderMode: "auto"when Residential returns an empty About page. - Public About fields such as
joinedDateTextandcountryappear only when YouTube shows them on the About surface. - This Actor's dataset contract is channel statistics; use sibling Actors when you need recent videos.
- Recovery: retry with
providerMode: "auto", confirm the handle/URL resolves in a browser, and open an Issue and include the Console run URL when providers also return empty.
Builder's note
I built this as a stats-only SKU after learning that most channel enrichment jobs only need public counters. I found that YouTube's About ytInitialData already carries subscribers, views, videos, joined date, and country for many channels, so one HTTP About fetch per target is enough and provider calls stay as recovery. My goal was a predictable mid-pack price that stays distinct from the fuller channel scraper that bills separately for video rows.
Legal and responsible use
This Actor collects publicly visible YouTube channel metadata only. It runs cookieless against public pages and optional owner-managed providers; it does not use a Google OAuth token or the official YouTube Data API. You are responsible for complying with YouTube Terms of Service, applicable privacy laws, and your own data-use policies. Use results for legitimate research, enrichment, and monitoring workflows.
YouTube is a trademark of Google LLC. This independent Actor is not affiliated with, associated with, or endorsed by YouTube or Google.
FAQ
Does this return recent videos? Video listings stay with youtube-channel-scraper and youtube-channel-videos-scraper. This Actor returns channel statistics.
Do I need a YouTube API key? The Actor is cookieless and uses public page data plus optional owner provider fallbacks.
What if a channel is missing? The Actor returns SUCCEEDED with VALID_EMPTY for that input and keeps channel-stats at zero.
Support
Open an Issue on the Actor page with the run ID and input (redact secrets). Custom enrichment workflows are available on request.