YouTube Shorts Scraper | Channel Shorts, Views, Likes & Dates
Pricing
Pay per event
YouTube Shorts Scraper | Channel Shorts, Views, Likes & Dates
Extract YouTube Shorts from any channel: URL, title, views, likes, publish date, duration, thumbnail, channel info. Full details for any Shorts URL, plus incremental "only new since last run" tracking. No login, no browser, no proxy. $0.002/run + $0.0007/short.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Hriday Rungta
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Extract every Short from a YouTube channel, or full details for any individual Short - using YouTube's own public pages and its internal "innertube" API. No login, no API key sign-up, no browser, no proxy.
What you get
- Shorts by channel: every Short on a channel's
/shortstab - id, title, view count, thumbnail, and (optionally) exact view count, like count, publish date, duration, description, keywords and category - paginated past the first 48 via YouTube's own innertube API. - Shorts by URL: full details for one or more individual Shorts, from a
youtube.com/shorts/<id>link, any other YouTube video URL, or a bare 11-character id. - Incremental mode: track a channel's Shorts over time. Each run after the first returns only Shorts new since the last run - no re-scraping, no re-paying for old Shorts.
How this works (honestly)
A Short is an ordinary YouTube video under the hood, and its full metadata - videoDetails (title, exact view count, duration, keywords) plus microformat.playerMicroformatRenderer (publish date, category, and likeCount as a plain integer) - comes from YouTube's own internal "innertube player" API: a plain JSON POST with just the video id, the same call the site's own player makes internally. Every Short is normalized to its id and looked up this way (not by scraping the /watch or /shorts HTML page for that id - live testing found the classic watch-page HTML got an "unusual traffic" interstitial under burst load from Apify's shared IP pool, while this JSON endpoint came back clean every time).
A channel's Shorts grid lives on its /@handle/shorts tab, embedded as ytInitialData. Each entry is a shortsLockupViewModel (confirmed live - not the reelItemRenderer older tools describe, which is absent from current pages) carrying the video id, title, a compact view count ("16M views") and a thumbnail - no publish date, no like count, no duration. This Actor:
- Fetches the channel's
/shortstab (or an individual Short's watch page). - Parses the embedded JSON for the first page of Shorts.
- Follows the page's own continuation token through YouTube's internal innertube API (
/youtubei/v1/browse) for further pages, anonymously - confirmed working live across multiple pages. - Optionally fetches each Short's own watch page for the fields the grid doesn't carry (likes, exact views, publish date, duration).
No headless browser, no residential proxy, no login wall to fight - because there isn't one. That keeps this fast, reliable, and cheap, and that cost is passed on to you.
Incremental mode (channels only)
Set mode: "changes". A channel's Shorts grid is newest-first (confirmed live) and carries no publish date at all, so incremental tracking is id-based first and date-based second: a run stops paging the moment it reaches a Short it has already billed, and with "Fetch full details" on, each Short's exact publish date also lets the first run seed from firstRunSince (default 30 days back) instead of pulling full channel history. A run cut short by your budget still advances the mark safely, and a remembered set of Short ids is the real guarantee that no Short is ever billed twice.
Input at a glance
| Field | Description |
|---|---|
channels | Channels to list Shorts from - a handle (@MrBeast), a full /shorts URL, or a UC... id. |
shortsUrls | Individual Shorts to fetch full details for - a /shorts/<id> URL, any video URL, or a bare 11-character id. |
includeDetails | Fetch each channel Short's own watch page for likes, exact views, publish date, duration, description, keywords, category. On by default; same price per row either way. |
mode | "all" (default) or "changes" (incremental) - channels only. |
maxItems | Budget cap on billed Short rows (channel Shorts + Shorts URL lookups combined). |
maxPagesPerSource | Cap on innertube pagination pages per channel. |
firstRunSince | How far back a channel's first incremental run looks (e.g. "30 days", or "all" for full history). |
maxRetries | Retries with backoff for network errors, HTTP 429 and 5xx responses. |
stateStoreName / stateNamespace | Advanced: where the incremental high-water mark is stored. |
Billing (pay-per-event)
| Event | Price |
|---|---|
| Actor started | $0.002 - charged once per run, regardless of results |
| Short scraped | $0.0007 - one flat price per Short row, channel or URL, with or without details |
Real-measured cost on Apify's own infrastructure is dominated by fixed per-run overhead (well under $0.001 even for a run of dozens of Shorts), so pricing is a flat per-event rate with no hidden per-GB or "with extra fields" tier - every row already includes everything this Actor can extract for it.