YouTube Channel Details & Profile Scraper
Pricing
from $1.25 / 1,000 youtube channel profiles
YouTube Channel Details & Profile Scraper
Get public YouTube channel profiles from handles, IDs, usernames, or URLs. Export subscribers, views, video counts, join dates, country, branding, social links, publicly exposed emails, and RSS for creator research and CRM enrichment. No YouTube API key required. Unofficial.
Pricing
from $1.25 / 1,000 youtube channel profiles
Rating
0.0
(0)
Developer
ArjunAI Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 days ago
Last modified
Categories
Security
Limited permissionsShare
Get YouTube channel details from a handle, ID, or URL
Enrich a known list of YouTube channels with public profiles: subscribers, channel views, video counts, join dates, descriptions, branding, social links, public emails, and RSS. Use the data for creator research, CRM enrichment, and competitor monitoring without expanding channels into thousands of video records. No YouTube Data API key is required.
Start with one channel below, or try a ready-to-run example.
{"channels": ["@FinancialTimes"]}
This is an unofficial tool, not affiliated with or endorsed by YouTube or Google. It extracts publicly delivered metadata, not private account data.
How to use the YouTube channel scraper
- Enter known channel handles, IDs, usernames, or URLs in Channel handles, IDs, usernames, or URLs.
- Start the Actor. A run accepts 1–50 entries before deduplication.
- Open the Dataset. Use Channel overview for the main statistics, Channel details for all profile fields, or Lookup status for input-specific errors and duplicate notices.
- Export JSON for nested links and navigation data, or CSV/Excel for a flat spreadsheet. You can also call the Actor by API, schedule recurring runs, and connect its Dataset to downstream tools.
There is only one input field. Video URLs, keyword searches, and channel display names containing spaces are not channel identifiers.
Supported channel inputs
| Format | Example |
|---|---|
| Handle | @NASA |
| Plain username | NASAtelevision |
| Stable channel ID | UCLA_DiR1FfKNvjuUpBHmylQ |
| Handle URL | https://www.youtube.com/@NASA |
| Channel ID URL | https://www.youtube.com/channel/UCLA_DiR1FfKNvjuUpBHmylQ |
| Legacy user URL | https://www.youtube.com/user/NASAtelevision |
| Channel tab URL | https://www.youtube.com/@NASA/videos |
Prefer a current handle or stable channel ID for a direct lookup. Plain usernames try the handle, legacy /user/, and /c/ paths in that order until one resolves; that may require more requests. Channel IDs are case-sensitive.
Repeated identifiers and equivalent channel-tab URLs are merged before lookup. If different aliases resolve to the same channel ID, only one profile is saved and billed; the additional resolved alias receives a free duplicate status. Exact duplicate entries do not generate extra rows. During a normally completed run, each processed, deduplicated input has a visible outcome; an interrupted run may leave inputs unprocessed.
What channel data can you extract?
The Actor returns 43 fields in each profile, with null or empty arrays for unavailable values. It does not add video fields, calculated analytics, or bulky thumbnail arrays.
- Identity, full public description, channel keywords, and YouTube's structured profile type.
- Subscriber count and displayed label, total channel views, public video count, country, and join date.
- One best available avatar and banner URL.
- Verification, artist, membership, community, and visibility signals exposed by the page.
- Public external links, exposed email addresses, and protected-business-email indicators.
- Available tabs, content navigation URLs, and the uploads RSS feed.
Real output example
This full 43-field record is from a real cloud run of build 0.1.11 on October 19, 2026 for the quick-start input above. Counts and URLs are a point-in-time snapshot, not promised future values.
{"recordType": "channel","status": "complete","inputValue": "@FinancialTimes","inputType": "handle","requestedUrl": "https://www.youtube.com/@FinancialTimes","resolvedUrl": "https://www.youtube.com/@FinancialTimes/about?hl=en&gl=US","channelId": "UCoUxsWakJucWg46KW5RsvPw","channelName": "Financial Times","channelHandle": "@FinancialTimes","channelUrl": "https://www.youtube.com/@FinancialTimes","channelIdUrl": "https://www.youtube.com/channel/UCoUxsWakJucWg46KW5RsvPw","displayUrl": "www.youtube.com/@FinancialTimes","description": "Interested in unbiased global news and want to make sense of a changing world? The Financial Times YouTube channel showcases the best of our visual journalism, going beyond the headlines to help you navigate the world’s new agenda. Our stories will inform and inspire you to lead the way in business and beyond, to rethink existing political and economic models and follow crucial trends. Join us and gain deeper insight into the news. \n\nCopyright The Financial Times Ltd 2019. FT and 'Financial Times' are trademarks of The Financial Times Ltd. Please do not copy or redistribute FT videos otherwise than in accordance with YouTube's Terms of Service. If you wish to purchase rights to syndicate FT videos, please contact syndication@ft.com.\n\n","subscriberCount": 1460000,"subscriberCountText": "1.46M subscribers","subscriberCountHidden": false,"totalViewCount": 230427960,"totalViewCountText": "230,427,960 views","videoCount": 11590,"videoCountText": "11,590 videos","joinedDate": "2009-03-26","joinedDateText": "Joined Mar 26, 2009","channelCountry": "United Kingdom","avatarUrl": "https://yt3.googleusercontent.com/ytc/AIdro_ndI2xm7Vhj_ZGTdd1hmWfv40vS_Pj1K9S31-NSBatSCLZb=s900-c-k-c0x00ffffff-no-rj","bannerUrl": "https://yt3.googleusercontent.com/1BgWeV7qvCJ0_LKKuv-xtJPspz5ejiqkobw78yZxmnnnDnwIrocY7dtXjMIdh866ChX0dFCI=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj","isVerified": true,"isOfficialArtist": false,"profileType": "Person","availability": "public","isFamilySafe": true,"isUnlisted": false,"isNoIndex": false,"hasMemberships": false,"hasCommunity": true,"keywords": ["Business news","Financial news","FT","World news","Latest news","Economic news","Political news","Financial Times","Financial Times Report","FT.com","news","FT Analysis","FT report","Syria","Obama","Putin","barack obama","steve jobs","Donald trump","sneakers","reselling","music"],"socialLinks": [{"platform": "ft.com","title": "Financial Times","url": "https://www.ft.com"},{"platform": "Facebook","title": "See our Facebook feed","url": "https://www.facebook.com/financialtimes"},{"platform": "Instagram","title": "Instagram","url": "https://www.instagram.com/financialtimes"},{"platform": "TikTok","title": "TikTok","url": "https://www.tiktok.com/@financialtimes"},{"platform": "X / Twitter","title": "X","url": "https://x.com/FinancialTimes"}],"emails": ["syndication@ft.com"],"businessEmailAvailable": null,"businessEmailRequiresSignIn": null,"availableTabs": [{"name": "Home","url": "https://www.youtube.com/@FinancialTimes/featured","selected": true},{"name": "Videos","url": "https://www.youtube.com/@FinancialTimes/videos","selected": false},{"name": "Shorts","url": "https://www.youtube.com/@FinancialTimes/shorts","selected": false},{"name": "Live","url": "https://www.youtube.com/@FinancialTimes/streams","selected": false},{"name": "Podcasts","url": "https://www.youtube.com/@FinancialTimes/podcasts","selected": false},{"name": "Playlists","url": "https://www.youtube.com/@FinancialTimes/playlists","selected": false},{"name": "Posts","url": "https://www.youtube.com/@FinancialTimes/posts","selected": false}],"contentUrls": {"home": "https://www.youtube.com/@FinancialTimes/featured","about": "https://www.youtube.com/@FinancialTimes/about","videos": "https://www.youtube.com/@FinancialTimes/videos","shorts": "https://www.youtube.com/@FinancialTimes/shorts","live": "https://www.youtube.com/@FinancialTimes/streams","podcasts": "https://www.youtube.com/@FinancialTimes/podcasts","playlists": "https://www.youtube.com/@FinancialTimes/playlists","posts": "https://www.youtube.com/@FinancialTimes/posts","rss": "https://www.youtube.com/feeds/videos.xml?channel_id=UCoUxsWakJucWg46KW5RsvPw"},"rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UCoUxsWakJucWg46KW5RsvPw","scrapedAt": "2026-10-19T12:07:45.586492Z"}
Identity and request fields
| Field | Meaning |
|---|---|
recordType | channel for a profile; channelLookupError for a lookup status. |
status | Profile completeness or lookup outcome, described below. |
inputValue, inputType | Supplied identifier and detected type: handle, username, channelId, or URL. |
requestedUrl, resolvedUrl | Selected channel URL and final URL after redirects. |
channelId, channelName, channelHandle | Stable ID, public name, and handle when exposed. |
channelUrl, channelIdUrl, displayUrl | Preferred public URL, stable ID-based URL, and YouTube's displayed URL text. |
description, keywords | Public channel description and channel metadata keywords. |
profileType | YouTube's structured entity type. Person can also appear on an organizational channel; it is not our business classification. |
scrapedAt | UTC extraction timestamp. |
Statistics and history
| Field | Meaning |
|---|---|
subscriberCount, subscriberCountText | Public numeric subscriber count and original label. YouTube may round public counts. |
subscriberCountHidden | Explicit hidden-count flag when exposed; false when a count is available; otherwise null. A missing count alone is not evidence that it is hidden. |
totalViewCount, totalViewCountText | Public channel views, numeric and displayed. |
videoCount, videoCountText | YouTube's public video count, numeric and displayed. |
joinedDate, joinedDateText | Standard YYYY-MM-DD join date and original YouTube text. No time of day is invented. |
channelCountry | Public country selected by the creator, not an inferred audience location. |
Branding and public feature signals
| Field | Meaning |
|---|---|
avatarUrl, bannerUrl | Best available public avatar and banner. No duplicate thumbnails array. |
isVerified, isOfficialArtist | Badges identified in the channel header. |
hasMemberships | A public Join/membership action was detected in the delivered page. |
hasCommunity | Posts or Community tab is present among the delivered tabs. |
availability | public for a publicly resolved page, or unlisted when that metadata flag is present; not a permissions audit. |
isFamilySafe, isUnlisted, isNoIndex | Corresponding YouTube metadata flags when exposed. |
Nullable booleans use null when the relevant metadata or page section is unavailable, not an invented false. A feature not displayed to a signed-out visitor is not proof that the creator never offers it.
Contacts and navigation
| Field | Meaning |
|---|---|
socialLinks | External links with platform, title, and destination url. This can include websites, not only social networks. |
emails | Email addresses in public profile/About data and the channel's own posts already included in that response. No additional post crawl or mailbox validation. |
businessEmailAvailable | A business-email action is explicitly indicated. Unknown is null; an email in a description does not imply this action exists. |
businessEmailRequiresSignIn | YouTube's sign-in requirement flag when exposed. |
availableTabs | Delivered tabs, their names, URLs, and selected state. |
contentUrls | Navigation map for available tabs, About, and RSS. A Live tab can use a /streams URL. |
rssUrl | Public uploads RSS URL when provided by YouTube. |
Publicly mentioned email addresses are not verified contact ownership. Protected business emails may require sign-in and CAPTCHA: this Actor does not bypass those controls or guarantee an email for every channel.
Statuses and missing data
| Status | Meaning | Profile charge |
|---|---|---|
complete | Channel identity and About statistics/history data were returned. Optional fields may still be absent. | Yes |
partial | Identity resolved, but About statistics/history were unavailable after the recovery attempt. Useful available fields are retained. | Yes |
notFound | No public channel matched the supplied identifier. | No |
invalidInput | Unsupported or malformed input, such as a video URL. No channel HTTP lookup is made for that input. | No |
failed | Temporary network, timeout, blocking, or extraction failure. | No |
chargeLimitReached | Remaining user budget cannot cover another profile. | No |
duplicate | A different alias resolved to an already saved channel. | No |
complete does not mean every optional field is populated. Country, emails, links, banners, and feature metadata depend on what the channel publishes. The Actor does not estimate missing values.
Lookup-status rows use errorCode, errorMessage, and suggestion instead of dozens of empty profile fields. For example, an input that does not resolve receives CHANNEL_NOT_FOUND; request failures are distinguished as blocking, rate limiting, network, timeout, or incomplete metadata errors. These are output statuses, not paid profiles.
The default Key-Value Store record OUTPUT contains totals, duplicate counts, and per-input outcomes. It is written on normal completion. If a run is stopped, times out, or crashes, inspect the Dataset and logs: the final summary may not exist.
Pricing
Pay per event, with platform usage included in the listed prices.
| Event | Price |
|---|---|
Saved channel profile — youtube-channel-profile | $1.25 per 1,000 profiles ($0.00125 each) |
Actor start — apify-actor-start | $0.00005 per run at this Actor's fixed 512 MB memory |
| Lookup-status or duplicate row | Free |
Both complete and partial profiles are billed. One run returning 10 profiles costs $0.01255 including its start; 50 profiles cost $0.06255. The start event still applies when no profile is found. The Actor does not also charge the default Dataset-item event.
The Actor checks the remaining maximum charge before new lookups, recovery requests, and profile saves. Requests already in flight may finish, but no additional profile is saved beyond the charge allowance. The Store's Pricing tab is the current source of truth.
YouTube channel details API
Use an Apify token in the authorization header. No YouTube API key is needed.
curl -X POST \"https://api.apify.com/v2/acts/arjun_code~youtube-channel-details-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"channels":["@FinancialTimes"]}'
For larger batches, start an asynchronous Actor run and fetch its Dataset when the run finishes. JSON preserves nested link and navigation structures. Filter recordType == "channel" when downstream steps should process profiles only.
Ready-to-run creator research examples
- Get YouTube channel details from a handle
- Enrich a YouTube creator list with channel statistics
- Compare public YouTube competitor channel statistics
These examples export public channel data. They do not calculate influencer scores, audience demographics, or engagement estimates.
FAQ and troubleshooting
How long does a channel lookup take?
Requests run with up to four concurrent channel lookups. Most channels need one public page request. A profile missing About data can be re-read by stable channel ID within the first route's remaining time. Temporary request failures can use one fallback route; there is no unbounded retry loop. The Actor uses 10- and 15-second route budgets with a 30-second overall lookup budget, excluding container startup and time waiting for a concurrency slot. Batch duration varies with response size, queueing, and YouTube availability; the budget is not a speed or success guarantee.
A known channel returned notFound. What should I do?
Check the identifier, then try the channel's stable UC... ID or current handle. A display name is not a handle, and a historical handle can disappear or point elsewhere. Include the run ID when reporting a reproducible problem.
Why is the result partial, or a count missing?
YouTube can deliver an incomplete page or omit the About model after a redirect. The Actor tries a recovery lookup by stable channel ID for a partial profile, then retains available data if recovery cannot fill the profile. Counts and other fields are not invented.
Why is emails empty when a business-email button exists?
The button can be public while its address requires sign-in and CAPTCHA. Only addresses already exposed in public page data are returned. Email access flags can be true while emails is empty, or null when YouTube does not expose the flag.
Can it search for channels or export their videos?
No. This Actor enriches known channels. Use YouTube Search Scraper for keyword discovery, YouTube Channel Content Scraper for a channel's videos, Shorts, and streams, YouTube Video and Shorts Details Scraper for individual content details, or YouTube Comments Scraper for comments and replies.
Are private channels or protected data supported?
No. This Actor has no login input and does not access private account data or bypass sign-in challenges. Public collection can still be blocked temporarily; retry failed inputs later rather than rerunning successful profiles unnecessarily.
Support and responsible use
Open an issue on the Actor's Apify page with the run URL, exact input, returned field, and expected public value. Never include tokens, passwords, or account credentials.
Use publicly accessible data lawfully, respect YouTube's terms, applicable privacy requirements, and channel owners' rights. Do not use contact data for spam, harassment, or deceptive outreach. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by YouTube or Google.