YouTube Channel Details Scraper and Profile Enricher avatar

YouTube Channel Details Scraper and Profile Enricher

Pricing

from $1.25 / 1,000 youtube channel profiles

Go to Apify Store
YouTube Channel Details Scraper and Profile Enricher

YouTube Channel Details Scraper and Profile Enricher

Unofficial YouTube channel profile scraper for handles, usernames, IDs, and URLs. Export subscriber, total-view, and video counts, join date, country, branding, public links, email signals, content tabs, and RSS—with one visible result per input. No API key.

Pricing

from $1.25 / 1,000 youtube channel profiles

Rating

0.0

(0)

Developer

Arjun AI

Arjun AI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Categories

Share

Enrich known YouTube channels with full public profiles

Turn a known list of YouTube channels into structured, analysis-ready profiles. Supply @handles, legacy usernames, channel IDs, channel URLs, or channel-tab URLs and receive one visible Dataset row per input: either a detailed public profile or a structured lookup status with corrective guidance.

This is a focused profile-enrichment Actor. It does not search by keyword and it does not expand channels into video or Shorts rows, so its input scope, output count, and downstream cost remain predictable. It is designed for creator-list enrichment, influencer qualification, CRM enrichment, competitor monitoring, audience research, and API or LLM workflows. No YouTube Data API key is required.

This is an unofficial Actor and is not affiliated with, endorsed by, or sponsored by YouTube or Google. It collects publicly accessible metadata only.

Ready-to-run examples

Why this Actor is different

  • One input, one visible outcome: every unique input produces either a profile row or a clear channelLookupError row.
  • Flexible direct lookup: accepts handles, plain usernames, stable channel IDs, channel URLs, legacy user URLs, and channel-tab URLs.
  • Profile-first output: combines identity, public statistics, history, branding, links, contact signals, badges, tabs, and RSS without adding unrelated video records.
  • Compact media fields: returns one high-resolution avatarUrl and bannerUrl instead of large duplicate thumbnail arrays.
  • Honest contact coverage: returns public emails only when they are directly exposed and separately reports when YouTube protects a business email behind sign-in.

Choose the right Actor

GoalRecommended Actor
Enrich known channel handles, IDs, usernames, or URLsThis Actor
Discover channels, videos, or native Shorts by keywordYouTube Search Scraper
Export a known channel's videos, Shorts, and streamsYouTube Channel Content Scraper
Get metadata for known video or Shorts URLs or IDsYouTube Video and Shorts Details Scraper
Export public comments and replies from videos or ShortsYouTube Comments Scraper

What it returns

  • Stable channel identity: channel ID, name, handle, canonical URL, and ID-based URL
  • Public description, channel keywords, profile type, and visibility metadata
  • Public subscriber count, total channel views, and video count
  • Standardized channel creation date plus YouTube's original displayed text
  • Creator-selected country when the channel publishes one
  • Verification, Official Artist Channel, memberships, and community availability
  • High-resolution avatar and banner URLs without a large duplicate thumbnail array
  • Public external links with platform labels and original link titles
  • Email addresses exposed in the public channel page data
  • Available channel tabs and direct URLs for Videos, Shorts, Live, Podcasts, Playlists, Posts, About, and RSS
  • Family-safe, unlisted, and indexing metadata exposed by YouTube
  • Visible notFound, invalidInput, failed, or chargeLimitReached Dataset rows when an input cannot produce a profile
  • A compact OUTPUT summary with success or failure status for every input

Pricing

This Actor uses pay per event, with Apify platform usage included in the listed prices.

EventCharged whenPrice
Actor startOnce when a run starts$0.00005 per run
Channel profileA resolved recordType: "channel" row is saved$0.00125 per profile
Lookup statusA channelLookupError row is savedFree

Both complete and partial channel profiles are billable because they contain a resolved channel identity. notFound, invalidInput, failed, and chargeLimitReached rows are not charged as channel profiles.

Example totals before volume discounts:

Resolved profilesTotal price
1$0.00130
10$0.01255
50$0.06255

Each example includes one Actor-start event. The Actor also respects the maximum charge selected by the user. When the remaining budget cannot cover another profile, it stops saving billable profiles and writes a free chargeLimitReached status for affected inputs. The Pricing tab is the source of truth if prices change after this README is published.

Input

The Actor has one input field: channels. Add one channel per line, with up to 50 unique values in a run.

Supported input formats:

Input typeExample
Handle@NASA
Plain usernameNASA
Channel IDUCLA_DiR1FfKNvjuUpBHmylQ
Handle URLhttps://www.youtube.com/@NASA
Channel ID URLhttps://www.youtube.com/channel/UCLA_DiR1FfKNvjuUpBHmylQ
Legacy user URLhttps://www.youtube.com/user/NASAtelevision
Channel tab URLhttps://www.youtube.com/@NASA/videos

Example input:

{
"channels": [
"@NASA",
"UCRBrH2qS7yKGMNSmjnj8gcw",
"https://www.youtube.com/@yttalkjun"
]
}

Plain usernames are resolved as a handle first, then through YouTube's legacy /user/ and /c/ channel paths.

Output example

The selected fields below come from a real Actor 0.1.5 cloud run for @FinancialTimes on September 1, 2026. The full Dataset row contained additional fields; this example omits some of them for readability without inventing replacement 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",
"subscriberCount": 1450000,
"subscriberCountText": "1.45M subscribers",
"subscriberCountHidden": false,
"totalViewCount": 225062975,
"totalViewCountText": "225,062,975 views",
"videoCount": 11468,
"videoCountText": "11,468 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",
"isVerified": true,
"isOfficialArtist": false,
"profileType": "Person",
"availability": "public",
"hasCommunity": true,
"socialLinks": [
{
"platform": "ft.com",
"title": "Financial Times",
"url": "https://www.ft.com"
},
{
"platform": "X / Twitter",
"title": "X",
"url": "https://x.com/FinancialTimes"
}
],
"emails": [
"syndication@ft.com"
],
"businessEmailAvailable": false,
"businessEmailRequiresSignIn": false,
"availableTabs": [
{
"name": "Videos",
"url": "https://www.youtube.com/@FinancialTimes/videos",
"selected": false
}
],
"rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UCoUxsWakJucWg46KW5RsvPw",
"scrapedAt": "2026-09-01T09:12:58.193596Z"
}

Counts and public page data change over time. Fields that a channel does not publish return null, false, or an empty array as appropriate.

Output field reference

Input and status

FieldDescription
recordTypechannel for a resolved profile or channelLookupError for an unresolved input.
statuscomplete or partial for profiles; notFound, invalidInput, failed, or chargeLimitReached for lookup-status rows.
inputValueOriginal value supplied by the user.
inputTypeDetected input type: handle, username, channelId, or url.
requestedUrlChannel URL selected from the input.
resolvedUrlFinal URL returned after YouTube redirects.
scrapedAtUTC timestamp when the record was created.

Identity and profile

FieldDescription
channelIdStable YouTube channel ID.
channelNameCurrent public channel name.
channelHandleCurrent @handle when available.
channelUrlPreferred public channel URL, normally the handle URL.
channelIdUrlStable /channel/CHANNEL_ID URL.
displayUrlURL text displayed by YouTube.
descriptionFull public channel description.
keywordsChannel keywords exposed in public page metadata.
profileTypeStructured entity type exposed by YouTube. It can be Person even for an organizational channel.

Audience and history

FieldDescription
subscriberCountParsed public subscriber count. Public counts may be rounded by YouTube.
subscriberCountTextSubscriber count exactly as displayed.
subscriberCountHiddenWhether the channel hides its public subscriber count.
totalViewCountParsed lifetime public channel view count.
totalViewCountTextTotal views exactly as displayed.
videoCountParsed public video count displayed by YouTube.
videoCountTextVideo count exactly as displayed.
joinedDateStandard YYYY-MM-DD channel join date.
joinedDateTextOriginal YouTube join-date text.
channelCountryCreator-selected public country; null when not published.

Branding and channel features

FieldDescription
avatarUrlBest available public channel avatar URL.
bannerUrlBest available public channel banner URL.
isVerifiedWhether YouTube displays a verified badge.
isOfficialArtistWhether the header identifies an Official Artist Channel.
hasMembershipsWhether a public Join/membership action is displayed.
hasCommunityWhether Posts or Community content is exposed.
isFamilySafeFamily-safe metadata exposed by YouTube.
isUnlistedWhether public page metadata marks the channel as unlisted.
isNoIndexWhether public page metadata asks search engines not to index the channel.
availabilityPublic availability classification.

Contact, navigation, and availability

FieldDescription
socialLinksExternal channel links with platform, title, and destination URL.
emailsEmail addresses exposed in the public channel page source or description.
businessEmailAvailableWhether YouTube displays a business-email action.
businessEmailRequiresSignInWhether YouTube requires an authenticated session to reveal that business email.
availableTabsChannel tabs currently exposed by YouTube, with URLs.
contentUrlsDirect navigation map for available content tabs, About, and RSS.
rssUrlYouTube uploads RSS feed for the channel.

Email limitations

The Actor only returns email addresses present in publicly delivered channel data. YouTube may require sign-in and CAPTCHA completion before revealing a business email. The Actor does not bypass those controls. In that case, businessEmailAvailable and businessEmailRequiresSignIn can be true while emails remains empty.

Unresolved channels and run summary

The default Dataset contains one row for every unique input. Resolved inputs use recordType: "channel". If a channel does not exist, is misspelled, is invalid, cannot be extracted, or cannot be saved within the user's maximum charge, the Dataset contains a compact recordType: "channelLookupError" row instead of silently returning no data:

{
"recordType": "channelLookupError",
"status": "notFound",
"inputValue": "@channel_that_does_not_exist",
"inputType": "handle",
"errorCode": "CHANNEL_NOT_FOUND",
"errorMessage": "No public YouTube channel matched this input.",
"suggestion": "Check the spelling, @handle, channel ID, or channel URL.",
"scrapedAt": "2026-09-01T04:38:17Z"
}

The default Key-Value Store record named OUTPUT also reports totals and the result of every input:

{
"totalInputs": 1,
"completeChannels": 0,
"partialChannels": 0,
"notFoundInputs": 1,
"invalidInputs": 0,
"failedInputs": 0,
"chargeLimitedInputs": 0,
"totalResults": 0,
"statusDatasetItems": 1,
"totalDatasetItems": 1,
"chargeLimitReached": false,
"resultsByInput": [
{
"inputValue": "@channel_that_does_not_exist",
"status": "notFound",
"errorCode": "CHANNEL_NOT_FOUND",
"error": "No public YouTube channel matched this input. Check the spelling, @handle, channel ID, or channel URL."
}
]
}

Run through the Apify API

curl -X POST \
"https://api.apify.com/v2/acts/arjun_code~youtube-channel-details-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channels": [
"@NASA",
"UCLA_DiR1FfKNvjuUpBHmylQ"
]
}'

Troubleshooting

A valid channel returned a lookup error

Check the input spelling and open the supplied channel URL in a signed-out browser. If it is public, retry once because YouTube can temporarily return an incomplete or blocked response. Include the run ID in a support request so the exact attempt can be inspected.

emails is empty although the channel shows a business-email button

YouTube can expose only the presence of the button while requiring sign-in and CAPTCHA to reveal the address. In that case, businessEmailAvailable or businessEmailRequiresSignIn can be true while emails remains empty. Addresses written directly in public descriptions or page data can still be returned.

A count or profile field is null

The channel did not publish the value, hid it, or YouTube omitted it from the public response. The Actor keeps missing values empty instead of estimating them. Public subscriber values can be rounded by YouTube; use subscriberCountText when the displayed label matters.

FAQ

Can this Actor discover channels by keyword?

No. This Actor enriches channels you already know by handle, username, ID, or URL. Use YouTube Search Scraper for keyword discovery.

Does it return videos or Shorts?

No. It returns one channel profile per input and reports the channel's public video count. Use YouTube Channel Content Scraper to export videos, Shorts, or streams from a known channel. Use YouTube Search Scraper for keyword discovery.

Are email addresses guaranteed?

No. The Actor returns only email addresses exposed in publicly delivered channel data. A protected business-email action can be detected even when the address itself requires sign-in and CAPTCHA completion.

Why can a field be null or an array be empty?

YouTube channels do not all publish the same metadata. Country, handle, banner, subscriber count, links, emails, and some channel tabs can be hidden or absent. The Actor preserves that distinction instead of inventing values.

What happens when a channel does not exist?

The Dataset still receives a visible, non-billable channelLookupError row with status: "notFound", an error code, a message, and a suggested correction.

Which results are charged?

Only resolved recordType: "channel" rows are charged as channel profiles. Lookup-status rows are free. The small Actor-start event is charged once per run.

How many channels can one run process?

Up to 50 unique channel inputs. Every accepted input produces one visible Dataset outcome.

Is a YouTube Data API key required?

No.

Support

If an input resolves incorrectly or a public field is unexpectedly missing, open an issue from the Actor's Apify page and include:

  • the Actor run URL or run ID;
  • the exact channel input;
  • the expected value;
  • the Dataset row or field that was returned.

Do not include your Apify API token, account credentials, or other secrets. YouTube changes public page data over time, so a reproducible run link is the fastest way to investigate.

Responsible use

Use the Actor only for lawful processing of publicly accessible information. Respect YouTube's terms, applicable privacy and data-protection requirements, and the rights of channel owners. 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.