YouTube Shorts Scraper — Search, Channel, Hashtag & MP4 avatar

YouTube Shorts Scraper — Search, Channel, Hashtag & MP4

Pricing

from $20.00 / 1,000 short scrapeds

Go to Apify Store
YouTube Shorts Scraper — Search, Channel, Hashtag & MP4

YouTube Shorts Scraper — Search, Channel, Hashtag & MP4

Scrape YouTube Shorts by keyword, channel, hashtag or Short URL: views, likes, comments, engagement rate, viral score, audio, optional transcripts and MP4 download. Works with Apify MCP and the API.

Pricing

from $20.00 / 1,000 short scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

63

Total users

3

Monthly active users

2 days ago

Last modified

Share

What is YouTube Shorts Scraper — Search, Channel, Hashtag & MP4?

YouTube Shorts Scraper is an Apify Actor for public YouTube Shorts pages. It accepts a search keyword, a list of search keywords, channel Shorts tab URLs, hashtag URLs, or direct Short URLs. Each dataset record represents one scraped Short and includes the canonical URL, title, channel details, views, likes, comments, hashtags, audio metadata, engagement rate, viral score, and optional transcript data with timestamps. The outcome is a structured dataset you can review in Apify, export as JSON or CSV, or read through the Apify API. Filter by publish date with publishedAfter / publishedBefore to get only recent Shorts. It is also usable through Apify MCP.

Cost at a glance: one Short Scraped event per saved Short (MP4 download included), one Transcript Extracted event only when a transcript is returned, and one Actor Start event per run. Apify platform usage is included. Shorts skipped by the date window are not charged. See the Pricing tab for current prices.

Download Shorts as MP4

Turn on Download Shorts as MP4 (downloadVideos: true) to also save each Short as an MP4 file. Every row then gets:

FieldMeaning
downloadStatusdownloaded, failed, or not_requested
videoFileUrlLink to the saved MP4 in the run's key-value store
fileSizeBytes, videoWidth, videoHeightSize and resolution of the saved file
downloadRouteNetwork route that served the file: direct, datacenter, or residential
downloadErrorWhy a download failed or was skipped

Pick the quality with videoQuality (360p, 480p, 720p, 1080p or best; default 720p). Quality is measured on the short side, so 720p means 720×1280 for a vertical Short. Downloads try a direct connection first, then a datacenter proxy. If YouTube blocks both, a residential fallback saves the Short at up to 360p within a bandwidth budget for each run; a Short that does not fit is marked failed with the reason, and its metadata is still returned.

Best fit and connected workflows

This Actor fits workflows that begin with a Shorts discovery source and end with structured analysis.

Use it when you want to:

  • collect Shorts around a topic from a search keyword or keyword list,
  • review a creator's Shorts tab as part of creator research,
  • monitor a hashtag page for trend tracking,
  • enrich an existing Shorts URL list with engagement metrics,
  • add transcript fields for Shorts with captions when transcript enrichment is enabled.

A common workflow is to scrape Shorts here first, then pass returned video URLs or channel context into downstream analysis. For comment-level research, connect the output to YouTube Comments Scraper (with Replies) when you want public replies and discussion around a returned YouTube record.

Practical scenario

Maya, a content strategist, starts with a keyword list like "morning routine", "gym motivation", and "study tips". She runs the Actor with searchQueries and maxResults set for a focused batch. The dataset returns titles, channel names, view counts, like counts, comment counts, hashtags, engagement rate, viral score, and source URLs. Maya spots a Short with a high viral score and strong engagement rate, then opens the channel and uses the Short URL in her next briefing to review the format, hook, and caption style.

Input

Choose one or more input modes in the same run.

FieldTypePurpose
searchQuerystringSingle keyword or phrase for a quick start search.
searchQueriesarray of stringsMultiple search keywords, each executed separately.
channelUrlsarray of stringsYouTube channel /shorts tab URLs.
hashtagUrlsarray of stringsYouTube hashtag page URLs.
startUrlsarray of objectsDirect Short URLs to enrich with metadata.
maxResultsintegerMaximum Shorts per keyword, channel, or hashtag source.
publishedAfterstringKeep Shorts published on/after a date (2026-10-01) or within a relative window (7 days, 24 hours, 3 months).
publishedBeforestringKeep Shorts published on/before a date or relative point.
maxConcurrencyintegerNumber of browser pages open at once.
proxyConfigurationobjectProxy settings for scraping and transcript fetches.
includeTranscriptsbooleanEnables transcript extraction for Shorts with captions.
transcriptLanguagestringPreferred transcript language code.

Focused example:

{
"searchQueries": [
"morning routine",
"gym motivation"
],
"maxResults": 25,
"maxConcurrency": 3,
"includeTranscripts": true,
"transcriptLanguage": "en",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}

Output

Each dataset item is one scraped Short.

FieldTypePurpose
video_idstringYouTube Short video ID.
titlestringShort title.
descriptionstring or nullDescription text if present.
urlstringCanonical Short URL.
channel_namestring or nullChannel display name.
channel_idstring or nullCreator channel ID.
channel_urlstring or nullCreator channel URL.
channel_subscribersnumber or nullSubscriber count at scrape time.
view_countnumber or nullView count at scrape time.
like_countnumber or nullLike count at scrape time.
comment_countnumber or nullComment count at scrape time.
duration_secondsnumber or nullShort duration in seconds.
published_atstring or nullUpload timestamp in ISO 8601 UTC.
hashtagsarray of stringsHashtags extracted from title and description.
audio_titlestring or nullMusic or audio track name.
audio_authorstring or nullAudio creator or artist.
thumbnail_urlstring or nullThumbnail URL.
engagement_ratenumber or nullComputed as (likes + comments) / views.
viral_scorenumber or nullComputed as views / subscribers.
transcript_textstring or nullPlain-text transcript when enabled and available.
transcript_segmentsarray or nullTimestamped transcript segments.
transcript_languagestring or nullTranscript language code.
is_auto_generatedboolean or nullWhether the transcript came from ASR.
transcript_word_countnumber or nullTranscript word count.
scraped_atstringScrape timestamp in ISO 8601 UTC.
source_urlstringDiscovery URL that led to the Short.

Illustrative record:

{
"video_id": "dQw4w9WgXcQ",
"title": "5 Morning Habits That Changed My Life #shorts",
"url": "https://www.youtube.com/shorts/dQw4w9WgXcQ",
"channel_name": "HealthyHabitsDaily",
"view_count": 4800000,
"like_count": 182000,
"comment_count": 3241,
"hashtags": [
"#morningroutine",
"#productivity"
],
"audio_title": "Calm Morning Beats",
"audio_author": "LoFi Studio",
"engagement_rate": 0.0384,
"viral_score": 3.87,
"transcript_language": "en",
"is_auto_generated": true,
"transcript_word_count": 87,
"scraped_at": "2026-04-09T12:00:00.000Z",
"source_url": "https://www.youtube.com/results?search_query=morning+routine&sp=EgQKAUgB"
}

How it works

This Actor discovers public YouTube Shorts from search results, channel Shorts tabs, hashtag pages, or direct Short URLs, then opens each Short to read views, likes, comments, audio and channel details. With a date window set, it reads each Short's publish date and keeps only Shorts inside the window before saving or charging. Transcripts are added when includeTranscripts is on and captions exist. When downloadVideos is on, each Short is also saved as an MP4 in the run's key-value store. Every run ends with an OUTPUT and RUN_SUMMARY record (COMPLETE, PARTIAL, VALID_EMPTY or INVALID_INPUT) so automations can read the result. The dataset schema stores one record per Short, and the output schema exposes the dataset in JSON or CSV form through Apify links.

Pricing and Apify platform usage

This Actor uses Pay per event pricing on Apify with Apify platform usage included. The live Pricing tab is the source of truth for current pricing details.

Charged events:

  • Actor Start: charged once per run based on actor memory
  • Short Scraped: charged per successfully scraped Short
  • Transcript Extracted: charged only when a Short transcript is successfully fetched and includeTranscripts is enabled

Downloading Shorts adds no extra event charge; it is included in Short Scraped. Example: if a run returns twenty Shorts and transcripts are successfully fetched for eight of them, the pricing reflects twenty Short Scraped events, eight Transcript Extracted events, and one Actor Start event. Check the live Pricing tab in the Apify Console before running a job for the current rates.

Use with AI agents (MCP)

This Actor is available through Apify MCP as a tool for collecting structured Shorts data for AI workflows.

Tool description: scrape public YouTube Shorts by keyword, channel Shorts tab, hashtag page, or direct Short URL, and return structured fields for downstream analysis, retrieval, or enrichment.

Exact Actor identity: khadinakbar/youtube-shorts-scraper

Scrape YouTube Shorts for the keyword "morning routine". Return up to 20 results, include transcripts when captions are available, and provide the dataset rows with titles, channels, views, hashtags, viral score, and source URLs.

Output interpretation:

  • viral_score compares a Short's views to the channel's subscriber count.
  • engagement_rate combines likes and comments relative to views.
  • transcript_text and transcript_segments appear only when transcript enrichment is enabled and a transcript is available.
  • source_url shows which search, channel, or hashtag page led to the item.

Provenance:

  • Each record comes from the dataset produced by this Actor.
  • scraped_at records when the item was collected.
  • url points to the canonical YouTube Shorts URL.

Scope, pagination, and cost guidance:

  • searchQueries, channelUrls, and hashtagUrls respect maxResults per input source.
  • Direct Short URLs are fetched individually and returned as fully scraped records.
  • The primary event is charged per Short scraped.
  • Transcript extraction adds a separate event only for successful transcript fetches.

Apify API example

JavaScript example with APIFY_TOKEN and dataset readback:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const run = await client.actor('khadinakbar/youtube-shorts-scraper').call({
searchQueries: ['morning routine'],
maxResults: 10,
includeTranscripts: false,
});
const datasetId = run.defaultDatasetId;
const { items } = await client.dataset(datasetId).listItems();
console.log(items);

Best results and outcome guidance

Start with a narrow keyword, a single channel Shorts tab, or a specific hashtag when you want a tighter dataset. Use searchQueries for batch research, and use startUrls when you already have specific Shorts to enrich. Keep maxResults aligned with the size of the source you want to review, and use lower maxConcurrency values for steadier browser usage. When transcripts matter, enable includeTranscripts and set transcriptLanguage to the preferred ISO 639-1 code. For the newest Shorts from a creator, combine a channel URL with publishedAfter: "7 days".

Continue the workflow

Design note

I found that the dataset contract includes both engagement_rate and viral_score as computed output fields, which makes the Actor useful for ranking Shorts without extra post-processing.

FAQ

When should I use a search keyword versus a channel URL?

Use a search keyword or keyword list when you want topic discovery across many creators. Use a channel /shorts URL when you want the Shorts catalog for one creator.

When should I use a hashtag URL?

Use a hashtag URL when the workflow starts from a trend, niche label, or campaign tag and you want Shorts that are grouped around that tag.

When should I use direct Short URLs?

Use direct Short URLs when you already have a list of Shorts and want to enrich them with views, likes, comments, hashtags, audio data, or transcripts.

Which output fields are useful for ranking?

view_count, engagement_rate, and viral_score are the main ranking fields. hashtags, audio_title, and audio_author help with trend analysis.

How are transcripts handled?

When includeTranscripts is enabled, the Actor returns transcript fields for Shorts where captions are available. The dataset includes both plain text and timestamped segments.

Can I get only Shorts published after a date?

Yes. Set publishedAfter to a date such as 2026-10-01 or a relative window such as 7 days, and optionally publishedBefore. Shorts outside the window, or with no readable publish date, are skipped without a charge.

Does MP4 download cost extra?

No extra event. The MP4 is included in the Short Scraped event for that Short.

Why did I get fewer Shorts than maxResults?

The source page may list fewer Shorts, the date window may skip some, or Shorts without readable metadata are left out instead of being saved as empty rows. The OUTPUT record states the outcome and how many Shorts the date window skipped.

How does this connect to other YouTube workflows?

A common next step is to pass the returned Short URLs or creator context into YouTube Comments Scraper (with Replies) for comment analysis.

Responsible use

Use this Actor for publicly accessible YouTube Shorts and for lawful data collection that fits your compliance requirements and the YouTube terms that apply to your use case. Downloaded videos belong to their creators: reuse them only where you own the rights, have the creator's permission, or another legal basis applies. Review access, retention, and downstream processing practices before combining the dataset with other personal or behavioral data.