YouTube Scraper AIO | Videos, Shorts, Comments, Views/Hour avatar

YouTube Scraper AIO | Videos, Shorts, Comments, Views/Hour

Pricing

from $0.70 / 1,000 videos

Go to Apify Store
YouTube Scraper AIO | Videos, Shorts, Comments, Views/Hour

YouTube Scraper AIO | Videos, Shorts, Comments, Views/Hour

YouTube scraper AIO: channel videos, YouTube Shorts, live, playlists & search with YouTube filters, plus comments. One call per video URL from n8n, Make, Zapier, API or AI agents (MCP). Views, views/hour, outlier score, likes, Most Replayed. Transcripts from Dec. No API key. $1 per 1,000 videos.

Pricing

from $0.70 / 1,000 videos

Rating

0.0

(0)

Developer

Mr Zack

Mr Zack

Maintained by Community

Actor stats

0

Bookmarked

36

Total users

21

Monthly active users

6 hours ago

Last modified

Share

YouTube Scraper AIO — Videos, Shorts, Comments, Channels

One Actor for YouTube data. Give it video URLs, channels (@handles), playlists or search keywords and get clean JSON rows back:

Row typeWhat you getPrice
videotitle, views, likes, comment count, exact publish date, duration, description and its links, hashtags, chapters, "Most replayed" moments, channel + subscribers, views per hour and an outlier score (views ÷ the channel's usual)$0.001 (card) · $0.002 (details)
transcriptthe spoken text of the video: full text, timestamped segments, language, auto-generated or not$0.006 — coming early December 2026
commenttop or newest comments: text, author, likes, replies, link$0.0005
channelchannels of a niche from a keyword (subscribers, uploads per week, median views, About links)$0.002 — live from 5 Nov 2026
channel-summaryfree profile of every scraped channel: median views per format, upload frequency, age, country, linksfree

Channels cover the Videos, Shorts and Live tabs; searches use YouTube's full filter set (upload date, sort, length, 4K / subtitles / Creative Commons, country). No API key, no quota, no browser. Unavailable videos and videos without captions are never charged.

Use it in your automation (n8n, Make, Zapier, API, AI agents)

One video in, everything about it out — one run, a few seconds:

{ "videoUrls": ["https://www.youtube.com/watch?v=kJQP7kiw5Fk"], "maxCommentsPerVideo": 20 }

You get back one detailed video row (details are always on for video URLs) and up to 20 comment rows, all carrying the same videoId. Filter on type in your workflow. That call costs $0.002 + 20 × $0.0005 = $0.012 plus the $0.001 start. From early December 2026 add "includeTranscript": true and the same run also returns the video's transcript row (+$0.006).

  • Any HTTP client: POST https://api.apify.com/v2/acts/tactful_anvil~youtube-channel-shorts-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN> with the input above as the JSON body answers with the rows themselves (Apify API; this endpoint waits up to 300 s — for big channel or search runs start the run asynchronously instead).
  • n8n, Make, Zapier: use Apify's own integration (n8n, Make, Zapier), action "Run an Actor" → tactful_anvil/youtube-channel-shorts-scraper, then read the dataset items.
  • AI agents (Claude, Cursor, ChatGPT…): add Apify's MCP server with this Actor as a tool — https://mcp.apify.com?tools=tactful_anvil/youtube-channel-shorts-scraper (Apify MCP).
  • Whole channel or a search instead of one URL: { "channels": ["@veritasium"], "contentType": "videos", "maxVideos": 20, "includeDetails": true } — exact details of the latest 20 videos (from December, "includeTranscript": true adds each one's transcript).

Transcripts: human captions are preferred over auto-generated ones; set transcriptLanguages (e.g. ["es", "en"]) for other languages — a video without them returns its own language. Transcripts in this Actor are coming in early December 2026, when their price can go live; until then the option is switched off (runs still deliver your videos, without transcripts and without charging for them). Need transcripts today? Our YouTube Transcript Scraper has them now at the same $0.006 per transcript.

Who uses this

  • Automation & AI builders — feed a video URL, get its details and comments in one call (recipe above) — and from early December 2026 its transcript too, to summarise, translate, search or repurpose in the next step.
  • Clippers & short-form editors — rank a brand's recent videos by viewsPerHour, then open the mostReplayed links to land on the moments viewers rewatch (recipes below).
  • Creators & channel managers — find competitors' outliers: every channel row has outlierScore (views ÷ that channel's median for the same format) and the free summary lists topOutliers.
  • Niche & topic researchers — search a topic with "sortResultsBy": "outlierScore": every result is scored against its own channel, so a 10,000-subscriber channel whose video got 50× its usual views comes first (recipe below).
  • Agencies monitoring channels — schedule onlyNew runs; each run returns only the uploads since the last one, already ranked if you set sortResultsBy.
  • Influencer outreach & lead lists — "searchType": "channels" with minSubscribers / maxSubscribers lists the channels of a niche (e.g. 10K–200K subscribers) with how often they upload, how many views they really get and the links in their About panel (recipe below).
  • Sponsors & influencer marketers — vet a channel before a deal from one free summary row: subscribers, median views for long videos vs Shorts, videos and Shorts per week, days since the last upload, channel age, country, and the links in its About panel.
  • Brand & product researchers — pull the newest comments (commentsSort: "newest"), each with a direct commentUrl; detailed rows list the links in each description (descriptionLinks — sponsors, affiliate links, socials).
  • Stream clippers — contentType: "live" lists a channel's past streams with views and length, what is live now (with viewers) and what is scheduled.
  • Data teams — export everything; publishedAtEstimated tells you which dates are exact and which come from "3 weeks ago".

For clippers (Whop Content Rewards and other clipping campaigns)

Campaigns pay per view of clips cut from a brand's own videos. Two recipes that turn this Actor into a "what do I clip first" list:

Recipe 1 — the brand's fastest-growing videos of the last 30 days, with the moments to cut.

{ "channels": ["@BOXABL"], "contentType": "videos", "oldestPostDate": "30 days", "sortResultsBy": "viewsPerHour", "maxVideos": 10, "includeDetails": true }

Row 1 (rank: 1) is the video gaining views fastest. With details, mostReplayed gives up to three segments viewers rewatch (startSec–endSec, with a &t= link that opens the video right there) and chapters gives the creator's (or YouTube's automatic) chapter list. YouTube only shows the "Most replayed" graph on videos with enough views, so the list can be empty; the opening seconds are never reported (every viewer starts at 0:00). If the campaign hands out a playlist of approved videos, put it in playlistUrls instead of channels.

Recipe 2 — Shorts about the brand from this week, ranked by what is working right now.

{ "searchQueries": ["boxabl"], "contentType": "shorts", "uploadedWithin": "week", "sortResultsBy": "viewsPerHour", "maxVideos": 20 }

These are other people's Shorts about the same brand: the titles show which hooks get views, channelName and channelSubscribers show who is posting them. Use "sortResultsBy": "views" for the biggest ones of the week instead.

Recipe 3 — long podcasts and streams to clip from.

{ "channels": ["@lexfridman"], "minDurationSec": 3600, "oldestPostDate": "90 days", "sortResultsBy": "viewsPerHour", "maxVideos": 5, "includeDetails": true }

Only videos of an hour or more (the Shorts tab is skipped automatically), fastest-growing first, each with its mostReplayed segments. Add "includeHeatmap": true for YouTube's whole "Most replayed" graph (about 100 points per video).

Schedule recipe 1 daily with "onlyNew": true to get only the brand's new uploads. Looking for campaigns to join? See our Whop Content Rewards Scraper. Need the words spoken in a video? Add "includeTranscript": true (from early December 2026) — or use our YouTube Transcript Scraper today.

Find breakout videos in a niche (outliers across channels)

{ "searchQueries": ["home espresso"], "contentType": "videos", "videoLength": "medium", "sortResultsBy": "outlierScore", "maxVideos": 15 }

Each search result is compared with its own channel: the Actor reads the first page of that channel's videos (or Shorts) tab, for free, and sets outlierScore = views ÷ that channel's median (channelMedianViews), plus channelSubscribers. In a real run on 21 Oct 2026 the top row was an 11,400-subscriber channel whose video had 1.07 M views against a usual 1,250 (score 858). Set "searchOutliers": true to get the scores but keep YouTube's order. One extra free request per channel (up to 100 channels per run); nothing extra is charged. The Console view Niche outliers shows these columns.

{ "searchQueries": ["home espresso"], "searchType": "channels", "maxChannels": 50, "minSubscribers": 10000, "maxSubscribers": 200000 }

Uses YouTube's own Channel search filter and returns one row per unique channel: name, handle, channelId, url, subscriberCount, verified, description, avatar — and, free, from the channel's first Videos (and Shorts) page and its About panel: videoCount, medianViewsVideos, medianViewsShorts, videosPerWeek, daysSinceLastUpload, lastUploadAt, topVideoTitle / topVideoViews / topVideoUrl, country, joinedDate, channelAgeDays, totalViews, links, hasBusinessEmail (whether a business email is listed — the address itself is behind YouTube's sign-in and is not collected). Rows keep YouTube's relevance order (position). Each delivered channel is one channel event ($0.002); repeats (YouTube repeats channels across result pages and queries), channels outside your subscriber range and — with onlyNew — channels delivered by an earlier run are skipped free. searchCountry works here too. Set "channelDetails": false for the search cards only (faster, same price). The Console view Channels found (channel search) shows these columns. Video filters (uploadedWithin, videoLength, minViews…) do not apply to channel search.

Input

FieldDescription
channelsChannel URLs, @handles or UC… ids.
searchQueriesYouTube searches.
searchTypevideos (default — video / Shorts rows, as always) or channels (one row per unique channel, see above).
maxChannelsChannel search: unique channels per query (default 20, max 500).
minSubscribers, maxSubscribersChannel search: free subscriber range, applied before charging. Channels that hide their count are skipped when a limit is set.
channelDetailsChannel search: free details per channel (default on; 2–3 requests per channel, up to 250 channels per run).
videoUrlsVideo URLs/IDs → details (and comments).
playlistUrlsPlaylist URLs or PL… ids. Each video is a normal Video row with its own channel. YouTube gives our client the first page of a playlist (up to 100 videos).
contentTypeboth (default) / videos / shorts / live / all (videos + Shorts + live). For searches, live = streams live right now.
maxVideosPer channel tab, per search type and per playlist (max 1000).
channelSortlatest / popular / oldest — YouTube's own order of each channel tab.
uploadedWithin, sortBySearch filters: hour/today/week/month/year × relevance/upload_date/view_count/rating. Every combination is now sent as asked (before 0.1.10, "this year" + upload date and any date + rating silently dropped the date).
videoLengthany (default) / short (under 4 min) / medium (4–20 min) / long (over 20 min). Searches use YouTube's own length filter; channel tabs and playlists are filtered here, free, before charging. Medium/Long skip Shorts entirely.
minDurationSec, maxDurationSecExact length bounds in seconds, every source, free (e.g. 3600 = only videos of an hour or more).
searchFeaturesYouTube's search features, all must match: live, 4k, hd, subtitles, creative_commons, 360, vr180, 3d, hdr, location, purchased.
searchCountryTwo-letter country searches run from (GB, DE, IN…), like YouTube's Location setting. Default US.
minViewsFree pre-filter.
oldestPostDateOnly videos published on or after this day (UTC). 2026-09-01 or relative 30 days / 2 weeks / 3 months (best for schedules). Free filter before charging; latest-first channel tabs stop paging at the date.
maxScanHow many cards may be scanned to find maxVideos matches with minViews / oldestPostDate (default 10 × maxVideos, 50–2000). With sortResultsBy, setting it ranks the best maxVideos out of this many.
sortResultsBynone (YouTube order, default) / viewsPerHour / views / newest / outlierScore. Ranked here, for free, before maxVideos and before charging, across the whole run; rows get rank. outlierScore works for searches and playlists too (see above).
searchOutliersOutlier score for search and playlist results without re-ranking (1 free request per channel, up to 100 per run).
includeDetailsExact views/likes/comments/date/description (with its links), chapters and "Most replayed" per video.
includeHeatmapWith details: the full "Most replayed" heatmap per video. Same price.
shortsDateLookupsFree date lookups per run (default 400): Shorts dates, and exact dates for videos close to oldestPostDate.
maxCommentsPerVideoComments per video (requires details).
commentsSorttop (default) or newest.
includeChannelSummaryFree channel-summary row per channel (default on).
onlyNewMonitor mode: only videos (or, with channel search, channels) not delivered by an earlier run in your account.
{ "searchQueries": ["air fryer recipe"], "contentType": "shorts", "uploadedWithin": "week", "sortBy": "view_count", "maxVideos": 100, "includeDetails": true, "maxCommentsPerVideo": 20 }

Output

video (channel card):

{ "type": "video", "position": 1, "videoId": "gTKS8SAwUzE", "title": "We Survived The Most Extreme Places On Earth", "url": "https://www.youtube.com/watch?v=gTKS8SAwUzE",
"viewCount": 49000000, "publishedText": "1 day ago", "publishedAt": "2026-09-06T10:59:05Z", "durationSec": 1408, "isShort": false,
"channelName": "MrBeast", "channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA", "channelHandle": "@MrBeast", "channelSubscribers": 516000000,
"hoursSincePublished": 24, "viewsPerHour": 2041666.7, "viewsPerDay": 49000000, "source": "channel" }

video with includeDetails adds: likeCount, commentCount, exact publishedAt (publishedDateText), description, descriptionLinks, hashtags, channelSubscribers, channelVerified, likeRatePct, commentsPer1kViews, isPremiere, wasLive, chapters, mostReplayed, collaborators (and heatmap with includeHeatmap).

New fields in 0.1.10 (all free, added to rows you already get; default runs are unchanged):

FieldRowMeaning
outlierScore, channelMedianViewssearch / playlist video (with searchOutliers or sortResultsBy: outlierScore)Views ÷ the median views of the video's own channel (first page of its Videos or Shorts tab, ≥ 5 videos needed, else null).
channelSubscriberssearch / playlist video (same option)Filled from the same free channel page when the search card lacks it.
descriptionLinksdetailed video[{ text, url, domain }] — every external link in the description (the real target, not YouTube's redirect), once each. Sponsors, affiliate links, merch, socials.
channelVerifieddetailed videoThe channel has YouTube's verified (or official artist) badge.
heatmapdetailed video (with includeHeatmap)YouTube's whole "Most replayed" graph: [{ startSec, endSec, intensity }], intensity 0–1 (1 = the most replayed moment). [] when YouTube shows no graph.

New fields in 0.1.9 (all free, added to rows you already get):

FieldRowMeaning
outlierScorechannel videosViews ÷ median views of the same channel and format (videos / Shorts / live) among the cards scanned in this run. Needs ≥ 5 videos to compare, else null. 10 = ten times the channel's usual. With channelSort: popular the baseline is the channel's top videos, so scores read lower.
rankvideo (with sortResultsBy)1 = best by your chosen metric across the whole run; the dataset is written in this order.
channelTabchannel videosvideos, shorts or live.
publishedAtEstimatedvideotrue = estimated from "3 weeks ago" text, false = exact day from the video page, null = unknown.
isLive, isUpcoming, wasLive, liveViewers, scheduledStartTextvideoLive state. A live-now stream has viewCount: null on channel tabs and liveViewers = people watching; search results keep YouTube's number in viewCount and add liveViewers.
playlistId, playlistTitleplaylist videosWhere the row came from.
mostReplayeddetailed videoUp to 3 { startSec, endSec, intensity, url } from YouTube's "Most replayed" graph, strongest first (intensity 1 = the peak). Empty when YouTube shows no graph.
chapters, chaptersSourcedetailed video[{ startSec, title }] from the chapter bar (creator or YouTube auto), or from timestamps in the description (description).
collaboratorsdetailed video[{ name, channelId, handle, subscribers }] on collaboration videos; the first one fills channelName/channelSubscribers.
commentUrlcommentLink straight to the comment.
medianViewsVideos, medianViewsShorts, medianViewsLivechannel-summaryMedian views per format of the cards scanned (the outlierScore baseline). medianViews keeps its old meaning (rows returned).
topOutlierschannel-summaryUp to 5 { videoId, title, viewCount, outlierScore, isShort } with score ≥ 3.
videosPerWeek, shortsPerWeek, lastUploadAt, daysSinceLastUploadchannel-summaryUpload frequency from the dated rows returned (≥ 3 needed for a rate). In detailed runs the summary is written after the details, from exact dates.
joinedDate, channelAgeDays, totalViews, country, links, hasBusinessEmailchannel-summaryFrom the channel's About panel (1 extra free request per channel). hasBusinessEmail only says YouTube lists one — the address itself sits behind a sign-in and is not collected.

comment:

{ "type": "comment", "videoId": "kJQP7kiw5Fk", "commentId": "Ugz…", "text": "who's here after 9 billion??", "author": "@YouTube", "authorChannelId": "UC…", "authorIsVerified": true,
"likeCount": 78000, "replyCount": 973, "publishedText": "4 months ago", "publishedAt": "2026-05-10T…" }

transcript (with includeTranscript, $0.006, right after its video row):

{ "type": "transcript", "status": "ok", "videoId": "kJQP7kiw5Fk", "url": "https://www.youtube.com/watch?v=kJQP7kiw5Fk", "title": "Luis Fonsi - Despacito ft. Daddy Yankee",
"channelName": "Luis Fonsi", "channelId": "UCxoq-PAQeAdk_zyg8YS0JqA", "language": "en", "languageName": "English - en", "isAutoGenerated": false,
"availableLanguages": ["en", "en-US", "ja", "es", "es-ES"], "transcript": "♪ ♪ ♪ AAAAY ♪ ♪ FONSI, ♪ ♪ D.Y. ♪ …", "wordCount": 653, "charCount": 2990, "segmentCount": 90,
"segments": [{ "start": 0.433, "duration": 27.1, "text": "♪ ♪" }, "…"], "transcriptSource": "relay" }

Videos without captions (or whose captions YouTube refused) get a free row: "status": "no-captions" or "failed", "transcript": null, plus error and availableLanguages.

channel-summary (free): subscriberCount, videoCount, videosScanned, shortsScanned, medianViews, avgViews, topVideoId/Title/Views, medianViewsPerHour, outperformers[], plus the 0.1.9 profile fields above.

The Console has seven table views of the same dataset: Videos, Clip finder (ranked), Niche outliers (search & playlist), Channels (free summary), Channels found (channel search), Comments and Transcripts.

Unavailable videos / unresolvable channels are pushed as type: "failed" and are never charged.

Pricing (pay per event)

EventPrice
Video card$0.001
Video (detailed)$0.002
Comment$0.0005
Channel found (channel search)$0.002
Transcript (coming early December 2026)$0.006
Actor start$0.001

1,000 videos ≈ $1 · 1,000 detailed ≈ $2 · 1,000 comments ≈ $0.50 · 1,000 channels ≈ $2 (details included; repeats and filtered-out channels free) · 1,000 transcripts ≈ $6 on top of their detailed videos (videos without captions free).

Notes

  • Card viewCount is YouTube's rounded figure ("49M"); includeDetails gives the exact number. Shorts cards have no upload age (YouTube doesn't show it) — details add the exact date.
  • publishedAt on cards is estimated from "x days ago"; details give the real date.
  • Search honours YouTube's own filters; "Shorts" results are detected from the Shorts shelf and /shorts/ links. YouTube itself now treats the Upload date and Rating sorts only loosely (results come roughly, not strictly, newest first — checked 21 Oct 2026); for an exact order use "sortResultsBy": "newest".
  • searchCountry changes which videos YouTube ranks for that country; it does not unlock anything blocked where the Actor runs.
  • oldestPostDate is checked by calendar day (UTC), inclusive. Cards that only say "1 month ago" are checked against the exact date on the video page (free, counts toward shortsDateLookups); Shorts that could not be dated are left out of a date window, and the status message says how many.
  • Playlists: YouTube answers our client with the first page only (up to 100 videos); the status message says when a playlist has more.
  • Transcripts come from YouTube's own captions (human or auto-generated). A video without captions has no transcript — the row says so and is free; the Actor does not transcribe audio itself. Need TikTok/Amazon product data? See the other actors on this profile.

The cheapest way to use this Actor is as a monitor: create a Schedule in Apify Console (e.g. every day at 08:00), set the input "onlyNew": true, and add an integration (email, Slack, Google Sheets, webhook). Every run then delivers only the videos that appeared since the previous run — you pay only for new rows, and you never miss one.

Changelog

  • 0.2.0 (22 Oct 2026) — YouTube AIO: transcripts in the same run. New includeTranscript: one transcript row per video, right after its video row — full text, timestamped segments, language, auto-generated flag and the list of available languages — and transcriptLanguages to choose the language (human captions first; a video without your languages returns its own). $0.006 per transcript, charged only when the text exists; videos without captions get a free row. Turns on details. Transcripts switch on in early December 2026, when their price can go live; until then the option is off and runs are unchanged. New Console view Transcripts. Everything else — defaults, fields, prices — is unchanged.

  • 0.1.11 (21 Oct 2026) — Channel search: find the channels of a niche. New searchType: "channels" — your search queries use YouTube's Channel filter and return one row per unique channel (name, @handle, channel ID, URL, subscribers, verified, description, avatar) with free details from the channel's first Videos/Shorts page and About panel (video count, median views per format, videos per week, days since the last upload, top video, country, joined date, total views, links). New maxChannels (default 20, max 500), free minSubscribers / maxSubscribers filter before charging, channelDetails (default on). Repeats across pages and queries are written and charged once; onlyNew works for channels too. New paid event Channel found ($0.002), charged only for channel rows actually written and within your run's cost limit. New Console view Channels found (channel search). Nothing changes for existing inputs: the default searchType is videos, every video price, field and default is unchanged.

  • 0.1.10 (21 Oct 2026) — YouTube's full search filters, length filter everywhere, niche-wide outliers. New videoLength (short / medium / long) — YouTube's own filter for searches and a free filter before charging for channel tabs and playlists — plus exact minDurationSec / maxDurationSec; Medium/Long skip Shorts without requesting them. New searchFeatures (4K, HD, subtitles, Creative Commons, live, 360°, VR180, 3D, HDR, location, purchased) and searchCountry. Search and playlist results can now carry an outlierScore against their own channel (searchOutliers, on automatically with sortResultsBy: "outlierScore", which used to leave every search score empty) with channelMedianViews and channelSubscribers; 1 free request per channel, up to 100 per run. Detailed rows gain descriptionLinks, channelVerified and, on request, the full heatmap. New Console view Niche outliers. Fixes: search filter combinations missing from our old preset table ("this year" + upload date, any date + rating) silently dropped the date — every combination is now sent as chosen; with oldestPostDate + upload-date sort, newer search results behind an older one were cut (YouTube's order is only roughly newest-first); a collaboration card's "A and B" line could be read as the upload age ("Nurmagomedov" contains "ago"). Good to know: Shorts listings show no length, so minDurationSec / maxDurationSec keep Shorts only when the range covers the whole 0–180 s Shorts range (otherwise they are skipped free and the status says so); scheduled searches using oldestPostDate + upload-date sort can now return a few more rows than before (the ones that used to be cut by mistake). No price change, no new paid event, no field removed or renamed, input defaults unchanged.

  • 0.1.9 (18 Oct 2026) — Recency, ranking and clip-ready data. New oldestPostDate (a date or "30 days"): a free filter before charging; latest-first channel tabs stop paging at the date, and cards that only say "1 month ago" are checked against the exact date. New sortResultsBy (views/hour, views, newest, outlier score): the ranking happens before maxVideos and before charging, across the whole run, and rows get rank. New outlierScore on channel rows (views ÷ the channel's median for the same format). Detailed rows now carry YouTube's "Most replayed" segments with &t= links, chapters, and the list of collaborators. New contentType values live and all (the channel Live tab; for searches, streams live now), new playlistUrls input, new commentsSort: newest and a commentUrl on every comment. The free channel summary gains medians per format, top outliers, uploads per week, days since the last upload, and the About panel (joined date, total views, country, links) — 1 extra free request per channel. Fixes: collaboration videos lost their channel name and subscribers in detailed rows; detailed rows were written in random order (now in order); a failed comment page no longer discards the comments already read. Status message ends with one line asking for a review when the run delivered rows. In detailed runs the channel-summary row now comes after the video rows (it is built from the exact numbers). No price change, no new paid event, no field removed or renamed, input defaults unchanged.

  • 0.1.9 review fixes (18 Oct 2026) — Billing and reliability. Your run's maximum cost ("Maximum cost per run") is now respected in every mode: paid rows are cut before they are written, best rank first, and the status says how many videos/comments were held back (before, with sortResultsBy + details, rows above the limit were written uncharged). A detail page that hangs near the run timeout no longer loses the rows behind it (or, with sortResultsBy + details, the whole result): the Actor wraps up and writes what is ready before the timeout. A failed dataset write no longer crashes the run. An empty result is no longer marked FAILED because the optional About panel or free date lookups were rate-limited. oldestPostDate on a popular/oldest-sorted tab no longer stops after page 1 with too few videos. With onlyNew, only videos actually delivered are remembered. A video found by several inputs (channel + search + playlist) is now one row, charged once, with the other sources in a new alsoFoundIn field. No price change.

  • 0.1.8 (18 Oct 2026) — Shorts search with a date window or sort now returns real results. YouTube ignores date/sort filters for Shorts and used to answer with 0 Shorts (the run still SUCCEEDED). The Actor now fetches plain Shorts, reads each publish date for free, keeps only the ones inside your window and sorts them itself — before anything is charged. Shorts found by search now carry the channel name, handle and subscribers. channelSort (popular/oldest) now also applies to a channel's Shorts tab. The example channel @MrBeast that the input form pre-fills is no longer scraped or charged when you also give search queries or video URLs. No price change.

  • 0.1.7 (24 Sep 2026) — Reliability: A mistyped or non-existent channel, handle or video now ends the run successfully with a clear "not found — check the @handle" message instead of a false "YouTube blocked us" failure, and short YouTube blocks get a patient retry. Long runs now stop just before the timeout and keep every video collected so far. No price or field change.

  • 0.1.6 (24 Sep 2026) — The run's status bar now summarises the result and suggests scheduling: viewsPerHour across runs is how you catch a video going viral. No price or field change.

  • 0.1.6 (26 Sep 2026) — Detailed runs no longer fail when YouTube walls the detail pages. On 26 Sep a detailed run found all 100 videos but YouTube refused every detail page from the Apify servers; the run ended FAILED after 11 minutes and returned only error rows. Now a blocked detail page is fetched again through a residential connection, and if that is also unavailable you still get the video card (title, views, upload age, views/hour…) marked detailed: false with a detailError note — charged at the basic Video price, not the detailed one. After 4 blocked pages in a row the Actor stops hammering the blocked route, so these runs finish in seconds instead of minutes. No price change, no field removed, defaults unchanged.

  • 0.1.5 (23 Sep 2026) — Shorts now carry durationSec (and a description) in includeDetails runs. YouTube publishes no video length for Shorts in the listing, so every Shorts row used to show an empty Sec column even on detailed runs. The length and description now come from the video player metadata, fetched through a residential connection, up to 300 Shorts per run and at no extra charge; rows filled this way are marked durationSource: "player". If that connection is unavailable the run behaves exactly as before — the field simply stays empty, nothing fails. No price change, no field removed, defaults unchanged.

  • 0.1.4 (19 Sep 2026) — Typo guard on input. Apify accepts input fields an Actor does not know without complaining, so a misspelled option used to produce a successful run with that setting silently inactive. The run log now warns for every unknown field and suggests the closest real one.

  • 0.1.3 (18 Sep 2026) — New onlyNew (monitor mode). Set it to true and schedule the Actor: the first run returns the full result and remembers every video (videoId) in a key-value store in your account; every later run returns only videos that are new since the last run, and skipped rows are never charged. Nothing else changed — defaults, fields and prices are identical.

  • 0.1.2 (18 Sep 2026) — Fix: minViews with a small maxVideos returned far fewer rows than asked. Paging used to stop once maxVideos cards were fetched and only then applied the filter, so minViews: 400000000, maxVideos: 8 on a big channel gave 2–3 rows. Paging now continues until maxVideos matching videos are found (new optional maxScan, default 10 × maxVideos, max 2000; scanned-but-dropped cards stay free). Verified: 8/8 rows ≥ 400 M views over 90 scanned cards. No other change.

  • 0.1.1 (16 Sep 2026) — Shorts rows now have publishedAt, hoursSincePublished, viewsPerHour, viewsPerDay (they were null for every Short because YouTube's Shorts shelf carries no date). Filled from the video page at no extra charge, up to shortsDateLookups per run (default 400). Channel-summary medians now include Shorts. Existing fields, prices and defaults unchanged.

  • 0.0.6 (10 Sep 2026) — Maintenance: billing safety (chargeSafely — a failed charge can no longer kill a run that already has data), test suite wiring, README.

  • 0.0.1 (7 Sep 2026) — Launch.

Found this useful? A review helps more than you'd think

If this Actor saved you time, a short review on the Reviews tab of this Store page takes 30 seconds and is the only signal other buyers have before they spend anything. If something is broken instead, open a ticket on the Issues tab — parser bugs and field requests get fixed.

Related Actors from the same account