YouTube Shorts Scraper: views, likes, date, channel monitor avatar

YouTube Shorts Scraper: views, likes, date, channel monitor

Pricing

from $0.80 / 1,000 result items

Go to Apify Store
YouTube Shorts Scraper: views, likes, date, channel monitor

YouTube Shorts Scraper: views, likes, date, channel monitor

YouTube Shorts scraper with no API key and no login: every Short on a channel Shorts tab (paged past 48) or matching a keyword search, as one row with title, view count, duration and channel. Optional exact views, likes and publish date per Short. Monitor mode alerts on new Shorts.

Pricing

from $0.80 / 1,000 result items

Rating

0.0

(0)

Developer

Viktor Dubnytskiy

Viktor Dubnytskiy

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

2 days ago

Last modified

Features

Limited permissions

Share

Get YouTube Shorts as one flat row per Short: video id, Shorts URL, title, view count, vertical thumbnail and the channel behind it — either the latest Shorts of a list of channels, or Shorts matching a keyword search. No API key, no OAuth, no cookies — the actor reads only what YouTube serves to a logged-out visitor.

Try it: the prefilled example opens the 12 latest MrBeast Shorts with exact views, likes and publish date and returns 12 rows in about 30 seconds for $0.012 plus about $0.0002 of Apify platform usage. Results cost $1 per 1,000; platform usage is billed to your account.

Run it once for a list, or run it on a schedule in monitor mode and get a webhook or Telegram alert the moment a channel posts a new Short.

What you get

One row per Short: id (video id), url (https://www.youtube.com/shorts/<id>), videoId, title, viewCountText, viewCount, likeCount, publishedAt, durationSeconds, thumbnailUrl, channelId, channelHandle, channelName, channelSubscribers, detailsFetched, rank, source (channel or search), searchQuery, scrapedAt.

Channel rows come back in tab order — newest Short first, rank: 1. Search rows come back in the order YouTube's Shorts filter returns them, ranked per query.

Example output

FieldExample value
id / urlwSh8fAFWEWs / https://www.youtube.com/shorts/wSh8fAFWEWs
titleSurvivor vs Beast Games
viewCountText / viewCount39M views / 39916641 (exact, with includeDetails)
likeCount / publishedAt921474 / 2026-01-16T11:00:01-08:00 (with includeDetails)
durationSeconds27
channelHandle / channelId@MrBeast / UCX6OQ3DkcsbYNE6H8uQQuVA
thumbnailUrlhttps://i.ytimg.com/vi/wSh8fAFWEWs/oardefault.jpg?...
source / searchQuerychannel / null, or search / "funny fails"

Use cases

  • Track what a set of creators is posting in Shorts and how each Short performs, without opening YouTube.
  • Build a content-research list for a topic: the top Shorts matching a keyword, with titles and view counts.
  • Watch competitors on a schedule and get alerted on every new Short (monitor mode keys on the video id).

How it works

  1. Each channel's public Shorts tab (https://www.youtube.com/@handle/shorts) is opened as a logged-out visitor for the first 30-48 Shorts, newest first. Further Shorts, up to maxShortsPerChannel, come from the same public Innertube browse continuation a browser uses for its own "load more" — no login, no private endpoint.
  2. Each searches keyword opens https://www.youtube.com/results?search_query=<q> and follows the page's own "Shorts" filter chip (an Innertube search continuation) for a Shorts-only result list, up to maxShortsPerSearch.
  3. With includeDetails on, each Short's own page (https://www.youtube.com/shorts/<id>) is opened for the exact view count, like count, publish date and duration (one extra request per Short).
  4. A bot-check or consent wall is retried on a stronger proxy tier before the run gives up, and a walled run is reported as blocked — an empty dataset never hides a wall.

Input

FieldMeaningDefault
channelsChannels to read, one per line: @MrBeast, a channel URL, or a UC... id["@MrBeast"]
maxShortsPerChannelStop after this many Shorts per channel, newest first (1-500)48
searchesKeyword searches to run against the Shorts filter, one per line[]
maxShortsPerSearchStop after this many Shorts per search query (1-200)40
includeDetailsOpen each Short for exact views, likes, publish date, durationfalse
tierProxy tier: auto climbs none → datacenter → residential on a wallauto
proxyCountryExit country for the proxyUS
maxItemsStop after this many rows in total100
modescrape or monitor (only new/changed since the last run)scrape
monitorStateId, webhookUrl, telegramBotToken, telegramChatIdMonitor state key and alert targetsempty

At least one of channels or searches must have something in it; the two can be combined in one run.

Pricing

EventPrice
result$0.001 per Short ($1 per 1,000)
monitor-check$0.005 per monitor run
change$0.001 per new or changed Short

You are charged only for rows actually pushed. A run that finds nothing pushes nothing and charges no result events. Apify platform usage is billed to your account on top: compute (about $0.0002 for the example run) and proxy traffic, the latter only when a wall forces the run above the free none tier.

Monitor mode and includeDetails. A change event is billed per row whose view count, like count or title moved since the last run. With the default (includeDetails: false) the view count is YouTube's own rounded figure (39M views), which stands still for hours or days — so a monitor run normally bills only genuinely new Shorts. With includeDetails: true the exact viewCount is read instead, and on an active channel that number is different on every run: expect a change event for essentially every Short you watch, on every check, plus one extra page request per Short. Watch for new Shorts with the default, and turn details on only when you want the exact curve and have budgeted for it.

Limits

  • Without includeDetails the view count is the rounded number YouTube prints on the tab or search result (39M views → 39000000); likeCount and publishedAt are empty (search rows do read an exact durationSeconds from the result's own length label). Turn includeDetails on for exact numbers.
  • maxShortsPerChannel and maxShortsPerSearch page through the public Innertube continuation the same way a browser's own "load more" does; very large values mean more requests and more run time.
  • A channel with no Shorts, or a handle that does not exist, returns no rows and costs no result events.
  • Counts are what YouTube shows a logged-out visitor and can lag the creator's own analytics.

What is NOT collected

No comments, no commenter names, no subscriber lists, no viewer data, no personal profiles — nothing about private individuals. Rows describe a public video and the channel that published it, which is a creator/business entity.

FAQ

Does it need a YouTube account, API key or cookies? No. There is no credential field at all; every request is made as a logged-out visitor.

Can I search for Shorts by keyword? Yes, with searches. YouTube's own "Shorts" filter on the search results page is followed to a Shorts-only listing.

What happens when a run comes back empty? No rows are pushed and no result events are charged. The RUN_SUMMARY record in the run's key-value store carries emptyReason, which separates "this channel has no Shorts" from "YouTube answered with a bot check" — the second is reported as blocked, never as no_matches.

Changelog

  • 0.2: Shorts keyword search (searches, maxShortsPerSearch); maxShortsPerChannel now pages past 48 through the public Innertube browse continuation, up to 500.
  • 0.1: initial release — channel Shorts tab (one page), optional exact per-Short stats, proxy-tier ladder on the bot wall, monitor mode for new Shorts.

If this actor saved you time, a short review on its Store page genuinely helps other people find it. Found a bug or need a field that is missing? Open a ticket on the Issues tab.