# YouTube Shorts Scraper (`automly/youtube-shorts-scraper`) Actor

YouTube Shorts Scraper: get Shorts from any channel, search term or Shorts link with exact views, likes, comments, publish time, length, caption, hashtags and channel stats. No login. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/automly/youtube-shorts-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** Videos, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.75 / 1,000 shorts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## YouTube Shorts Scraper

### What is YouTube Shorts Scraper?

**YouTube Shorts Scraper** lets you **scrape YouTube Shorts from any channel, search term or Shorts link**: the Short's link, caption, **exact views, likes and comment count**, publish date and time, length, description, hashtags, tags, category and thumbnail, plus the **channel's name, handle, subscribers, total videos and views, country, join date and links** in every row. Type a channel name or a keyword, click **Start**, and download the Shorts as Excel, CSV or JSON.

- 📱 **Shorts only:** from a channel's Shorts tab, from YouTube's Shorts search results, or from single Shorts links
- ⚡ **Fast:** 929 Shorts with full details from 4 channels in 2 minutes (our tests)
- 🔢 **Exact numbers:** exact views, likes and comments for every Short, not "1.2M"
- 📅 **Date filter:** only the Shorts published after a date, or in the last 7 days, 2 weeks, 3 months
- 🔓 **No login:** no YouTube account, cookies or API key needed
- 💸 **Free to try:** every Apify account gets $5 of free usage each month

### What can YouTube Shorts Scraper do?

- **Scrape every Short of a YouTube channel**, newest, most popular or oldest first
- **Scrape YouTube Shorts search results** for any keyword, with YouTube's upload date filter and sort orders
- **Get YouTube Shorts details from links**: views, likes, comments and publish time for a list of Shorts
- **Monitor a creator's new Shorts** with the date filter and a daily schedule
- **Track YouTube Shorts views, likes and comments** over time with exact counts
- **Find Shorts creators** in a niche, with subscriber counts and channel stats in the same row
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

### What data can you extract from YouTube Shorts?

| | | |
|---|---|---|
| 🎬 Caption (title) and full description | 👁️ Exact view count | 👍 Exact like count |
| 💬 Exact comment count | 📅 Publish date and time | ⏱️ Length |
| #️⃣ Hashtags | 🏷️ Tags (keywords) | 🗂️ Category |
| 🖼️ Thumbnail, largest size | 🔗 Links in the description | 🔒 Comments turned off |
| 📺 Channel name, handle and link | 👥 Channel subscribers | 📊 Channel total videos and views |
| 🌍 Channel country | 🗓️ Channel join date | 🔗 Channel links |
| ✅ Verified badge | 👪 Family-safe and unlisted flags | 🗣️ Subtitle languages (optional) |

### How to scrape YouTube Shorts

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **YouTube Shorts Scraper**.
3. Add channels (`MrBeast`, `@MrBeast` or a channel link), search terms, or Shorts links, one per line.
4. Set how many Shorts you want from each channel and search term.
5. Click **Start**, then download the Shorts as Excel, CSV, JSON or HTML.

### How much does it cost to scrape YouTube Shorts?

You pay for each Short saved with its details, with lower prices on paid Apify plans:

| Apify plan | Shorts per 1,000 |
|---|---|
| Free | $1.50 |
| Starter (Bronze) | $1.35 |
| Scale (Silver) | $1.20 |
| Business (Gold) and higher | $0.75 |

Platform usage is included in these prices, so you pay nothing else for the run. There is no start fee. In the rare case a Short is saved without its details, it is free. Shorts that cannot be viewed without signing in (age-restricted, members-only, private, removed) and links that are not Shorts are not saved and not charged.

Example: 1,000 Shorts cost $1.50 on the Free plan and $0.75 on Business. The **Max Shorts** setting keeps every run's cost under control, and you can also set a maximum cost per run. Every Apify account gets **$5 of free usage each month**, enough for about 3,300 Shorts on the Free plan.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **Channels** | Channel names with or without @ (`MrBeast`, `@MrBeast`) or channel links (`https://www.youtube.com/@MrBeast`, `/channel/UC...`, `/c/...`). The scraper reads each channel's Shorts tab |
| **Search terms** | Keywords to search YouTube Shorts for, like `cat fails` or `street food` |
| **Shorts links** | Single Shorts, like `https://www.youtube.com/shorts/f7y2XikE7sY` |
| **Max Shorts per channel or search term** | How many Shorts to get from each channel and each search term |
| **Only Shorts published after** | A date (`2026-09-01`) or an age (`7 days`, `2 weeks`). Channels are then read newest first |
| **Channel sort order** | Newest, most popular or oldest first, like the buttons on a channel's Shorts tab |
| **Sort search results by** / **Search upload date** | YouTube's own search options for search terms |
| **Subtitle languages** | Adds the subtitle languages each Short has |
| **Connection settings** | The default works for most runs |

The 50 newest Shorts of two channels:

```json
{
  "channels": ["MrBeast", "@NYTCooking"],
  "maxResultsShorts": 50
}
```

A channel's Shorts from the last 7 days:

```json
{
  "channels": ["https://www.youtube.com/@MrBeast"],
  "maxResultsShorts": 100,
  "oldestPostDate": "7 days"
}
```

The 100 most-viewed Shorts for a keyword, uploaded this month:

```json
{
  "searchQueries": ["street food"],
  "maxResultsShorts": 100,
  "sortingOrder": "views",
  "dateFilter": "month"
}
```

Details for a list of Shorts:

```json
{
  "startUrls": [
    "https://www.youtube.com/shorts/f7y2XikE7sY",
    "https://www.youtube.com/shorts/C-jNC6aXvwo"
  ]
}
```

If you used another YouTube Shorts scraper, the same input names work here: `channels`, `maxResultsShorts`, `oldestPostDate` and `sortChannelShortsBy`.

### ⬆️ Output

Every Short is one row. A Short from a channel:

```json
{
  "id": "f7y2XikE7sY",
  "url": "https://www.youtube.com/shorts/f7y2XikE7sY",
  "title": "Paying For Food With My Car",
  "type": "shorts",
  "isShort": true,
  "isLive": false,
  "viewCount": 134305407,
  "likes": 3186064,
  "commentsCount": 31262,
  "commentsTurnedOff": false,
  "date": "2026-07-31T16:00:11Z",
  "publishedText": null,
  "duration": "00:00:50",
  "durationSeconds": 50,
  "text": "",
  "descriptionLinks": [],
  "hashtags": [],
  "keywords": [],
  "category": "Entertainment",
  "thumbnailUrl": "https://i.ytimg.com/vi/f7y2XikE7sY/maxresdefault.jpg",
  "channelName": "MrBeast",
  "channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA",
  "channelUsername": "MrBeast",
  "channelUrl": "https://www.youtube.com/@MrBeast",
  "numberOfSubscribers": 523000000,
  "isChannelVerified": true,
  "channelTotalVideos": 1009,
  "channelTotalViews": 144266262191,
  "channelDescription": "SUBSCRIBE FOR A COOKIE!\nNew MrBeast or MrBeast Gaming video every single Saturday at noon ...",
  "channelDescriptionLinks": [
    {"text": "Follow", "url": "https://www.instagram.com/mrbeast/"},
    {"text": "Twitter", "url": "https://twitter.com/MrBeast"},
    {"text": "Facebook", "url": "https://facebook.com/mrbeast/"}
  ],
  "channelLocation": "United States",
  "channelJoinedDate": "2012-02-19",
  "channelAvatarUrl": "https://yt3.googleusercontent.com/nxYrc_1_2f77DoBadyxMTmv7ZpRZapHR5jbuYe7PlPd5cIRJxtNNEYyO...",
  "channelBannerUrl": "https://yt3.googleusercontent.com/mHMO_eEMp0dPvh0ADwXhPXNYb_GnjSVsLI8biqF1CpxT8OPl7izhNQsD...",
  "isFamilySafe": true,
  "isUnlisted": false,
  "subtitles": null,
  "hasDetails": true,
  "input": "MrBeast",
  "inputChannelUrl": "https://www.youtube.com/@MrBeast",
  "fromChannelListPage": "shorts",
  "fromYTUrl": "https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA/shorts",
  "order": 9,
  "scrapedAt": "2026-10-24T08:56:18Z"
}
```

The **Overview** tab shows the main columns; download the dataset for every field.

### How can I use YouTube Shorts data?

- **Trend research:** see which topics, hooks and lengths get the most views and comments in Shorts
- **Competitor tracking:** follow a competitor's Shorts, their posting rhythm and each Short's views, likes and comments
- **Influencer marketing:** find Shorts creators in a niche, with subscribers, country and channel stats
- **Content planning:** study the captions, hashtags and tags of the top Shorts for a keyword
- **Brand monitoring:** find Shorts that mention your brand or product and measure their reach

### How many Shorts can I get?

A channel's Shorts tab is read to the end: every public Short of the channel. A YouTube search shows a limited number of Shorts per term (about 150 in our tests); leave the sort order empty to get the most a term can give, and add related search terms to get more. A Short that two inputs find is saved once.

With **Only Shorts published after**, the newest Shorts of each channel are checked up to your **Max Shorts** number and the older ones are left out (not charged), so set Max Shorts to at least the number of Shorts the channel posts in that period.

### Scrape more YouTube and social media data

| Actor | What it gets |
|---|---|
| [YouTube Scraper](https://apify.com/automly/youtube-scraper) | YouTube videos, Shorts and live streams from search, channels, playlists and links |
| [YouTube Transcript Scraper](https://apify.com/automly/youtube-transcript-scraper) | Transcripts and captions of YouTube videos and Shorts |
| [YouTube Channel Scraper - Search Channels by Keyword](https://apify.com/automly/youtube-channel-search-scraper) | YouTube channels by keyword: subscribers, video and view counts, country, links |
| [TikTok Profile Scraper](https://apify.com/automly/tiktok-profile-scraper) | TikTok profiles and their latest videos with views, likes and comments |
| [Instagram Posts & Reels Scraper](https://apify.com/automly/instagram-profile-posts-scraper) | Posts and reels from public Instagram profiles with likes and comment counts |

### ❓FAQ

#### How much does it cost to scrape YouTube Shorts?

$1.50 per 1,000 Shorts on the Free plan, down to $0.75 on Business, with platform usage included. See [How much does it cost to scrape YouTube Shorts?](#how-much-does-it-cost-to-scrape-youtube-shorts) above for every plan. The Max Shorts limit keeps the cost of a run under control, and you can also set a maximum cost per run.

#### Can I get the Shorts of a channel by its name?

Yes. Type the channel name with or without @ (`MrBeast` or `@MrBeast`), or paste any channel link. The scraper opens the channel's Shorts tab, whichever tab the link points to.

#### Does it get exact view and like counts?

Yes: views, likes and comments are the exact numbers YouTube counts, and the publish date comes with the time. Channel subscriber counts are rounded by YouTube itself above 1,000.

#### What if I paste a regular video link?

Only Shorts are saved. A link to a regular video is left out, not charged, and listed in the run report in the **Storage** tab.

#### What about age-restricted, members-only or private Shorts?

They cannot be viewed without signing in, so they are not saved and not charged. The run report lists each one and why. Deleted Shorts, wrong links and channels that do not exist are listed there too.

#### Do I need a YouTube account?

No. The scraper reads the same public Shorts and channels anyone can see without signing in.

#### Can I connect YouTube Shorts Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at [mcp.apify.com](https://mcp.apify.com).

#### Is it legal to scrape YouTube Shorts?

This scraper only collects public data that anyone can see on YouTube without signing in. Channel names and descriptions can still contain personal data, which may be protected by laws such as GDPR, so only scrape it for a legitimate reason, respect copyright when you reuse content, and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

YouTube Shorts Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by YouTube or Google.

#### Something isn't working?

Open the **Issues** tab with your input and what you expected, or ask for a field you need. We read every one and usually reply within a day.

### ⭐ Your feedback

Have an idea or found a problem? Tell us in the **Issues** tab. If YouTube Shorts Scraper saved you time, a short review on the **Reviews** tab helps other people find it.

# Actor input Schema

## `channels` (type: `array`):

Channels to get Shorts from, e.g. MrBeast, @MrBeast or https://www.youtube.com/@MrBeast. One per line; the name with or without @.

## `searchQueries` (type: `array`):

Get the Shorts YouTube shows for a search, e.g. cat fails. One term per line.

## `startUrls` (type: `array`):

Single Shorts, e.g. https://www.youtube.com/shorts/f7y2XikE7sY. Channel links work here too.

## `maxResultsShorts` (type: `integer`):

How many Shorts to get from each channel and each search term.

## `oldestPostDate` (type: `string`):

Leave out older Shorts: a date (2026-09-01) or an age (7 days, 2 weeks, 3 months). Channels are then read newest first.

## `sortChannelShortsBy` (type: `string`):

Order of a channel's Shorts, like the buttons on its Shorts tab.

## `sortingOrder` (type: `string`):

Order of search results. Leave it empty to get the most Shorts per term.

## `dateFilter` (type: `string`):

Only Shorts uploaded in this period (search terms).

## `includeSubtitles` (type: `boolean`):

Add the list of subtitle languages each Short has. Makes runs a little slower.

## `proxyConfiguration` (type: `object`):

Proxy settings. The default works for most runs.

## Actor input object example

```json
{
  "channels": [
    "MrBeast"
  ],
  "maxResultsShorts": 10,
  "sortChannelShortsBy": "NEWEST",
  "includeSubtitles": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `results` (type: `string`):

No description

## `report` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "channels": [
        "MrBeast"
    ],
    "maxResultsShorts": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/youtube-shorts-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "channels": ["MrBeast"],
    "maxResultsShorts": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("automly/youtube-shorts-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "channels": [
    "MrBeast"
  ],
  "maxResultsShorts": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/youtube-shorts-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/youtube-shorts-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/y14y0X5UprEsEJIF4/builds/W0qmgUQSEHafbkgLZ/openapi.json
