YouTube Shorts Scraper: Channels, Hashtags & Search avatar

YouTube Shorts Scraper: Channels, Hashtags & Search

Pricing

from $1.20 / 1,000 shorts

Go to Apify Store
YouTube Shorts Scraper: Channels, Hashtags & Search

YouTube Shorts Scraper: Channels, Hashtags & Search

Scrape YouTube Shorts from channels, hashtags and search queries in one run: exact views and likes, comments count, publish date, duration, hashtags and channel stats. Duplicates removed before billing, new-Shorts-only monitoring with webhook. No browser.

Pricing

from $1.20 / 1,000 shorts

Rating

0.0

(0)

Developer

Alexis Morain

Alexis Morain

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

This Actor turns YouTube Shorts into structured data. Give it channels, hashtags, search queries or Short URLs, and it returns every Short with its exact view count, exact like count, comment count, publish date, description, hashtags, and the channel with its subscriber count. With extended details on (the default), each Short also gets its duration and exact publish time.

It talks to YouTube over plain HTTP, the way the YouTube app does. No browser, no login, no proxy to pay for. 1,000 Shorts from 20 channels, all details included, take about a minute. Pricing is pay per event: $2.00 per 1,000 Shorts at the entry price, from $1.20 / 1,000 on Gold, date filter included; $3.00 per 1,000 with duration and exact time ($1.80 on Gold); and $0.002 per run.

The YouTube Data API has no Shorts filter and caps you at 10,000 quota units a day. This Actor is a YouTube Shorts API without the quota: a list of sources in, JSON out, scheduled or called from your code.


What does YouTube Shorts Scraper do?

It reads four kinds of sources, and you can mix them in one run:

  • Channels: the Shorts tab of any channel, newest, most popular or oldest first. There is no hidden ceiling: the NBA channel holds more than 14,000 Shorts and the Actor pages through all of them if you ask.
  • Hashtags: the Shorts feed YouTube shows on youtube.com/hashtag/<tag>/shorts.
  • Search queries: YouTube search with the Shorts filter on, optionally limited to today, this week, this month or this year.
  • Short URLs: single Shorts, to refresh the counters of videos you already track.

A Short found by two sources is returned once and charged once. YouTube repeats Shorts as you scroll a search (28% to 44% repeats on the 8 pages we measured); the Actor drops them before they reach your dataset.

Why use this YouTube Shorts scraper?

  • Creator and competitor tracking. Schedule it daily on a list of channels with New Shorts only: each run returns only Shorts never returned before, and a webhook pings Slack, Zapier, Make or n8n when a tracked channel posts.
  • Influencer discovery. Search a niche or a hashtag, then sort by views, likes or subscribers to find the creators who carry it.
  • Trend research. What a hashtag or a keyword shows this week, in the country you pick. YouTube ranks searches per country: the same query in the US and in Brazil shares about a third of its first results.
  • Datasets for analysis and AI. Titles, descriptions, hashtags and engagement for thousands of Shorts, ready for a spreadsheet, a BI tool or a model.

What you get that a grid scrape misses:

  • Exact counters. The Shorts grid shows "29M views". The Actor opens each Short and returns 29,104,377. Likes come exact too, read from the like button itself.
  • Every source type. Channels, hashtags, searches and URLs in the same run, with inputType and input on each row so you know which source found it.
  • Free date filter. Published on or after costs nothing extra. On a channel read newest first, the Actor stops paging as soon as it reaches older Shorts, so a daily check is fast.
  • It tells you what it could not get. A channel without Shorts, a hashtag that does not exist or a search that returns nothing gets one error row with the reason, never charged.

What data can I extract from YouTube Shorts?

FieldDescription
id, url, titleShort ID, URL and title
description, hashtagsFull description and the hashtags in it, without #
viewCountExact view count
likeCount, likeCountExactLike count, and whether it is exact
commentCount, commentCountTextComment count as YouTube rounds it (1.2K becomes 1200)
publishedDatePublish day, YYYY-MM-DD
publishedAt, durationSeconds, durationExact publish time and duration (extended details)
category, isFamilySafeYouTube category and family-safe flag (extended details)
thumbnailUrlVertical thumbnail
channelId, channelName, channelHandle, channelUrlThe channel
channelSubscribers, channelVerified, channelAvatarUrlSubscribers, badge and avatar
inputType, input, positionThe source that found the Short and its rank in that source

How to scrape YouTube Shorts

  1. Add one or more channels (@MrBeast, a channel URL or ID), hashtags (cooking), search queries (air fryer recipe) or Short URLs.
  2. Set Max Shorts per source: 50 by default, counted from the top of each feed.
  3. Optionally pick a channel order, a Published on or after date or span (7 days), and a country for searches and hashtags.
  4. Leave Duration and exact publish time on if you need them, turn it off for a cheaper run.
  5. Press Start, then download the dataset as JSON, CSV, Excel or HTML.

How much does it cost to scrape YouTube Shorts?

EventFreeBronzeSilverGold and up
Short$2.00 / 1,000$1.70 / 1,000$1.40 / 1,000$1.20 / 1,000
Detailed Short (instead of Short)$3.00 / 1,000$2.50 / 1,000$2.10 / 1,000$1.80 / 1,000
Actor start, per GB of memory$0.002$0.002$0.002$0.002

The 50 latest Shorts of 20 channels (1,000 Shorts) cost $2.00 on the Free plan, or $3.00 with duration and exact time. With the default 1 GB of memory the start event is charged once.

A Short is charged as a Detailed Short only when its extended details came back. If YouTube refuses that extra request, the Short keeps every other field and pays the normal price. Duplicates, error rows, Shorts YouTube refused to return, and Shorts already returned in New Shorts only mode are free. The Actor stops cleanly at the maximum charge you set in the run options.

Input

See the Input tab for every option. The ones worth knowing:

  • Max Shorts per source applies to each channel, hashtag and search separately. Max Shorts in total caps the whole run.
  • Published on or after takes a date (2026-10-01) or a span (7 days, 1 day meaning today). Days follow the US Pacific calendar, like YouTube itself.
  • Search: uploaded within is YouTube's own filter. Sorting a Shorts search by date or by views is not offered: we tested both, the first does not sort and the second returns nothing.
  • Mode: New Shorts only keeps a memory per source in your Apify account. Memory name lets you keep separate memories for the same channels, or start over.
  • Webhook URL receives a JSON summary (runId, datasetId, mode, shorts, and the first 100 items) when a run returns at least one Short.

Example, a daily feed of new Shorts from three channels and a hashtag:

{
"channels": ["@examplechannel", "https://www.youtube.com/@anotherchannel"],
"hashtags": ["skincare"],
"maxResultsPerSource": 30,
"oldestPostDate": "2 days",
"mode": "new-only",
"webhookUrl": "https://hooks.slack.com/services/T000/B000/XXXX"
}

Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

[
{
"id": "AbCdEfGhIjK",
"url": "https://www.youtube.com/shorts/AbCdEfGhIjK",
"title": "Can you pass this quiz?",
"description": "#quiz #challenge",
"hashtags": ["quiz", "challenge"],
"viewCount": 74027067,
"likeCount": 1919661,
"likeCountExact": true,
"commentCount": 66000,
"commentCountText": "66K",
"commentsTurnedOff": null,
"publishedDate": "2026-08-11",
"publishedAt": "2026-08-11T16:00:06Z",
"durationSeconds": 74,
"duration": "00:01:14",
"thumbnailUrl": "https://i.ytimg.com/vi/AbCdEfGhIjK/frame0.jpg",
"category": "Entertainment",
"isFamilySafe": true,
"channelId": "UCabcdefghijklmnopqrstuv",
"channelName": "Example Channel",
"channelHandle": "examplechannel",
"channelUrl": "https://www.youtube.com/@examplechannel",
"channelSubscribers": 1500000,
"channelSubscribersText": "1.5M subscribers",
"channelVerified": true,
"channelAvatarUrl": "https://yt3.ggpht.com/example-avatar=s88-c-k-c0x00ffffff-no-rj",
"inputType": "channel",
"input": "@examplechannel",
"position": 1,
"scrapedAt": "2026-10-19T15:36:20Z"
},
{
"inputType": "search",
"input": "a query with no shorts",
"error": "NO_RESULTS",
"message": "YouTube returned no Shorts for this source."
}
]

Tips

  • Monitoring: schedule the same input with New Shorts only and a date span a little longer than the schedule interval (2 days for a daily run). A run that finds nothing new costs $0.002.
  • Cheaper, faster runs: turn off Duration and exact publish time when counts and the publish day are enough. 1,000 Shorts from 12 sources then take about 65 seconds.
  • More from a search: YouTube runs dry after roughly 100 to 200 unique Shorts per query. Split a broad query into several narrower ones, or run it in several countries.
  • Memory: keep the default 1 GB. Half a gigabyte works but runs about 2.5 times slower.
  • From code: call the Actor through the Apify API or the Python and JavaScript clients; the API tab has ready-to-paste snippets.

FAQ

Why is likeCount empty for some Shorts?

The creator hid the like count. YouTube shows "N/A" and the Actor returns null rather than a guess. When YouTube shows only a rounded figure, likeCount holds it and likeCountExact is false.

Why is channelSubscribers empty for a channel?

The channel hides its subscriber count, or YouTube does not show it to visitors from the US, where the Actor runs. We saw it on 1 channel out of 304 in our tests.

Why is commentsTurnedOff usually null?

YouTube's Shorts page does not say whether comments are off or simply not counted, so the field is true only when YouTube says so explicitly. An empty commentCount is common on channels made for kids, where comments are off.

Which time zone are dates in?

publishedDate is the day YouTube displays, on the US Pacific calendar. publishedAt is the exact time in UTC, available with extended details.

Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

Something does not work

Open an issue in the Issues tab with the run ID. Error rows in the dataset (error, message) and the run's status message usually say what went wrong.