YouTube Shorts Scraper — Views, Likes & Viral Score
Pricing
from $20.00 / 1,000 short scrapeds
YouTube Shorts Scraper — Views, Likes & Viral Score
Scrape YouTube Shorts by keyword, channel, or hashtag. Returns video URL, title, views, likes, comments, hashtags, and a viral score. MCP-ready. $0.02/result.
Pricing
from $20.00 / 1,000 short scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
51
Total users
13
Monthly active users
4 days ago
Last modified
Categories
Share
YouTube Shorts Scraper — Titles, Views, Hashtags, Transcripts & Viral Score
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. It is also usable through Apify MCP.
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.
| Field | Type | Purpose |
|---|---|---|
searchQuery | string | Single keyword or phrase for a quick start search. |
searchQueries | array of strings | Multiple search keywords, each executed separately. |
channelUrls | array of strings | YouTube channel /shorts tab URLs. |
hashtagUrls | array of strings | YouTube hashtag page URLs. |
startUrls | array of objects | Direct Short URLs to enrich with metadata. |
maxResults | integer | Maximum Shorts per keyword, channel, or hashtag source. |
maxConcurrency | integer | Number of browser pages open at once. |
proxyConfiguration | object | Proxy settings for scraping and transcript fetches. |
includeTranscripts | boolean | Enables transcript extraction for Shorts with captions. |
transcriptLanguage | string | Preferred 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.
| Field | Type | Purpose |
|---|---|---|
video_id | string | YouTube Short video ID. |
title | string | Short title. |
description | string or null | Description text if present. |
url | string | Canonical Short URL. |
channel_name | string or null | Channel display name. |
channel_id | string or null | Creator channel ID. |
channel_url | string or null | Creator channel URL. |
channel_subscribers | number or null | Subscriber count at scrape time. |
view_count | number or null | View count at scrape time. |
like_count | number or null | Like count at scrape time. |
comment_count | number or null | Comment count at scrape time. |
duration_seconds | number or null | Short duration in seconds. |
published_at | string or null | Upload timestamp in ISO 8601 UTC. |
hashtags | array of strings | Hashtags extracted from title and description. |
audio_title | string or null | Music or audio track name. |
audio_author | string or null | Audio creator or artist. |
thumbnail_url | string or null | Thumbnail URL. |
engagement_rate | number or null | Computed as (likes + comments) / views. |
viral_score | number or null | Computed as views / subscribers. |
transcript_text | string or null | Plain-text transcript when enabled and available. |
transcript_segments | array or null | Timestamped transcript segments. |
transcript_language | string or null | Transcript language code. |
is_auto_generated | boolean or null | Whether the transcript came from ASR. |
transcript_word_count | number or null | Transcript word count. |
scraped_at | string | Scrape timestamp in ISO 8601 UTC. |
source_url | string | Discovery 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 scrapes public YouTube Shorts from search results, Shorts tab URLs, hashtag pages, or direct Short URLs. The implementation uses browser-based navigation and supports optional transcript enrichment. The live contract also shows a reliability update that wraps the top-level crawler run in try/catch so a fatal crawler issue can end the run with a terminal warning instead of a hard stop. 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, plus standard Apify platform usage. The live Pricing tab is the source of truth for current pricing details.
Charged events from the live contract:
- 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
includeTranscriptsis enabled
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_scorecompares a Short's views to the channel's subscriber count.engagement_ratecombines likes and comments relative to views.transcript_textandtranscript_segmentsappear only when transcript enrichment is enabled and a transcript is available.source_urlshows which search, channel, or hashtag page led to the item.
Provenance:
- Each record comes from the dataset produced by this Actor.
scraped_atrecords when the item was collected.urlpoints to the canonical YouTube Shorts URL.
Scope, pagination, and cost guidance:
searchQueries,channelUrls, andhashtagUrlsrespectmaxResultsper 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 transcript-heavy workflows, residential proxies are part of the live input contract guidance.
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.
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. Review access, retention, and downstream processing practices before combining the dataset with other personal or behavioral data.