YouTube Scraper: Likes & Dislikes, Comments, Viral Moments avatar

YouTube Scraper: Likes & Dislikes, Comments, Viral Moments

Pricing

from $2.00 / 1,000 results

Go to Apify Store
YouTube Scraper: Likes & Dislikes, Comments, Viral Moments

YouTube Scraper: Likes & Dislikes, Comments, Viral Moments

Scrape YouTube search, channels (by name), playlists and videos with no API key: views, exact likes, estimated dislikes (Return YouTube Dislike, opt-in), top comments in each row, hashtags, links. No login. Export to CSV, JSON or Excel, or use via MCP in Claude and Cursor.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Yugenox Corp

Yugenox Corp

Maintained by Community

Actor stats

0

Bookmarked

34

Total users

15

Monthly active users

a day ago

Last modified

Share

▢️ YouTube Scraper β€” Videos, Transcripts, Channels, Comments & Dislikes

Pull YouTube data in bulk β€” without the API limits, without logging in. Search for videos, scrape an entire channel by name, get full transcripts, comments, likes and dislikes, chapters, and full metadata β€” or find creators to work with, complete with their Instagram and TikTok handles. Clean, structured data ready for Excel, JSON, your app or your LLM. 🎬

🚫 No login Β· πŸ”‘ No API key Β· πŸ€– No setup Β· ⚑ Fast Β· 🌍 Any video, channel, or topic Β· πŸ’΅ Pay only for the rows you get

πŸ›‘οΈ Proxy: transcripts and full video details need Apify Residential proxies (the default); if your Apify plan doesn't include them, the run still returns videos through Apify datacenter proxies and its status message tells you what came back empty.


🧭 What can it do?

There are 7 simple ways to use it. Pick whichever fits β€” you can even mix them in one run.

You want…Use this inputExample
πŸ”Ž Videos about a topicSearch terms"lofi hip hop"
πŸ“Ί A creator's whole channel (videos, Shorts or Live)Channels"Fireship"
🎧 A playlist's videosStart URLsa playlist link
#️⃣ A hashtag's videosHashtags"lofi"
πŸ“Ή Specific videosStart URLsone or more video links
πŸ§‘β€πŸŽ€ Creators to partner with (one row per channel)Find creators"home workout"
🩳 ShortsSearch terms + includeShorts"funny cat shorts"

Every video comes back with the same rich data: title, views, likes, dislikes, duration, upload date, channel, subscribers, description, hashtags, description links, chapters, the true comment total and engagement metrics β€” plus optional transcripts, comments, and the Video Intelligence pack (most-replayed moments, music, sponsors).

Narrow any search with upload date, length, features (HD, subtitles, Creative Commons, 4K, live…), country and language filters, and sorting (relevance, upload date, view count, rating).


πŸš€ Quick start (30 seconds)

  1. Pick an input β€” type a search term, a channel name, or paste a YouTube link.
  2. Set Max items β€” how many videos you want.
  3. (Optional) Turn on transcripts, comments, dislikes, or the Video Intelligence pack.
  4. Click Start. Download as JSON, CSV, or Excel.

That's it. No account, no keys, nothing to configure.


πŸ“– The ways to use it β€” with examples

1️⃣ Search for videos πŸ”Ž

Type keywords, just like the YouTube search bar. Get the top matching videos.

{ "searchTerms": ["apify tutorial"], "maxItems": 50 }

2️⃣ Scrape a whole channel πŸ“Ί (great for creators!)

Just type the channel name β€” no URL needed. Get every video with full stats. Perfect for tracking your own channel or a competitor's.

{ "channels": ["Fireship"], "maxItems": 100 }

You can also use an @handle or a channel URL, pick the Shorts or Live tab, sort by popular or oldest, and only take videos published after a date:

{ "channels": ["@RickAstleyYT", "MrBeast"], "channelContent": ["videos", "shorts"], "channelSortBy": "popular", "maxItems": 200 }

Max items applies to each tab. The example above asks for two tabs, so each channel returns up to 200 videos plus up to 200 Shorts β€” up to 400 rows per channel, 800 for the two. Pick one tab, or lower Max items, to keep a run smaller.

Channel rows also carry an outlier score β€” the video's views divided by the channel's median views. 2.5 means "this video did 2.5x the channel's normal". Great for spotting what worked.

3️⃣ Scrape a playlist or a hashtag 🎧 #️⃣

Playlists go in Start URLs; hashtags have their own Hashtags field ("lofi", "#lofi" or a youtube.com/hashtag/… link). Hashtag rows carry hashtagVideoCount, the hashtag's total.

{ "startUrls": ["https://www.youtube.com/playlist?list=PLxxxxxx"], "hashtags": ["lofi"], "maxItems": 100 }

4️⃣ Scrape specific videos πŸ“Ή

{ "startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"] }

5️⃣ Get transcripts πŸ“

Turn on Include transcripts and every video gets its full transcript text, plus subtitles as SRT (or WebVTT, plain text, or timed segments). Metadata + transcript + dislikes, in one row: $3.50 per 1,000 videos with a transcript ($2.00 for the row + $1.50 for the transcript). A video without captions costs only the row.

By default you get the video's main track (the manual subtitles in the spoken language, else the auto-generated ones). List languages in Subtitle languages to get those tracks instead, or use "*" for every track (a TED talk has 20+). availableSubtitles always lists every track.

{ "startUrls": ["https://www.youtube.com/watch?v=PkZNo7MFNFg"], "includeSubtitles": true, "subtitleLanguages": ["en"], "subtitleFormat": "segments" }

6️⃣ Find creators πŸ§‘β€πŸŽ€ (influencer & lead lists)

Type what the creators talk about. You get one row per channel: country, joined date, total views, subscribers, every link from their About page, their Instagram and TikTok usernames, whether they list a business email, any email they published publicly, and how active they are (last upload, uploads in the last 30 days, median views).

{ "findCreators": ["home workout"], "maxItems": 50, "minSubscribers": 10000, "maxSubscribers": 500000, "creatorCountries": ["US", "CA"], "activeWithinDays": 30 }

Tip: feed the instagramUsername column straight into our Instagram Scraper to get their Instagram posts and engagement too.

βž• Add comments, dislikes and insights to any of the above πŸ’¬πŸ‘Žβœ¨

{
"channels": ["Fireship"],
"maxItems": 50,
"maxComments": 20,
"maxReplies": 5,
"includeDislikes": true,
"includeVideoInsights": true
}

βš™οΈ All input options

FieldWhat it doesDefault
πŸ”Ž Search termsKeywords to search on YouTubeβ€”
πŸ“Ί ChannelsChannel name, @handle, or URL β†’ all their videosβ€”
πŸ”— Start URLsVideo, channel, playlist, or search linksβ€”
#️⃣ HashtagsHashtags (lofi, #lofi or a hashtag link) β†’ the videos on the hashtag pageβ€”
πŸ§‘β€πŸŽ€ Find creatorsKeywords β†’ one row per matching channelβ€”
πŸ”’ Max itemsHow many videos per search / channel tab / playlist / hashtag (channels per creator keyword). Channels: per tab β€” 2 tabs = up to 2Γ— Max items per channel10
🧾 Full video details (enrich)Full metadata for every video. Off = fast search-feed fields onlyon
πŸ“ Include transcriptsTranscript text + subtitles (manual and auto-generated). +$0.0015 per video that comes back with transcript textoff
🌐 Subtitle languagesLanguages to download, in order of preference. Empty = the main track (the one YouTube's player turns on); * = every trackmain track
πŸ—‚οΈ Subtitle formatsrt, vtt, text or segmentssrt
🏷️ Full details (includeDetails)Category, tags, exact duration (Shorts too), exact publish timeoff
πŸ‘Ž Include dislikesAdd an estimated dislike countoff
πŸ’¬ Max comments per videoNumber of top comments to pull (0 = none). commentsTruncated says when fewer came back than YouTube had0
↕️ Comment ordertop or newesttop
🧡 Max replies per commentReply threads, nested under each comment. Most-replied comments first, up to 20 reply pages (~200 replies) per video0
✨ Video Intelligence packMost-replayed moments, music credits, sponsor signalsoff
πŸ”— Include related videosWith the pack: the related videos YouTube showsoff
πŸ“… Upload dateany, hour, today, week, month, yearany
↕️ Sorting orderrelevance, date, views, ratingrelevance
⏱️ Video lengthany, under4, 4to20, over20any
πŸŽ›οΈ Video featureshd, subtitles, creativeCommons, 3d, live, purchased, 4k, 360, location, hdr, vr180none
πŸ”­ Deep searchKeep paging each search term until Max items unique videos (see below)off
🩳 Include ShortsAlso collect YouTube Shorts from search resultsoff
πŸ”’ Max ShortsCap Shorts per search (0 excludes them)no cap
πŸ“‘ Max live streamsCap live streams per search (0 excludes them)no cap
🌍 Country / πŸ—£οΈ LanguageRank results for a country; show search results in a languageUS / en
πŸ“Ί Channel tabsvideos, shorts, streamsvideos
↕️ Channel sortnewest, popular, oldestnewest
πŸ“† Published afterOnly channel videos from this date on (2026-08-01, 30 days, 12 hours, 7d). A value the actor can't read stops the run before anything is scrapedβ€”
πŸͺͺ Add channel About data to videosChannel country, joined date, total views, links, socials on every video rowoff
πŸ‘₯ Min / Max subscribers, 🌎 Creator countries, ⏳ Active within (days), πŸ“‡ Only creators with contact infoCreator finder filtersβ€”
πŸ›‘οΈ Proxy / Proxy strategySee "Which proxy should I use?" belowResidential / configured
🚫 Save "not found" rows in the dataset (errorRowsInDataset)Also save inputs and videos that return nothing as dataset rows with error and note, the way earlier versions did. Each such row is billed as one result (see "When an input returns nothing")off

(You need at least one of: Search terms, Channels, Start URLs, Hashtags, or Find creators.)

🩳 A note on Shorts

Shorts are off by default in search. YouTube returns them in a separate shelf from normal videos, so turning includeShorts on genuinely changes which videos a search gives you β€” existing runs keep their long-form-only results unless you opt in.

{ "searchTerms": ["funny cat shorts"], "maxItems": 20, "includeShorts": true }

Shorts rows carry isShort: true and a shortsUrl. Note that YouTube stops returning the Shorts shelf when an upload-date filter or a non-default sort order is applied. For a channel's Shorts, use Channel tabs β†’ shorts.

πŸ“… Filtering and sorting examples

{ "searchTerms": ["ai news"], "dateFilter": "week", "sortBy": "date", "maxItems": 50 }
{ "searchTerms": ["python tutorial"], "lengthFilter": "over20", "videoFeatures": ["subtitles"], "maxItems": 100 }
{ "searchTerms": ["λ¨Ήλ°©"], "country": "KR", "language": "ko", "maxItems": 30 }

Search filters apply to search terms only β€” not to direct channel, playlist, or video URLs.

πŸ”­ How deep does a search go?

A plain search term (relevance order, no filters, no Shorts) returns YouTube's first two result pages β€” about 40 videos β€” even with a higher Max items; sorted or filtered searches keep paging toward Max items. That is the depth this actor has always had, so existing runs return (and cost) the same. For a large keyword pull, turn on Deep search: every term then pages until Max items unique videos, and you are billed for each of those rows.

{ "searchTerms": ["drake"], "maxItems": 500, "deepSearch": true }

πŸ” Daily monitoring

Schedule the actor with Published after set to a relative age such as 2 days, and each run returns only the new videos from the channels you follow. Older videos are skipped, and you are not charged for them. A channel with nothing new returns no rows at all, so a quiet day costs only the run start.

With Full video details off, only the channel page's relative dates ("2 weeks ago") are known. A video is then returned only when that date is surely inside the window β€” one whose date could fall on either side of the cutoff, or that has no date (the Shorts tab), is skipped. Keep Full video details on for exact dates.


πŸ“€ What you get (output)

One clean row per video. Here's a real example:

{
"id": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video)",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
"viewCount": 1792628321,
"likes": 19243762,
"dislikes": 514894,
"duration": "3:33",
"date": "Oct 24, 2009",
"channelName": "Rick Astley",
"channelUrl": "https://www.youtube.com/@RickAstleyYT",
"numberOfSubscribers": 4520000,
"text": "The official video for β€œNever Gonna Give You Up”...",
"publishedAt": "2009-10-24",
"hashtags": ["RickAstley", "NeverGonnaGiveYouUp"],
"descriptionLinks": [
{ "url": "https://RickAstley.lnk.to/_listenYD", "text": "Listen" }
],
"commentsCount": 3,
"comments": [
{
"author": "@YouTube",
"text": "can confirm: he never gave us up",
"likes": 268000,
"replyCount": 412,
"publishedTime": "2 years ago"
}
],
"fromYTUrl": "https://www.youtube.com/@RickAstleyYT",
"scrapedAt": "2026-07-14T12:00:00.000Z"
}

πŸ“‹ Every field explained

FieldDescription
πŸ†” id, πŸ”— urlVideo ID and link
🏷️ titleVideo title
πŸ–ΌοΈ thumbnailUrlHighest-res thumbnail
πŸ‘€ viewCountNumber of views
πŸ‘ likesExact like count
πŸ‘Ž dislikesEstimated dislikes (only if enabled)
⏱️ durationVideo length (e.g. 3:33)
πŸ“… dateUpload date, as YouTube displays it (e.g. Oct 24, 2009)
πŸ“† publishedAtUpload date normalised to YYYY-MM-DD (null for relative dates)
#️⃣ hashtagsHashtags parsed from the description
πŸ”— descriptionLinksLinks in the description as { url, text } β€” socials, contact, sponsors
🩳 isShort, shortsUrlPresent on Shorts
πŸ“Ί channelName, channelUrl, channelIdChannel info
πŸ“ˆ numberOfSubscribersChannel subscriber count
βœ… isChannelVerified, πŸ–ΌοΈ channelAvatarUrl, 🀝 collaboratorsVerified badge, channel picture, co-creators on collab videos
πŸ“ textFull video description
πŸ“‘ chaptersChapters as { title, startSeconds }
πŸ’¬ totalCommentsCountThe video's real comment total
πŸ“Š engagementRate, likeToViewRatio, viewsPerDay, daysSincePublishedEngagement metrics, computed from the row. viewsPerDay uses the video's exact age (hours count); the three rates are null while a video is live or upcoming (YouTube then shows people watching/waiting, not views)
πŸ—’οΈ hasTranscriptWhether the video has a transcript
🏷️ category, keywords, durationSeconds, publishedAtExact, isFamilySafe, isUnlisted(with Full details)
πŸ’¬ commentsCount, comments, commentsTruncatedComments: author, text, likes, replies, time, pinned / hearted / verified flags, replies (with Max replies). commentsTruncated: true = the list stopped early (a page YouTube would not serve, the run's deadline, or the size limit below)
πŸ—£οΈ availableSubtitles, subtitlesSubtitle tracks and their content (with transcripts)
πŸ“ transcript, transcriptLanguage, transcriptIsAutoGeneratedFull transcript text (with transcripts)
πŸ”₯ mostReplayed, viralMomentsMost-replayed graph, and the top moments with the words spoken and a clip link (Video Intelligence)
🎡 musicCreditsSongs credited in the video (Video Intelligence)
🀝 sponsorSignalsLikely sponsorship, brands, promo codes, affiliate links β€” a heuristic read of the description and chapters, not a disclosure (Video Intelligence)
πŸ”— relatedVideosRelated videos (Video Intelligence + related)
🎯 outlierScore, channelMedianViewsViews ÷ the channel's median views (channel rows)
#️⃣ hashtagVideoCountHow many videos the hashtag has (hashtag rows)
πŸͺͺ channelCountry, channelJoinedDate, channelTotalViews, channelLinks, channelSocialLinks, channelHasBusinessEmail, channelPublicEmails(with Add channel About data)
βœ‚οΈ truncated, truncatedFieldsOnly on a row that would pass Apify's 9 MB item limit: it was trimmed to fit, dropping (in this order) replies, subtitleFormats (vtt/text/segments β€” srt stays), subtitles (all but the transcript's track), comments (the tail). A row that still can't fit is listed in FAILED_INPUTS as ITEM_TOO_LARGE and not charged
πŸ”— fromYTUrlWhere this result came from
πŸ“… scrapedAtWhen it was scraped

Creator rows (recordType: "channel", from Find creators) carry channelName, handle, url, country, joinedDate, numberOfSubscribers, totalViews, totalVideos, socialLinks, instagramUsername, tiktokUsername, hasBusinessEmail, publicEmails, lastUploadAgo, uploadsLast30Days and recentMedianViews. uploadsLast30Days is approximate: it counts the latest uploads whose YouTube date ("3 weeks ago") is surely within 30 days β€” "1 month ago" means 30–59 days, so it is not counted.

Use the Transcripts, Creators and Video Intelligence tabs of the dataset for ready-made views.

🚫 When an input returns nothing

A dead end doesn't fail your run and isn't charged. It goes into the ERRORS record of the run's key-value store (Storage β†’ Key-value store in the Console), and the run's status message counts it, for example Done β€” 57 items; 1 not found or empty (CHANNEL_DOES_NOT_EXIST), see ERRORS, not charged. Each entry has the input or url, an error code and a note:

errorWhat happened
NO_RESULTSThe search returned no videos
DATE_FILTER_TOO_STRICTNo videos match the upload-date, length or feature filters you chose
CHANNEL_DOES_NOT_EXISTNo channel matches that name, handle or URL, or it was terminated
CHANNEL_HAS_NO_VIDEOSThe channel exists but has no public videos on the tabs you picked
NO_VIDEOSThe playlist or hashtag page is empty
NO_VALID_START_URLSThe link isn't a YouTube video, channel, playlist or search URL (a hashtag link goes in Hashtags)
NOT_FOUNDThe page couldn't be loaded
VIDEO_UNAVAILABLEThe video is private, deleted or doesn't exist

Earlier versions saved these as dataset rows and billed each as one result. If your integration reads them from the dataset, turn on Save "not found" rows in the dataset (errorRowsInDataset) to keep that behaviour; those rows are then billed as results again.

Inputs YouTube temporarily blocked even after several retries are listed separately, in FAILED_INPUTS, and aren't charged either (see the FAQ). A playlist whose paging stops partway (a later page blocked or broken) keeps the videos it already listed (normal results) and is listed in FAILED_INPUTS too (INCOMPLETE_LISTING or TEMPORARILY_BLOCKED, with how many it listed), so a short playlist is never silent.

Every run also writes a RUN_REPORT record to the same key-value store: how it ended (status: ok, partial-timeout, charge-limit, all-inputs-failed, input-error, no-input, no-proxy-access, proxy-denied or crashed), the status message, items saved, inputs completed, skipped inputs and "not found" entries counted by code, and the run's timeout. A run that can't scrape anything (every input blocked, an unreadable Published after, no proxy access) still finishes as Succeeded, with 0 items, no result charges, and the reason and the fix in its status message β€” check the status message or RUN_REPORT, not only the run status.


πŸ’΅ Pricing

You pay per result. There's no subscription and no minimum, and it's the same price on every Apify plan.

EventWhen it's chargedPrice
ResultEach row in your dataset: one video, or one channel from Find creators$0.002 ($2.00 per 1,000)
TranscriptEach video that comes back with transcript text. Only with Include transcripts on$0.0015 ($1.50 per 1,000)
Actor startOnce per run, per GB of memory (1 GB is enough)$0.00005

Included in the result price: comments and replies (no per-comment fee), estimated dislikes, chapters, engagement metrics, full details, channel About data, the Video Intelligence pack, search filters and sorting.

Never charged:

  • a video without captions, even with Include transcripts on: it's a normal result with transcript: null, and no transcript event;
  • inputs and videos that return nothing (see "When an input returns nothing" above);
  • inputs YouTube temporarily blocked (FAILED_INPUTS), and rows too big to save;
  • videos older than Published after.

Examples:

JobCost
100 videos from one channel$0.20
100 videos with 20 comments each and estimated dislikes$0.20
100 videos with transcripts (all captioned)$0.35
1,000 videos with transcripts, 800 of them captioned$2.00 + $1.20 = $3.20

Set a maximum charge on the run and the actor stops when it's reached. It never scrapes a row it can't bill, and a video with a transcript is only delivered if the budget covers both events.


πŸ’‘ Who is this for?

  • πŸŽ₯ Creators β€” track your channel's performance, or study competitors' videos, views, and engagement
  • πŸ“£ Marketers & brands β€” find influencers with contact info, monitor mentions, analyze what's trending
  • βœ‚οΈ Clip & Shorts editors β€” find the moments viewers rewatch, with the exact words and a timestamped link
  • πŸ”¬ Researchers β€” study topics, opinions, and comment sentiment at scale
  • πŸ€– AI & data teams β€” feed transcripts, metadata and comments into your pipelines
  • 🏒 Agencies β€” build reports, creator lists and dashboards from live YouTube data

❓ FAQ

Do I need a YouTube account or API key? No. It uses YouTube's public data. Nothing to log in to, nothing to set up.

Can I really scrape a channel just by its name? Yes! Type "Fireship" (or an @handle, or a channel URL) in the Channels field and it pulls all their videos with full stats. This is the easiest way to do channel analytics.

Can it get dislikes? Yes, as an estimate. YouTube removed public dislikes in 2021, so we use the community Return YouTube Dislike database β€” accurate for older videos, a solid estimate for newer ones. Turn on Include dislikes to add it.

Can I get comments? Yes. Set Max comments per video to how many you want (e.g. 20). Each comment includes the author, text, likes, reply count, time, and whether it's pinned or hearted by the creator. Set Max replies per comment to get the reply threads too. Comments are included in the row price β€” no per-comment fee.

Can I get transcripts? Yes. Turn on Include transcripts: you get the full transcript text in transcript and the subtitles in subtitles (SRT by default). Pick languages with Subtitle languages. Each video that comes back with transcript text costs $0.0015 on top of its result ($3.50 per 1,000 videos in total). Videos without captions return transcript: null, with no error and no transcript charge.

What if a channel doesn't exist or a search finds nothing? The run still succeeds and you aren't charged for it. The input is listed in the ERRORS record of the run's key-value store with a code such as CHANNEL_DOES_NOT_EXIST or NO_RESULTS, and the status message says how many there were. See "When an input returns nothing".

Where do creator emails come from? Only from what the creator published publicly on their channel β€” the About description and links. We also tell you whether YouTube lists a business email for the channel (hasBusinessEmail), but we never reveal hidden business emails: that needs a signed-in account and a captcha, and this actor never signs in.

Why was one of my inputs skipped? Once in a while YouTube temporarily blocks a request even after several retries on fresh IP addresses. Instead of failing your whole run, the actor skips that one input, keeps everything else, and lists it in the FAILED_INPUTS record of the run's key-value store (with the time and the reason). You are not charged for skipped inputs. Just run those again later.

How many videos can I scrape? Thousands per input β€” for search terms, turn on Deep search to go past the first ~40 results. Very large runs may fluctuate depending on YouTube. If your run is about to hit its timeout, the actor stops a little early and saves everything it has, instead of timing out β€” with short timeouts too (a 30-second run stops starting new videos at about 22 seconds), and the status message tells you when the timeout cut the run short.

Which proxy should I use? Keep the default (Apify Residential). The Proxy strategy option decides where requests go: configured (default) sends everything through that proxy; auto sends YouTube's JSON endpoints through fast Apify datacenter proxies and uses your proxy only for the video player, switching back automatically if datacenter IPs get blocked.

My Apify plan has no Residential proxies. Will it still work? Yes. The run switches to Apify datacenter proxies on its own and still returns videos, channels, comments and search results. YouTube often refuses transcripts and full video details on datacenter IPs, so those can come back empty; the status message says how many videos were affected. To get them, enable residential proxies in Apify Console β†’ Proxy, or set the Proxy input to your own residential proxy URLs. If no proxy can be used at all, the run stops right away with 0 results (nothing billed for results), and the status message says what to change.

What does a run cost? $0.002 per result row ($2.00 per 1,000 videos), plus $0.0015 for each video that comes back with transcript text when Include transcripts is on, plus a start fee of $0.00005 per GB of memory. Comments, replies, dislikes, chapters and the Video Intelligence pack are included in the row price. Inputs that return nothing and temporarily blocked inputs cost nothing. If you set a maximum charge for the run, the actor stops when it's reached β€” it never scrapes data you won't be billed for. Full table: "Pricing" above.


Is it legal to scrape YouTube? This Actor only collects publicly available data: video, channel and comment data that anyone can see on YouTube without signing in. Collecting publicly available data is generally legal, but you're responsible for how you use it. Results can include channel names and, if you request comments, commenters' public channel names, and that counts as personal data. You must follow privacy laws such as GDPR, PIPEDA and CCPA, as well as YouTube's terms. If you're unsure, check with a lawyer. More on this: Is web scraping legal?

What about the creator contact data? The creator finder returns contact details only when the creator published them on their public channel page. That is still personal data under GDPR and PIPEDA: have a lawful basis before you use it (for example, legitimate interest in a relevant business offer), tell people where you got their details, honour opt-outs, and follow anti-spam laws such as CAN-SPAM and CASL.

Does it access any private data? No. Everything comes from pages YouTube shows to any visitor without logging in. It never uses a login, never touches private or restricted accounts, and never reaches password-protected areas.

πŸ”’ Notes

  • Scrapes publicly available data only.
  • Please respect copyright and privacy laws (e.g. GDPR, PIPEDA) when handling personal data like comments and creator contact details.
  • sponsorSignals is a heuristic, not a statement that a video is sponsored.
  • Not affiliated with YouTube.

Questions, a bug, or a feature you'd like? Open an issue on the actor's Issues tab.