YouTube Shorts Scraper avatar

YouTube Shorts Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
YouTube Shorts Scraper

YouTube Shorts Scraper

Extract metadata, views, likes, dislikes, comments, music, and channel data from YouTube Shorts. Search by keyword, channel URL, or video link. Pure HTTP, no browser, 256 MB memory.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

deusex machine

deusex machine

Maintained by Community

Actor stats

1

Bookmarked

26

Total users

11

Monthly active users

7 days ago

Last modified

Categories

Share

YouTube Shorts Scraper — Views, Likes, Dislikes, Comments & Music API

Useful? Leave a review — it takes 10 seconds and is the single biggest thing that helps other trend researchers, creator-economy analysts, brand marketers and short-form video tool builders find this YouTube Shorts scraper.

A fast, production-grade YouTube Shorts scraper that extracts full metadata, engagement metrics and optional top comments from YouTube Shorts search results. For every Short it pulls video ID, title, description, channel name and URL, view count, like count, dislike count (via the community Return YouTube Dislike dataset), comment count, publish date, hashtags / keywords, thumbnail URL, music or sound attribution, and — when enabled — the top comments with author, text, likes and relative timestamp.

No YouTube Data API v3 key, no OAuth, no daily quota, no waiting for Google to approve your app. Pass an array of search keywords like "cooking hacks", "fitness motivation" or "funny cats" and get back clean JSON or CSV ready to drop into a trend dashboard, a creator CRM, a content-planning tool, a sentiment-analysis pipeline or a brand-safety system.

Built for trend researchers, creator economy analysts, YouTube creators benchmarking their own niche, brand marketers tracking campaign hashtags, music and sync-licensing analysts, content-strategy agencies, social listening vendors, creator CRMs, UGC discovery platforms and anyone doing YouTube Shorts research at scale.

✨ Why use this scraper

Given a list of search queries, this actor hits the internal YouTube / InnerTube API to retrieve Shorts-category results, extracts video IDs, resolves every ID to its full metadata via InnerTube video endpoints, augments the metrics with the Return YouTube Dislike community-sourced dislike API and optionally opens each Short's comment panel to extract the top comments.

The #shorts hashtag is appended automatically to every search query so you don't accidentally mix regular long-form videos into your dataset. When onlyShortsFilter is enabled, the actor also filters out any result that exceeds ~60 seconds, guaranteeing a clean Shorts-only dataset.

Under the hood, the actor talks to an internal backend that wraps Patchright — an undetectable Chromium fork — and a hardened InnerTube client. That combination bypasses YouTube's typical bot-detection checks natively, without the stealth-plugin whack-a-mole that stock Puppeteer + puppeteer-extra-plugin-stealth runs into on YouTube.

The official YouTube Data API v3 is free but has harsh trade-offs for short-form video research:

  • 10,000-unit daily quota — a single search.list call costs 100 units. That's 100 searches per day, total, across your entire project. Shorts research at scale blows through this in minutes.
  • No dislike count — YouTube removed dislikes from the Data API in 2021. You cannot get dislikeCount from any official endpoint at any price.
  • No music / sound attribution — Shorts audio metadata (song name, original sound) is not exposed in the Data API.
  • Shallow comment access — the commentThreads.list endpoint is rate-limited and frequently rejected on Shorts specifically.
  • Quota-increase forms — burst past the default and Google asks for a use-case justification and a multi-week review.

This actor works around every one of those limits. Dislikes come from Return YouTube Dislike's public API (a community project with hundreds of millions of cached counts). Music is parsed from the Shorts player. Comments are pulled from the Shorts comment panel directly. No quota, no review, no approvals.

📤 Output fields

One item per Short, flat JSON (with an optional comments array). Maps cleanly to a BigQuery schema, a Postgres table or a Google Sheet.

Video metadata

FieldTypeDescription
videoIdstring11-character YouTube video identifier
urlstringDirect link in /shorts/ format
titlestringVideo title including inline hashtags
descriptionstringVideo description (often empty — YouTube hides it on Shorts without login)
publishDatestringHuman-readable publish date, e.g. "Mar 30, 2026"
isShortbooleanAlways true for Shorts
keywordsarrayHashtags extracted from the title
thumbnailstringThumbnail URL from i.ytimg.com
musicstringSong or sound name ("Original Sound", artist / track name, sound creator)

Engagement metrics

FieldTypeDescription
viewCountintegerExact total views
likeCountintegerTotal likes
dislikeCountintegerEstimated dislikes via Return YouTube Dislike API
commentCountintegerTotal number of comments

Channel data

FieldTypeDescription
channelNamestringCreator's display name
channelIdstringChannel identifier in UCxxxxxxxxxx format
channelUrlstringLink to the channel page
subscriberCountintegerSubscriber count (often 0 on Shorts — YouTube hides this on the Shorts player)

Comments (when includeComments=true)

Each Short gets an additional comments array. Comment fields:

FieldTypeDescription
authorstringCommenter's @handle
textstringFull comment text
likesintegerLikes on the comment
publishedTimestringRelative timestamp ("2 hours ago")

When enabled, the scraper clicks the comment button on each Short, waits for the panel to render, and extracts up to 20 visible comments per video.

Run metadata

FieldTypeDescription
scrapedAtstringISO 8601 timestamp of extraction

🎯 Use cases

  • Trend research — search by keyword to spot which topics, hashtags and sounds are gaining traction before they peak. Shorts is the fastest-moving discovery layer on YouTube; catching a trend early has outsized ROI.
  • Creator analytics — pull Shorts from search terms and benchmark engagement rates (likeCount / viewCount), comment velocity and publishing cadence across creators in a niche.
  • Competitor monitoring — track what direct competitors publish, how fast their audience engages and what commenters are actually saying.
  • Content strategy — analyze the top-performing Shorts in your category to understand which hooks, formats and audio drive views.
  • Music and sound tracking — identify which songs, original sounds and creator audio are trending across Shorts. Feed into sync-licensing and music-discovery workflows.
  • Sentiment analysis and NLP — extract comments to measure audience sentiment. Route through OpenAI, Claude or a local Llama for feature-request and bug extraction from creator content.
  • Engagement benchmarking — compare like-to-view ratios and dislike ratios across videos, niches and creators. Ranking by these ratios uncovers viral sleepers that raw view-count lists miss.
  • Brand safety — when your brand sponsors a creator, scrape their Shorts weekly, scan comments for toxic language or coordinated attacks, flag early.
  • Creator discovery for brand partnerships — rank emerging creators by engagement velocity rather than lagging subscriber counts. Reach out before their rates balloon.
  • Training data for LLMs and recommenders — Shorts titles and comments in underrepresented languages are valuable fine-tuning data.

🚀 How to use

{
"searchQueries": ["cooking hacks", "meal prep ideas"],
"maxResultsPerQuery": 20
}

Mode 2 — search with comments

{
"searchQueries": ["funny cats"],
"maxResultsPerQuery": 10,
"includeComments": true,
"maxComments": 5
}

Mode 3 — multi-keyword niche scan

{
"searchQueries": ["fitness motivation", "home workout", "gym fails"],
"maxResultsPerQuery": 30
}

Mode 4 — sort by upload date for newest Shorts

{
"searchQueries": ["ai tools"],
"maxResultsPerQuery": 50,
"sortBy": "upload_date"
}

Mode 5 — sort by view count for top Shorts

{
"searchQueries": ["travel vlog"],
"maxResultsPerQuery": 50,
"sortBy": "view_count"
}

Mode 6 — high-volume competitive scan

{
"searchQueries": ["iphone 17 review", "pixel 10 review", "samsung s26 review"],
"maxResultsPerQuery": 100,
"includeComments": true,
"maxComments": 20
}

📥 Input

ParameterTypeDefaultDescription
searchQueriesarray[]Keywords to search. #shorts is appended automatically (required)
channelUrlsarray[]Channel URLs to scrape Shorts from (e.g. https://www.youtube.com/@MrBeast)
videoUrlsarray[]Direct Short or video URLs to scrape
playlistUrlsarray[]Playlist URLs to scrape every video from
maxResultsPerQueryinteger20Max Shorts per query / channel (1–200)
sortBystringrelevancerelevance, upload_date, or view_count (search only)
publishedAfterstringISO date — only Shorts published after this date
publishedBeforestringISO date — only Shorts published before this date
includeCommentsbooleanfalseExtract top comments per Short
maxCommentsinteger10Comments per Short when enabled (1–100)
onlyShortsFilterbooleantrueFilter out videos longer than ~60s so you get pure Shorts data

📋 Output example

Short with comments

{
"videoId": "Hh6beuoFjww",
"url": "https://www.youtube.com/shorts/Hh6beuoFjww",
"title": "cats being cats 🤣#youtubeshorts #funnycats #catvideos #shortvideo",
"description": "",
"channelName": "Hilarious_cats19",
"channelId": "UCC1g5eTBsEvHPWWPthcxZ4g",
"channelUrl": "https://www.youtube.com/@Hilarious_cats19",
"viewCount": 7457,
"likeCount": 664,
"dislikeCount": 6,
"commentCount": 7,
"subscriberCount": 0,
"keywords": ["youtubeshorts", "funnycats", "catvideos", "shortvideo"],
"thumbnail": "https://i.ytimg.com/vi/Hh6beuoFjww/frame0.jpg",
"publishDate": "Mar 30, 2026",
"isShort": true,
"music": "Original Sound",
"scrapedAt": "2026-04-22T04:45:47.559Z",
"comments": [
{ "author": "@deeannsmith7775", "text": "Love the Voids", "likes": 0, "publishedTime": "2 hours ago" },
{ "author": "@arien3776", "text": "Jajsjsjs", "likes": 0, "publishedTime": "4 hours ago" }
]
}
{
"videoId": "V_tjF0lWmsw",
"url": "https://www.youtube.com/shorts/V_tjF0lWmsw",
"title": "Brave Chihuahua vs Calm Bulldog: Funny Dog Standoff 😱",
"description": "",
"channelName": "doggo.pranks",
"channelId": "UCUINei7Oezna9eVO1KjbbHg",
"channelUrl": "https://www.youtube.com/@doggo.pranks",
"viewCount": 13392,
"likeCount": 199,
"dislikeCount": 4,
"commentCount": 2,
"subscriberCount": 0,
"keywords": [],
"thumbnail": "https://i.ytimg.com/vi/V_tjF0lWmsw/frame0.jpg",
"publishDate": "Mar 29, 2026",
"isShort": true,
"music": "Original Sound",
"scrapedAt": "2026-04-22T04:34:45.872Z"
}

Export the dataset as JSON, CSV, Excel, XML, JSONL or HTML table directly from the Apify console, or via the Apify API.

💻 Code examples

curl

curl -X POST 'https://api.apify.com/v2/acts/makework36~youtube-shorts-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"searchQueries": ["cooking hacks"],
"maxResultsPerQuery": 30,
"includeComments": true,
"maxComments": 10
}'

Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("makework36/youtube-shorts-scraper").call(run_input={
"searchQueries": ["ai tools", "ai startups"],
"maxResultsPerQuery": 50,
"sortBy": "view_count",
"includeComments": True,
"maxComments": 20,
})
for s in client.dataset(run["defaultDatasetId"]).iterate_items():
ratio = s["likeCount"] / max(s["viewCount"], 1)
print(f"{s['videoId']} views={s['viewCount']:>8} ratio={ratio:.3f} {s['title'][:60]}")

Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('makework36/youtube-shorts-scraper').call({
searchQueries: ['travel vlog'],
maxResultsPerQuery: 50,
sortBy: 'upload_date',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.table(items.map((s) => ({
id: s.videoId, views: s.viewCount, likes: s.likeCount, music: s.music,
})));

Export to CSV

From the run page → ExportCSV. Or via API:

https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&token=YOUR_TOKEN

Feed Shorts into a sentiment pipeline

from apify_client import ApifyClient
import openai
client = ApifyClient("YOUR_APIFY_TOKEN")
oa = openai.OpenAI()
run = client.actor("makework36/youtube-shorts-scraper").call(run_input={
"searchQueries": ["my_brand_campaign"],
"maxResultsPerQuery": 30,
"includeComments": True,
"maxComments": 20,
})
for short in client.dataset(run["defaultDatasetId"]).iterate_items():
joined = "\n".join(c["text"] for c in short.get("comments", []))
if not joined: continue
resp = oa.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": f"Sentiment (pos/neg/neu) of these Shorts comments:\n{joined}"}],
)
print(short["videoId"], resp.choices[0].message.content)

Zapier / Make.com no-code

Both Zapier and Make have an official Apify integration. Trigger on a schedule, action "Run Apify Actor", pass this actor's name and your input JSON, then send the output into a Google Sheet, Airtable, Slack alert or Notion row.

⚡ Performance

  • ~3–5 seconds per Short in metadata-only mode
  • ~8–10 seconds per Short with includeComments enabled
  • Up to 200 Shorts per query — raise maxResultsPerQuery as needed
  • Multi-query runs process sequentially to stay polite to YouTube
  • No daily quota — runs are limited only by your Apify compute budget

📊 Comparison

Several YouTube scrapers live on the Apify Store. Here's how this one stacks up on what actually matters for short-form video research.

FeatureThis scraperAlternative AAlternative BAlternative C
Bypass bot detectionPatchright (undetectable Chromium)Puppeteer + stealthRaw HTTP (fragile)Playwright
Dislike countYes (Return YouTube Dislike)NoNoNo
Comment extractionBuilt-inSeparate actor ($)NoPartial
Music / sound attributionYesNoNoPartial
Channel data inlineYesYesPartialYes
Sort by relevance / date / viewsYesPartialNoYes
Date-range filterYes (publishedAfter / publishedBefore)NoNoPartial
Shorts-only filter (≤60s)YesNoNoPartial
Multi-keyword per runYes (array)YesSingleYes
Max results per query20010050100
Needs YouTube Data API keyNoNoNoNo
Code examples in READMEPython / Node / curl / OpenAINoneNoneNone

The honest take: if you only need basic metadata and never care about dislikes, music or comments, a cheaper metadata-only scraper is fine. If you want the full signal set that lets you do serious Shorts research — dislike ratios, comment sentiment, music trends — this scraper bundles it all in one pass.

💵 Pricing

Pay-per-result model:

PlanPrice per Short1K Shorts10K Shorts100K Shorts
FREE trial$0 (up to $5 credit)freeN/AN/A
BRONZE$0.004$4$40$400
SILVER$0.0035$3.50$35$350
GOLD$0.003$3$30$300
DIAMOND$0.0025$2.50$25$250

Apify gives every new user a $5 trial credit — enough to scrape ~1,250 Shorts while you evaluate. No subscription, no minimum, no egress fees. Adding includeComments does not change the per-result price; it only adds compute time.

❓ FAQ

Can I scrape regular YouTube videos, not just Shorts? This actor is focused on Shorts. For regular long-form videos, use our YouTube Scraper.

Can I scrape dislikes? Yes. Dislike counts come from the Return YouTube Dislike community API. Very new or low-traffic videos may show zero dislikes until the community collects enough data.

Can I extract comments from Shorts? Yes. Set includeComments to true. The scraper opens each Short's comment panel and extracts author, text, likes and timestamp. Up to 20 comments per Short are available.

Why is description empty on Shorts? YouTube doesn't expose the full description on the Shorts player without login. The title usually contains the relevant hashtags and context.

Why is subscriberCount zero on Shorts? YouTube's Shorts page doesn't display subscriber counts. The channelUrl lets you resolve subscribers via a separate lookup.

Why is music null on some Shorts? Not every Short uses a tagged audio track. Creator-uploaded custom audio without a selected YouTube sound will leave music null.

Is scraping YouTube legal? Scraping publicly available data is generally permissible in most jurisdictions. Respect YouTube's Terms of Service and privacy regulations (GDPR, CCPA, LGPD). Consult legal counsel for your specific use case.

Can I run this on a schedule? Yes. Apify's scheduler supports daily, weekly and custom cron expressions. Every run writes to a fresh dataset that you can pull over the Apify API.

Do I need a YouTube Data API v3 key? No. This scraper doesn't touch the official Data API, so quota limits, key rotation and OAuth are all irrelevant.

Can I filter by minimum view count or engagement ratio? Not in the input — filter client-side on viewCount, likeCount and commentCount. That's faster and more flexible than server-side filtering.

📝 Changelog

  • v1.0 (2026-04-22) — Full SEO rewrite, pricing tiers, comparison table, OpenAI sentiment example, advanced patterns, channel / playlist input parameters.
  • v0.4 (2026-03-30) — Comment extraction via Shorts comment panel.
  • v0.3 (2026-03-10) — Music / sound attribution.
  • v0.2 (2026-02-20) — Return YouTube Dislike integration.
  • v0.1 (2026-02-01) — Initial release — Shorts search metadata via InnerTube.