YouTube Channel Info Scraper - Stats and Links
Pricing
from $1.00 / 1,000 channel profiles
YouTube Channel Info Scraper - Stats and Links
Export public YouTube channel subscribers, lifetime views, country, joined date and external links. Discover creators by keyword and compare recent upload activity with average views. Recent statistics included; business email is a prompt-presence boolean only.
Pricing
from $1.00 / 1,000 channel profiles
Rating
0.0
(0)
Developer
Sumitr Mardy
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
YouTube Channel Info Scraper
Export public YouTube channel subscribers, lifetime views, country, joined dates and external links. Discover creators by keyword and compare their recent long-form upload activity. Not affiliated with YouTube or Google.
No email addresses. hasBusinessEmail only records whether YouTube presents the sign-in-for-business-email prompt. It does not reveal or verify an address. This Actor never signs in or attempts the email CAPTCHA; email-like addresses in public description text are redacted and mailto/email-containing links are omitted.
Quick start
{"channels": ["@MrBeast", "@veritasium"],"includeRecentStats": true}
Discovery:
{"searchQueries": ["home workout"],"maxChannelsPerSearch": 40,"minSubscribers": 10000,"includeRecentStats": true}
For video listings, search, Shorts and video details use YouTube Scraper. For threads and replies use YouTube Comments Scraper. This Actor focuses on channel profiles and activity.
Input
| Field | Default | Meaning |
|---|---|---|
| channels | [] | Public @handles, youtube.com/@handle, /channel/UC…, /c/…, /user/… or video URLs. Unicode handles accepted. Bare video IDs are not accepted. |
| searchQueries | [] | Keywords searched with the Channels type filter, up to 20 queries. |
| maxChannelsPerSearch | 20 | 1–500 new saved channels per query after subscriber filtering and global dedupe. |
| includeRecentStats | true | Read first Videos-tab page, up to 30 public long-form uploads. No extra event price. |
| minSubscribers | 0 | Filter using the rounded subscriber count from About. Lower channels omitted and not charged. |
| language | en | Search locale. About/date/count and Videos requests use English for stable parsing. |
| country | US | Client/search country, not a filter on creator country. |
Provide channels or searchQueries; at most 1,000 combined input entries. HTTP and HTTPS YouTube URLs are normalized; credentials, non-YouTube hosts and unsupported URL forms produce free invalid_input rows. Video URLs resolve through public next → video owner data, never /player.
Channel IDs deduplicate globally across handles, URLs, videos and search queries within the running process. Direct inputs run first; subsequent searches do not save or charge those same channels again. Search position counts saved qualifying rows. A search inspects at most max(100, 5×maxChannelsPerSearch), capped at 2,500 candidates; filters or exhausted results can produce fewer than the requested maximum.
Output
One row per unique successfully saved channel. Every success/failure row always has these same 35 keys, never null. Missing text is empty, numeric values 0 and arrays [].
| Field | Type |
|---|---|
| inputIndex | number |
| input | string |
| source | string |
| query | string |
| channelId | string |
| handle | string |
| url | string |
| title | string |
| description | string |
| subscribers | number |
| subscribersText | string |
| views | number |
| viewsText | string |
| videos | number |
| videosText | string |
| joinedDate | string |
| country | string |
| links | array |
| linkDomains | array |
| hasBusinessEmail | boolean |
| keywords | array |
| avatar | string |
| banner | string |
| isVerified | boolean |
| recentVideosCount | number |
| avgViewsRecent | number |
| medianViewsRecent | number |
| lastUploadText | string |
| daysSinceLastUpload | number |
| recentStatsIncluded | boolean |
| position | number |
| status | string |
| subStatus | string |
| error | string |
| scrapedAt | string |
links contains objects with title and url; linkDomains are unique external hostnames. Country is the creator-declared country and may be absent. Empty links or country are normal. Joined date is ISO YYYY-MM-DD when supplied. Subscriber counts are rounded as YouTube displays them; lifetime views come from the full About view-count text and are exact as reported there, not a real-time independent measurement. Raw text remains in subscribersText, viewsText and videosText. Hidden/missing counts become 0; inspect raw text before treating 0 as a confirmed zero.
recentVideosCount is the size of the first public Videos-tab page, at most 30. avgViewsRecent and medianViewsRecent use displayed video counts, which may be rounded. Shorts are excluded. Live-only/Shorts-only channels or an absent Videos tab can have zero recent long-form rows. With includeRecentStats=false, recent fields stay empty/zero and recentStatsIncluded=false. With the option enabled, recentStatsIncluded=true even if the channel has no available Videos tab. If an available recent-stat request fails, the channel becomes a free failure rather than silently selling incomplete enrichment.
lastUploadText preserves wording such as 3 days ago. daysSinceLastUpload is approximate: weeks×7, months×30.4375, years×365.25; hours/minutes become fractional days. A value 0 can mean today or unavailable, so inspect lastUploadText. This is not a full upload-history or engagement-rate analysis. Avatar/banner and verification reflect available public metadata.
Status and pricing
| status / subStatus | Meaning | Channel event |
|---|---|---|
| ok / channel | Unique profile saved, optional recent stats included | Charged |
| no_results / no_results | A search produced no new qualifying channels | Free |
| failed / invalid_input | Unsupported input or configuration | Free |
| failed / not_found, terminated | Channel unavailable | Free |
| failed / http_NNN, blocked, parse_error, network_error | Public data could not be fetched/extracted | Free |
| failed / free_work_limit, cost_limit_reached | Work or spending cap stopped remaining work | Free |
Per saved channel: FREE $0.002, BRONZE $0.0015, SILVER $0.0012, GOLD and higher $0.001. Recent stats are included at the same rate. Default Actor start is $0.00005 per GB, minimum one event. Failed, empty, duplicate and filtered channels have no channel event; the start fee still applies. Platform usage is included, with no separate URL fee or dataset-item event.
Reliability and limits
The measured 256 MB spike completed 115/115 About checks over 110 distinct channel IDs: 50 handles, 5 direct-ID rechecks and 60 keyword discoveries. Country filled 87/115, links 79/115 and joined date 115/115; optional missing fields were retained correctly. Discovery used 4 pages. One expected fake-handle HTTP404; no challenge, proxy or retry. Conservative recent-mode cost bound $0.036943/1,000 by assigning all run costs to just the 65 recent-stat rows; see published launch records for product validation. This sample is not a guaranteed success rate or evidence of superiority over a competitor.
Public YouTube JSON can change. About continuation is taken only from the header engagement-panel endpoint; discovery continuation only from the last continuation item. No cookies, API key, sign-in, business email reveal, CAPTCHA solving, residential proxy or player endpoint. At most 3 channels concurrently; each channel's requests are sequential. Ordinary transient failures have bounded retries and one default datacenter fallback. A real bot/consent challenge stops the host immediately with no IP rotation around it. Independent deadlines and a free-work loss guard bound unsuccessful searches.
Deduplication state is in memory. Restart/migration can reprocess work; use channelId for downstream dedupe and prefer moderate batches when exact restart behavior matters. It is not a transactional exactly-once service. Public description/link redaction can remove email-like strings; no contact-address product is provided.
Public presets
- YouTube Channel Info Scraper - Subscribers, Views and Links
- Find YouTube Channels by Keyword - Influencer Discovery
- YouTube Channel Activity Check - Last Upload and Average Views
The profile preset disables recent stats for quicker metadata-only exports; the activity/discovery presets enable them. To schedule repeated monitoring, duplicate a task, save your channels/keywords, then create an Apify Console schedule for that saved task and timezone. This Actor does not create schedules automatically.
API examples
curl -X POST "https://api.apify.com/v2/acts/sumitr_mardy~youtube-channel-info/run-sync-get-dataset-items?format=json" \-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \-d '{"channels":["@MrBeast","@veritasium"],"includeRecentStats":true}'
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("sumitr_mardy/youtube-channel-info").call(run_input={"searchQueries": ["home workout"], "maxChannelsPerSearch": 40,"minSubscribers": 10000, "includeRecentStats": True})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["title"], row["subscribers"], row["avgViewsRecent"], row["status"])
Use asynchronous runs for large batches/searches and download the dataset after completion.
Use it from AI agents (MCP)
Hosted OAuth:
{"mcpServers":{"channels":{"url":"https://mcp.apify.com/?tools=sumitr_mardy/youtube-channel-info"}}}
Hosted Bearer alternative:
{"mcpServers":{"channels":{"url":"https://mcp.apify.com/?tools=sumitr_mardy/youtube-channel-info","headers":{"Authorization":"Bearer YOUR_APIFY_TOKEN"}}}}
Stdio:
{"mcpServers":{"channels":{"command":"npx","args":["-y","@apify/actors-mcp-server","--tools","sumitr_mardy/youtube-channel-info"],"env":{"APIFY_TOKEN":"YOUR_APIFY_TOKEN"}}}}
Ask for public channels or a niche keyword, a subscriber threshold and whether recent long-form activity matters. Inspect status, raw count text and optional-field absence. Do not request email addresses or interpret the business-email prompt as a revealed contact. Combine with YouTube Scraper and YouTube Comments Scraper for public videos and discussions.