YouTube Shorts Scraper

Extract public YouTube Shorts metadata from channel Shorts tabs and Shorts URLs.

Data fields

FieldTypeDescription
positionnumber# exported in the dataset view.
titletextTitle exported in the dataset view.
shortUrllinkShort exported in the dataset view.
videoIdtextVideo ID exported in the dataset view.
channelNametextChannel exported in the dataset view.
channelUrllinkChannel URL exported in the dataset view.
viewCountTexttextViews exported in the dataset view.
thumbnailUrllinkThumbnail exported in the dataset view.

Input preview

startUrlsChannel Shorts or Short URLs *
maxItemsMaximum Shorts
proxyConfigurationProxy configuration

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

Ready-to-run examples

Open a saved Apify example, adjust the input, and run the actor in your own Apify account.

View all examples

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Extract public YouTube Shorts metadata from channel Shorts tabs and direct Shorts URLs.

Use this actor to collect Shorts URLs, video IDs, titles, channel information, view labels, thumbnail links, and source tracking fields for research, reporting, and content monitoring workflows.

At a glance

  • Input: Public YouTube channel /shorts URLs, direct Shorts URLs, result cap, and optional proxy settings.
  • Output: One dataset row per public Short with video ID, URL, title, channel, thumbnail, publish metadata, and source context when available.
  • Best for: Shorts monitoring, creator research, competitor tracking, trend scouting, and short-form video datasets.
  • Pricing unit: A start event per run plus one result event for each saved Short.
  • Login required: No. The Actor reads public YouTube Shorts pages only.

What can it do?

YouTube Shorts Scraper turns public YouTube Shorts pages into structured data.

It accepts public channel Shorts tabs such as https://www.youtube.com/@YouTube/shorts.

It also accepts direct Shorts URLs such as https://www.youtube.com/shorts/VIDEO_ID.

For each Short found, the actor saves a clean dataset row.

The dataset is ready for export to JSON, CSV, Excel, Google Sheets, BI tools, or your own API pipeline.

Who is it for?

๐ŸŽฏ Social media managers tracking competitor Shorts.

๐ŸŽฏ Creator teams collecting content ideas from public channels.

๐ŸŽฏ Agencies preparing monthly YouTube performance reports.

๐ŸŽฏ Trend researchers monitoring short-form video themes.

๐ŸŽฏ Lead generation teams finding active creators and channels.

๐ŸŽฏ Analysts building dashboards around Shorts publishing activity.

Why use this actor?

YouTube's web interface is designed for watching videos, not exporting research datasets.

This actor gives you repeatable structured data from public pages.

You can run the same input daily, weekly, or monthly.

You can combine results from multiple channels in one run.

You can stop at a small limit for quick checks or increase the limit for broader monitoring.

How to scrape YouTube Shorts

  1. Open the actor on Apify.

  2. Paste one or more public YouTube channel Shorts URLs.

  3. Set maxItems to the number of Shorts you want.

  4. Run the actor.

  5. Open the Dataset tab.

  6. Export the data as JSON, CSV, Excel, or via API.

Input example

{
  "startUrls": [
    { "url": "https://www.youtube.com/@YouTube/shorts" }
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}

Output example

{
  "shortUrl": "https://www.youtube.com/shorts/ssjBTBCO8cE",
  "videoId": "ssjBTBCO8cE",
  "title": "Kizzy the Parrot makes a BIG prediction",
  "channelName": "YouTube",
  "channelUrl": "https://www.youtube.com/@YouTube",
  "viewCountText": "6.9K views",
  "thumbnailUrl": "https://i.ytimg.com/vi/ssjBTBCO8cE/frame0.jpg",
  "publishedTimeText": null,
  "durationText": null,
  "position": 1,
  "sourceUrl": "https://www.youtube.com/@YouTube/shorts",
  "scrapedAt": "2026-06-17T00:00:00.000Z"
}

Supported URL types

โœ… Public channel Shorts tabs, for example https://www.youtube.com/@YouTube/shorts.

โœ… Direct Shorts URLs, for example https://www.youtube.com/shorts/VIDEO_ID.

โœ… Handle shorthand in inputs, for example @YouTube.

The actor is built for public data.

It does not access private channels, private videos, member-only videos, or account-only analytics.

Tips for best results

Use channel /shorts tabs for bulk collection.

Use direct Shorts URLs when you only need a specific video row.

Keep the first run small to confirm the channel has public Shorts.

Use multiple start URLs to combine channels in one dataset.

Remove duplicate channel URLs from your input to avoid repeated rows.

Common use cases

๐Ÿ“ˆ Track Shorts posted by competitor channels.

๐Ÿง  Build a content ideation spreadsheet.

๐Ÿ”Ž Monitor titles and topics in a niche.

๐Ÿ“Š Feed a dashboard with fresh Shorts links.

๐Ÿงพ Create a historical archive of public Shorts listings.

๐Ÿค Find creators publishing short-form videos in your category.

Integrations

Export the dataset to Google Sheets for manual review.

Send the dataset to a data warehouse for trend analysis.

Connect Apify webhooks to trigger Slack alerts when a run finishes.

Use Make, Zapier, or n8n to move new Shorts into your content planning workflow.

Call the actor from your backend when you need fresh channel data.

API usage with Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor('fetch_cat/youtube-shorts-scraper').call({
  startUrls: [{ url: 'https://www.youtube.com/@YouTube/shorts' }],
  maxItems: 20,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')

run = client.actor('fetch_cat/youtube-shorts-scraper').call(run_input={
    'startUrls': [{'url': 'https://www.youtube.com/@YouTube/shorts'}],
    'maxItems': 20,
})

items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

API usage with cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~youtube-shorts-scraper/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "startUrls": [{"url": "https://www.youtube.com/@YouTube/shorts"}],
    "maxItems": 20
  }'

MCP and AI agents

Use this actor from AI tools through Apify MCP.

MCP URL:

https://mcp.apify.com/?tools=fetch_cat/youtube-shorts-scraper

Claude Code example:

claude mcp add apify-youtube-shorts https://mcp.apify.com/?tools=fetch_cat/youtube-shorts-scraper

Claude Desktop configuration example:

{
  "mcpServers": {
    "apify-youtube-shorts": {
      "url": "https://mcp.apify.com/?tools=fetch_cat/youtube-shorts-scraper"
    }
  }
}

Example prompts:

  • "Scrape the latest Shorts from this YouTube channel and summarize the most common topics."

  • "Collect 50 Shorts from these competitor channels and return a CSV-ready table."

  • "Find Shorts titles that mention product launches or announcements."

Scheduling

You can schedule this actor in Apify Console.

Daily runs are useful for monitoring active channels.

Weekly runs are useful for reporting and trend snapshots.

Use a stable input list so every scheduled run is comparable.

Data quality notes

YouTube page layouts can vary by channel, region, and time.

Some fields are optional because YouTube may not show them on every surface.

If a field is not visible publicly, the actor leaves it as null rather than guessing.

The sourceUrl and scrapedAt fields help you audit where each row came from.

Limits

The actor only collects public data visible without a YouTube account.

It does not download videos.

It does not provide private analytics.

It does not bypass access controls.

Very large runs can take longer because YouTube loads channel Shorts in pages.

Troubleshooting

Why did I get fewer Shorts than requested?

The channel may have fewer public Shorts than your maxItems value.

The input may point to a channel page instead of the /shorts tab.

Try opening the URL in a browser and confirm that public Shorts are visible.

Why are some fields null?

YouTube does not show every metadata field in every page context.

For example, listing pages usually show title, URL, thumbnail, and view label, while direct video pages may expose different metadata.

The actor returns optional fields only when they are publicly available.

Should I enable proxies?

Most small runs should work with the default direct connection.

If your region is blocked or YouTube returns unusual pages, enable Apify Proxy in the advanced input section.

Legality and ethical use

This actor is intended for public web data.

Make sure your use case complies with YouTube's terms, applicable laws, and privacy requirements.

Do not use scraped data for spam, harassment, or unauthorized profiling.

If you are unsure whether your use case is allowed, consult your legal advisor.

Common questions

Questions and answers reused from the canonical actor README.

Can I scrape several channels in one run?

Yes. Add multiple channel Shorts URLs to startUrls.

Can I scrape only one Short?

Yes. Add the direct https://www.youtube.com/shorts/VIDEO_ID URL.

Does the actor scrape comments?

No. This actor focuses on Shorts listing metadata. Use a comments-focused actor when you need comment data.

Does the actor download video files?

No. It returns metadata and links, not media files.

Can I use the output in spreadsheets?

Yes. Export the dataset as CSV or Excel from Apify Console.