# YouTube Shorts Scraper + AI Content & Sentiment Analysis (`buseta/yt-shorts-premium-scraper`) Actor

Scrape YouTube Shorts by channel, search, hashtag, or URL. Extract views, likes, comments, music, hashtags, and channel info. AI-powered content analysis finds viral formats and trending hooks. AI comment sentiment tells you what audiences love and hate.

- **URL**: https://apify.com/buseta/yt-shorts-premium-scraper.md
- **Developed by:** [buseta](https://apify.com/buseta) (community)
- **Categories:** Videos, Social media
- **Stats:** 92 total users, 7 monthly users, 85.9% runs succeeded, 3 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 short scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## YouTube Shorts Scraper + AI Content & Sentiment Analysis

Scrape YouTube Shorts with full metadata and AI-powered insights. The cheapest YT Shorts scraper on Apify at **$3 per 1,000 Shorts** — with AI features no other actor has.

### What You Get

For each Short: title, views, likes, comments, upload date, description, music/audio, hashtags, channel info, thumbnail.

Plus optional AI analysis:

- **AI Content Analysis** — What formats are going viral? What hooks work? When to post?
- **AI Comment Sentiment** — What does the audience love? What do they complain about?

### Who Is This For?

- **Marketing agencies** — Vet influencers before brand deals. Audit engagement rates, comment sentiment, posting consistency
- **Content creators** — Reverse-engineer viral Shorts. Find trending formats, music, and hooks in your niche
- **Brand managers** — Monitor comment sentiment on your product campaigns. Catch PR issues early
- **E-commerce brands** — Find UGC featuring your products. Identify top-performing review formats
- **Competitor analysts** — Track competitor posting frequency, engagement trends, and content mix

### 4 Scraping Modes

#### 1. Search by Keyword

Find Shorts about any topic.

```json
{
    "scrape_type": "search",
    "search": "protein shake recipes",
    "max_shorts": 50,
    "get_comments": true,
    "ai_content_analysis": true
}
```

#### 2. Channels List

Get all Shorts from specific channels — perfect for competitor analysis.

```json
{
    "scrape_type": "channels",
    "channel_urls": ["@MrBeast", "@KhabyLame", "@CharliDamelio"],
    "max_shorts": 30,
    "get_comments": true,
    "ai_comment_sentiment": true
}
```

#### 3. Hashtags

Find trending Shorts by hashtag.

```json
{
    "scrape_type": "hashtags",
    "hashtags": ["fitness", "gymtok", "workout"],
    "max_shorts": 50,
    "ai_content_analysis": true
}
```

#### 4. Video URLs

Scrape specific Shorts by URL — always includes comments.

```json
{
    "scrape_type": "video_urls",
    "video_urls": [
        "https://www.youtube.com/shorts/fb7p1xmVsz0",
        "https://www.youtube.com/shorts/abc123"
    ],
    "ai_comment_sentiment": true
}
```

### Use Case Examples

#### Influencer Vetting

You're a skincare brand looking for micro-influencers. Scrape 500 beauty creators' Shorts, filter for high engagement, and check comment sentiment.

```json
{
    "scrape_type": "search",
    "search": "skincare routine",
    "max_shorts": 100,
    "get_comments": true,
    "max_comments_per_video": 20,
    "ai_content_analysis": true,
    "ai_comment_sentiment": true
}
```

**What you get:**

- 100 skincare Shorts with views, likes, engagement rates
- AI Content Analysis: which formats perform best (before/after, routine, product review)
- Per-video sentiment: which creators have genuinely positive audience reactions vs. bot comments

#### Viral Content Reverse-Engineering

You run a faceless YouTube channel and want to find what's working in your niche right now.

```json
{
    "scrape_type": "hashtags",
    "hashtags": ["historyfacts", "didyouknow"],
    "max_shorts": 200,
    "ai_content_analysis": true
}
```

**AI Content Analysis output:**

```json
{
    "top_performing_formats": ["countdown lists", "myth vs fact", "this day in history"],
    "viral_hooks": ["Most people don't know...", "POV:", "The reason why..."],
    "trending_music": ["original sound - HistoryBuff", "dramatic orchestral #2"],
    "engagement_benchmark": {"avg_views": 45000, "avg_engagement_rate": "4.2%"},
    "content_recommendations": [
        "Switch to countdown format — 3x more views than narrative style",
        "Use dramatic music — top 5 Shorts all use orchestral tracks"
    ]
}
```

#### Brand Monitoring

You launched a new product and want to know what people are saying in Shorts comments.

```json
{
    "scrape_type": "search",
    "search": "iPhone 17 review",
    "max_shorts": 30,
    "get_comments": true,
    "max_comments_per_video": 50,
    "ai_comment_sentiment": true
}
```

**Per-video sentiment output:**

```json
{
    "ai_comment_sentiment": {
        "positive_pct": 62,
        "negative_pct": 28,
        "neutral_pct": 10,
        "top_praise": ["camera quality", "design", "fast"],
        "top_complaints": ["battery life", "price", "no USB-C"],
        "audience_summary": "Mostly positive. Viewers love the camera upgrade but are frustrated with battery life and pricing."
    }
}
```

### Output Fields

| Field | Description |
|-------|-------------|
| `title` | Video title/caption |
| `url` | YouTube Shorts URL |
| `upload_date` | When it was posted |
| `view_count` | Total views |
| `like_count` | Total likes |
| `description` | Full description text |
| `image` | Thumbnail URL |
| `music` | Music/audio track name |
| `tags` | Hashtags extracted from title + description |
| `channel` | Channel name |
| `channel_url` | Channel URL |
| `channel_avatar` | Channel profile picture |
| `comment_count` | Total comment count |
| `scraped_comment_count` | Number of comments actually scraped |
| `comments` | Array of comment objects (text, author, likes, date, edited) |
| `ai_comment_sentiment` | AI sentiment analysis (if enabled) |

### Pricing

| Event | Price |
|-------|-------|
| Short scraped | $3.00 / 1,000 |
| Comment scraped | $0.50 / 1,000 |
| AI Content Analysis | $1.00 / 1,000 Shorts analyzed |
| AI Comment Sentiment | $20.00 / 1,000 videos |
| Platform usage | Free |

Cheapest YouTube Shorts scraper on Apify. The market leader charges $4-6/1K.

#### Typical Run Costs

| Use Case | Shorts | Comments | AI | Total Cost |
|----------|--------|----------|-----|-----------|
| Quick niche research (30 Shorts by hashtag) | $0.09 | — | — | **$0.09** |
| Viral analysis (100 Shorts + AI content analysis) | $0.30 | — | $0.10 | **$0.40** |
| Influencer vetting (50 Shorts + comments + AI sentiment) | $0.15 | $0.63 | $1.00 | **$1.78** |
| Competitor tracking (3 channels × 20 Shorts) | $0.18 | — | — | **$0.18** |
| Full analysis (100 Shorts + comments + all AI) | $0.30 | $0.63 | $1.10 | **$2.03** |

### Tips

- **Start small** — Test with 5-10 Shorts first to verify data quality
- **AI Content Analysis works best with 50+ Shorts** — More data = better pattern detection
- **AI Comment Sentiment needs comments** — Enable "Scrape comments" first
- **No proxy needed for small runs** — YouTube is lenient for <100 requests. Enable proxy for larger scrapes
- **Use channels mode for competitor tracking** — Scrape the same channels weekly to track trends

### Keywords

YouTube Shorts scraper, YouTube Shorts data extractor, scrape YouTube Shorts, YouTube Shorts analytics, YouTube Shorts comments scraper, YouTube Shorts views likes, YouTube viral content analysis, influencer vetting tool, YouTube content strategy, YouTube Shorts trending, YouTube Shorts hashtag scraper, YouTube Shorts channel scraper, YouTube AI analysis, comment sentiment analysis, viral hooks, content creator tools

# Actor input Schema

## `scrape_type` (type: `string`):

How to find Shorts.

- Search: Find Shorts by keyword
- Channels: Get all Shorts from specific channels
- Hashtags: Get Shorts by hashtag
- Video URLs: Scrape specific Shorts by URL

## `channel_urls` (type: `array`):

List of channel names (@username) or URLs. Used in 'Channels' mode.

## `search` (type: `string`):

Keyword to search for. Used in 'Search' mode.

## `hashtags` (type: `array`):

List of hashtags (with or without #). Used in 'Hashtags' mode.

## `video_urls` (type: `array`):

List of YouTube Shorts URLs to scrape. Used in 'Video URLs' mode.

## `get_comments` (type: `boolean`):

Extract comments from each Short. Charged at $0.50 per 1,000 comments.

## `max_shorts` (type: `integer`):

Maximum Shorts to scrape per channel, search query, or hashtag.

## `max_comments_per_video` (type: `integer`):

Maximum number of comments to scrape per Short.

## `ai_content_analysis` (type: `boolean`):

After all Shorts are scraped, AI analyzes the entire batch: identifies viral formats, trending hooks, best posting times, engagement benchmarks, and content recommendations. Charged at $1 per 1,000 Shorts analyzed.

## `ai_comment_sentiment` (type: `boolean`):

AI analyzes comments on each Short: positive/negative split, top praise, top complaints, audience summary. Requires 'Scrape comments' to be enabled. Charged at $20 per 1,000 videos analyzed.

## `proxy_config` (type: `object`):

Proxy settings. YouTube works without proxy for small runs but recommended for larger scrapes.

## Actor input object example

```json
{
  "scrape_type": "video_urls",
  "video_urls": [
    "https://www.youtube.com/shorts/fb7p1xmVsz0"
  ],
  "get_comments": false,
  "max_shorts": 10,
  "max_comments_per_video": 25,
  "ai_content_analysis": false,
  "ai_comment_sentiment": false,
  "proxy_config": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

YouTube Shorts video data including metadata, comments, and channel information.

# 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 = {
    "scrape_type": "video_urls",
    "video_urls": [
        "https://www.youtube.com/shorts/fb7p1xmVsz0"
    ],
    "get_comments": false,
    "max_shorts": 10,
    "max_comments_per_video": 25,
    "proxy_config": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("buseta/yt-shorts-premium-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 = {
    "scrape_type": "video_urls",
    "video_urls": ["https://www.youtube.com/shorts/fb7p1xmVsz0"],
    "get_comments": False,
    "max_shorts": 10,
    "max_comments_per_video": 25,
    "proxy_config": { "useApifyProxy": False },
}

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

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

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

```

## CLI example

```bash
echo '{
  "scrape_type": "video_urls",
  "video_urls": [
    "https://www.youtube.com/shorts/fb7p1xmVsz0"
  ],
  "get_comments": false,
  "max_shorts": 10,
  "max_comments_per_video": 25,
  "proxy_config": {
    "useApifyProxy": false
  }
}' |
apify call buseta/yt-shorts-premium-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=buseta/yt-shorts-premium-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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