YouTube Shorts Scraper avatar

YouTube Shorts Scraper

Pricing

from $0.06 / 1,000 result extracteds

Go to Apify Store
YouTube Shorts Scraper

YouTube Shorts Scraper

Extract public YouTube Shorts metadata from channel Shorts tabs and direct Shorts URLs for reporting, monitoring, and content research.

Pricing

from $0.06 / 1,000 result extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

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.

What does YouTube Shorts Scraper 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.

What data can I extract?

The actor returns one row per YouTube Short.

FieldDescription
shortUrlCanonical YouTube Shorts URL
videoIdYouTube video identifier
titleShort title or caption text when available
channelNameChannel name when available
channelUrlChannel URL when available
viewCountTextPublic view count label such as 14K views
thumbnailUrlThumbnail image URL
publishedTimeTextPublished date text when available
durationTextDuration text when available
positionResult position in the actor output
sourceUrlInput URL that produced the row
scrapedAtISO timestamp for the scrape

How much does it cost to scrape YouTube Shorts?

The actor uses pay-per-event pricing.

You pay a small run-start event plus a per-Short result event.

The exact live price is shown on the Apify Store page before you run the actor.

For a quick test, keep maxItems at the prefilled value.

For production jobs, increase maxItems to the number of Shorts you need.

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 usage

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.

FAQ

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.

Can I run it on a schedule?

Yes. Use Apify schedules to run it automatically.

Is login required?

No. The actor is designed for public pages visible without a YouTube account.

What should I put in maxItems?

Use a small value such as 20 for a quick test. Increase it for larger monitoring jobs.

Changelog

0.1

Initial version with channel Shorts tab scraping, direct Shorts URL support, duplicate prevention, and structured dataset output.