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

Scrapes YouTube Shorts from one or multiple channels. Returns each Short's title, views, likes, publish date, and channel metadata as a flat row.

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

## Pricing

from $11.99 / 1,000 result items

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?

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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### YouTube Shorts Scraper

**Scrape YouTube Shorts from any channel, up to a million per run.** Every Short comes with its view count, like count, publish date, and full metadata. No API key or quota. Export to CSV, JSON, Excel, or XML.

YouTube's official API needs OAuth, quotas, and a project setup. This reads the public Shorts feeds directly from channel handles or URLs, sorted by newest, popular, or oldest, and returns each match in one fixed schema.

| Who uses it | What they scrape YouTube Shorts for |
|---|---|
| Content strategists | Which Shorts formats a competitor channel is publishing this month |
| Social media analysts | How Shorts view counts trend across a niche over time |
| Influencer marketing teams | Which creators in a niche get the most Shorts engagement |
| Market researchers | What topics brands in an industry cover in Shorts |
| Data journalists | The volume and reach of Shorts on a breaking news topic |

### What it does

This Actor collects YouTube Shorts from one or multiple channels and returns each Short as a flat row with its metadata.

- 📥 **Channel handles or URLs:** feed it @nasa, a full channel URL, or a bare handle, one per line.
- 🔢 **Result cap:** set max Shorts per channel from 1 up to 1,000,000, or leave empty for all.
- ↕️ **Sort order:** newest first, most popular first, or oldest first.
- 📅 **Date cutoff:** stop at an oldest post date when sorting by newest, so you only get fresh Shorts.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with YouTube Shorts data

**📈 Track competitor Shorts output.**

A content strategist runs the Actor weekly on three competitor channels with sort newest and a date cutoff, then compares publish frequency and view counts to adjust their own Shorts calendar.

**🔍 Find top Shorts in a niche.**

A market researcher scrapes Shorts from ten channels in the fitness niche sorted by popular, then filters the dataset for Shorts above 100k views to identify winning formats.

**📊 Monitor a brand campaign.**

An agency pulls all Shorts from a client's channel and its main competitor for the last 30 days, then reports on view and like trends to show campaign lift.

**🧪 Build a Shorts dataset for analysis.**

A data scientist collects 50,000 Shorts across 20 channels, exports to JSON, and trains a model to predict view counts from title length and publish time.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key** | Scrape public Shorts feeds without OAuth or quota limits |
| **One fixed schema** | Every Short returns the same flat row, ready for analysis |
| **Bulk by design** | One run can pull up to a million Shorts per channel |
| **Sort and filter** | Newest, popular, or oldest, with an optional date cutoff |

### How it compares

This Actor is built specifically for YouTube Shorts, while the competitors below are general YouTube scrapers that may or may not cover Shorts.

| Feature | ParseForge | YouTube Scraper | Fast YouTube Channel Scraper | YouTube Comments Scraper |
|---|---|---|---|---|
| Scrapes Shorts specifically | Yes | Not listed | Not listed | Not listed |
| Sort Shorts by newest, popular, or oldest | Yes | Not listed | Not listed | Not listed |
| Date cutoff filter | Yes | Not listed | Not listed | Not listed |
| Up to 1,000,000 results per channel | Yes | Not listed | Not listed | Not listed |
| No API key or quota | Yes | Yes | Yes | Yes |
| Channel handle input | Yes | Not listed | Not listed | Not listed |

### Configure the run

Drive the Actor from channel handles or URLs, and filters run as each Short is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "channels": [
    "@nasa"
  ],
  "maxResultsShorts": 10
}
```

### Pricing

Pay-per-result: **$0.01599 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $1.60 |
| 1,000 results | $15.99 |
| 10,000 results | $159.90 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [YouTube Shorts Scraper](https://apify.com/parseforge/youtube-shorts-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to YouTube Shorts through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/youtube-shorts-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that the channel handle or URL is correct and that the channel has Shorts. Also, if you set an oldest post date, make sure it is not in the future or before the channel's first Short.

**Why did the run stop early?**

If you set max Shorts per channel, the Actor stops after reaching that number. Free users are limited to 100 per channel. Remove the limit or upgrade to get more.

**Why is the oldest post date filter not working?**

The oldest post date filter only works when sort is set to newest first. If you sort by popular or oldest, the filter is ignored.

**Why are some Shorts missing?**

YouTube may hide some Shorts from public feeds, or the channel may have deleted them. The Actor can only return what is publicly visible.

**Can I get the video file itself?**

No, this Actor returns metadata only. To download video files, use a dedicated downloader or the YouTube Scraper actor.

### FAQ

| Question | Answer |
|---|---|
| Do I need a YouTube API key? | No. This Actor reads the public Shorts feeds directly, so there is no API key, OAuth, or quota to manage. |
| What channel formats does it accept? | You can use @handle format like @nasa, a full channel URL like https://www.youtube.com/@nasa, or a bare handle like nasa. |
| How many Shorts can I scrape? | Free users are limited to 100 Shorts per channel. Paid users can set max Shorts per channel up to 1,000,000, or leave it empty to get all Shorts. |
| Can I sort the results? | Yes. Choose newest first, most popular first, or oldest first. The oldest post date filter only works with newest first. |
| What data does each Short include? | Each row includes the Short's title, view count, like count, publish date, channel name, and other metadata. The exact fields are listed in the dataset preview. |
| Can I scrape multiple channels in one run? | Yes. Add as many channel handles or URLs as you need, one per line. The Actor processes them all in a single run. |
| What export formats are supported? | You can export the results to CSV, JSON, Excel, or XML from the Apify dataset. |
| Does it scrape regular YouTube videos too? | No, this Actor is built for Shorts only. For regular videos, use a general YouTube scraper like YouTube Scraper or Fast YouTube Channel Scraper. |
| Is there a limit on how far back I can scrape? | You can set an oldest post date to stop scraping when a Short is older than that date. Leave it empty to get all Shorts. |
| Can I run this on a schedule? | Yes. Use Apify's scheduler to run the Actor daily, weekly, or at any interval, and get fresh Shorts automatically. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by YouTube (Google LLC). It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

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

List of YouTube channel handles or URLs to scrape Shorts from. Accepts @handle format (e.g. @nasa), full URL (e.g. https://www.youtube.com/@nasa), or bare handle (e.g. nasa).

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

Free users: Limited to 100. Paid users: Optional, max 1,000,000. Leave empty to get all Shorts.

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

Order in which Shorts are returned. NEWEST = most recent first (default). POPULAR = most viewed first. OLDEST = oldest first.

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

Stop scraping when a Short's publish date is older than this date (YYYY-MM-DD). Only works with Sort=NEWEST. Leave empty to get all Shorts.

## Actor input object example

```json
{
  "channels": [
    "@nasa",
    "@vsauce",
    "https://www.youtube.com/@mkbhd"
  ],
  "maxResultsShorts": 10,
  "oldestPostDate": "2024-01-01"
}
```

# Actor output Schema

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

Dataset of YouTube Shorts with all extracted fields.

# 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": [
        "@nasa"
    ],
    "maxResultsShorts": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/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": ["@nasa"],
    "maxResultsShorts": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/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": [
    "@nasa"
  ],
  "maxResultsShorts": 10
}' |
apify call parseforge/youtube-shorts-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/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/uqJoQ3SU7BxonkkLe/builds/O5h4RcJknagYTfM0U/openapi.json
