YouTube Shorts [Only $0.45💰] Scraper
Pricing
from $0.45 / 1,000 results
YouTube Shorts [Only $0.45💰] Scraper
$0.45💰 Unlock YouTube Shorts analytics! Extract views, likes, and engagement data from any channel. Get complete channel stats: 919M+ views tracking, subscriber counts, join dates, locations. Bulk scrape with sorting options. Perfect for content creators, marketers, and researchers analyzing trends
Pricing
from $0.45 / 1,000 results
Rating
5.0
(1)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
91
Total users
17
Monthly active users
a day ago
Last modified
Categories
Share
YouTube Shorts Scraper - Extract Shorts, Channel Data & Engagement Metrics
Unlock the power of YouTube Shorts analytics with our comprehensive Shorts Scraper. Extract detailed metadata, engagement metrics, and complete channel information from any YouTube Shorts channel or individual short video.
Overview
This actor allows you to scrape detailed information about YouTube Shorts, including title, view count, likes, duration, thumbnail URLs, and comprehensive channel metadata. Extract all shorts from any channel with complete engagement data and channel statistics. It provides valuable insights for content creators, marketers, and researchers looking to analyze Shorts performance, channel growth, and audience engagement.
Features
- Complete Shorts Information: Extract comprehensive metadata about each short video including title, views, likes, duration, and upload date.
- Channel Analytics: Get detailed channel information including total subscribers, total views, total videos, join date, and location.
- Engagement Metrics: Capture view counts, like counts, and engagement statistics for every short.
- Channel Branding Assets: Extract channel avatar URLs, banner images, and profile information.
- Bulk Scraping: Scrape all shorts from a channel or specify a maximum number of items.
- Sorting Options: Sort shorts by NEWEST, POPULAR, or OLDEST to get exactly the content you need.
- Hashtag Extraction: Automatically extract all hashtags from short descriptions.
- Transcripts (TXT / SRT / VTT): Optional
includeTranscriptadds plain text, timed segments, and ready-to-save SubRip + WebVTT subtitle files for every Short. - Real Comment Counts:
commentsCountis read from the Shorts page for every video. - Music / Sound Credits: Song title, artist, and album for Shorts that use licensed audio (
musicfield). - Computed Engagement Metrics:
engagementRate(likes/views),viewsPerDay, anddaysSincePublishedon every row — viral-score analysis without extra math. - Region & Language Targeting: Optional
regionCode(gl) andcontentLanguage(hl) to localize listings and metadata. - Error Reporting: Failed sources (missing channel, empty hashtag, blocked page…) push structured error items to the dataset instead of failing silently — integration-friendly (Make, Zapier, n8n).
- Customizable: Flexible configuration options including max items, sorting, and concurrency settings.
- Proxy Support: Built-in proxy configuration to enhance scraping reliability and avoid blocks.
- Scrape 40+ critical data points from any YouTube Short, including:
🎯 Core Metrics
- View counts per short
- Like counts (real-time engagement data)
- Engagement rate, views per day, days since published (computed)
- Music/sound credits (song, artist, album)
- Video duration and upload date
- Short type and format information
📊 Channel Analytics
- Total subscriber count
- Total channel views (all-time)
- Total videos published
- Channel join date and location
- Channel verification status
📜 Content Details
- Complete Short Metadata
- Title and translated title support
- Thumbnail URLs (high quality)
- Hashtag extraction
- Description and links
- Channel Information:
- Channel description
- Channel username and ID
- Avatar and banner URLs
- Age restriction status
🛠 Technical Features
- Automatic resolution of:
- Channel URLs (handle, @username, or channel ID)
- Individual short URLs
- Bulk channel shorts extraction
How to Use
- Set Up: Ensure you have an Apify account and access to the Apify platform.
- Configure Input: Set the YouTube channel URL(s) or individual short URL(s) you want to scrape (see Input Configuration section).
- Adjust Parameters: (Optional) Configure maxItems, sorting order (NEWEST/POPULAR/OLDEST), concurrency, and proxy settings.
- Run the Scraper: Execute the scraper on the Apify platform.
- Data Collection: The scraper will output detailed data about each short including views, likes, and complete channel metadata.
Input Configuration
Here's an example of how to set up the input for the YouTube Shorts Scraper:
{"channels": ["rainbowicecream9780","Marques Brownlee"],"startUrls": ["https://www.youtube.com/@channelname/shorts"],"searchQueries": ["web scraping", "apify tutorial"],"hashtags": ["shorts", "coding"],"shortUrls": ["https://www.youtube.com/shorts/HKs9NvVRi5s"],"maxItems": 50,"maxResultsShorts": 100,"sortChannelShortsBy": "NEWEST","oldestPostDate": "2026-01-01","regionCode": "US","contentLanguage": "en","maxConcurrency": 10,"maxRequestRetries": 15,"includeTranscript": false,"language": "default","proxy": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Input Fields Explanation
You need at least one source: channels, startUrls, searchQueries, hashtags, and/or shortUrls.
Data sources
| Field | Type | Description |
|---|---|---|
channels | string[] | Channel names: a username without the @ ("rainbowicecream9780"), an @handle, a display name with spaces or punctuation ("Marques Brownlee", "AC/DC"), or a full channel link. See Channel name resolution below. |
startUrls | string[] | The same channel sources as a URL list: full Shorts tab URLs (https://www.youtube.com/@handle/shorts, m.youtube.com, /channel/UC…/shorts, /c/…/shorts, /user/…/shorts, /Apify/shorts), scheme-less youtube.com/…, or bare handles. Merged with channels, which is processed first; an entry present in both with the same spelling is scraped once, but the same channel reached two different ways (a name and its channel link) is scraped twice. |
searchQueries | string[] | Keywords for YouTube Shorts search (each query is run separately; same detail pipeline as channels). |
hashtags | string[] | Hashtag hub pages: enter apify or #apify per row → /hashtag/{tag}/shorts. |
shortUrls | string[] | Direct Shorts only: youtube.com/shorts/VIDEO_ID, watch?v=, youtu.be/…. Each unique video id is scraped once; counts toward maxItems. |
Channel name resolution
A name is first tried as a handle (MrBeast → youtube.com/@MrBeast/shorts), which is what most names are — that costs no extra request. Only when the handle does not exist does the actor look further: the legacy shapes youtube.com/{name}, /c/{name}, /user/{name}, and then YouTube's channel search. A search result is accepted only when its channel title or @handle matches the name you typed (ignoring case, spaces and punctuation), so a typo returns a CHANNEL_NAME_NOT_RESOLVED row rather than Shorts from a look-alike channel. The three URL shapes are exact lookups of the token you typed in YouTube's own namespaces, so no title check is applied to them — a vanity path rarely equals the channel's display title.
Only a real answer from YouTube produces CHANNEL_NAME_NOT_RESOLVED. A bot check or a 401/403/429 from a flagged proxy exit is CHANNEL_PAGE_BLOCKED, and a 5xx or network failure during resolution is CHANNEL_PAGE_FETCH_FAILED — neither is ever reported as a name that matched nothing.
Rows carry the text you typed in input, so an error row is traceable back to the exact entry in your list. An entry that is neither a name nor a YouTube channel URL (https://example.com/x) is skipped with a CHANNEL_INPUT_INVALID row instead of vanishing.
Limits and filtering
| Field | Type | Description |
|---|---|---|
maxItems | number | Global cap: maximum total Shorts to scrape (default 30 if omitted; free users are capped at 30). |
maxResultsShorts | number | Per-source cap: max Shorts per channel, per search query, or per hashtag (in addition to maxItems). |
sortChannelShortsBy | string | Channel Shorts tab order: "NEWEST" (default), "POPULAR", or "OLDEST" (uses YouTube sort chips for Popular/Oldest). |
oldestPostDate | string | Only keep Shorts published on or after this threshold. Absolute: YYYY-MM-DD or YYYY-MM-DDTHH:MM[:SS]Z (UTC, inclusive). Relative: e.g. 30 minutes, 2 hours, 7 days, 2 weeks, 3 months, 1 year. Empty = disabled. |
Localization
| Field | Type | Description |
|---|---|---|
regionCode | string | ISO 3166-1 alpha-2 country for YouTube gl (e.g. US, DE, JP). Applied to listing pages and InnerTube requests. Empty = proxy IP default. |
contentLanguage | string | Interface language for YouTube hl (e.g. en, de, pt-BR). Affects localized metadata text. Empty = default. |
Crawler and reliability
| Field | Type | Default (input schema) | Description |
|---|---|---|---|
maxConcurrency | number | 10 | Max pages processed in parallel. |
maxRequestRetries | number | 15 | Attempts per failed request before the source is given up on. Lower it to spend less on channels that are blocked or gone; raise it for flaky proxies. 404s are never retried. |
Omitting maxRequestRetries gives the same 15 as the schema default, so a minimal JSON body behaves exactly like a Console run.
Proxy
| Field | Type | Description |
|---|---|---|
proxy | object | Standard Apify proxy settings: e.g. useApifyProxy, apifyProxyGroups (e.g. RESIDENTIAL), apifyProxyCountry, or custom proxyUrls. See Apify proxy docs. |
Transcripts
| Field | Type | Default | Description |
|---|---|---|---|
includeTranscript | boolean | false | Fetch the transcript for each Short and add a subtitles object to the output: plain text, timed segments, plus ready-to-save SRT and WebVTT strings. |
language | string | "default" | Preferred transcript language code (e.g. en, de, es). Falls back to English / YouTube's default track when unavailable. |
Output Structure
The output data includes detailed information about each YouTube Short along with comprehensive channel metadata. Here's a complete sample of the structure:
[{"title": "ASRM Satisfying sounds #asmr #music #funny #animation #shortvideo #shorts #satisfying","translatedTitle": null,"type": "shorts","id": "HKs9NvVRi5s","url": "https://www.youtube.com/shorts/HKs9NvVRi5s","thumbnailUrl": "https://i.ytimg.com/vi/HKs9NvVRi5s/hq2.jpg?sqp=-oaymwFACKgBEF5IWvKriqkDMwgBFQAAiEIYANgBAeIBCggYEAIYBjgBQAHwAQH4AbYIgAKAD4oCDAgAEAEYciBDKDkwDw==&rs=AOn4CLBaOHct_7Ob2lwOZzME6tCzLeyl5g","viewCount": 173323,"date": "2025-08-04T03:00:33-07:00","likes": 1251,"location": null,"channelName": "Coco Creator Rainbow","channelUrl": "https://www.youtube.com/channel/UC3N1VbltR6aREupzvJ8y-sw","channelUsername": "rainbowicecream9780","collaborators": null,"channelId": "UC3N1VbltR6aREupzvJ8y-sw","channelDescription": "Thank you so much! I appreciate you all watching the videos.\n","channelJoinedDate": "Aug 9, 2021","channelDescriptionLinks": [],"channelLocation": "United States","channelAvatarUrl": "https://yt3.googleusercontent.com/nVSr8lanf5UPU4Mc6oWOmKWqQ8VoFceHcQsM5sW63ZPp4r1S6M6pHr4stNOMGyknf1ig1Wjh3A=s160-c-k-c0x00ffffff-no-rj","channelBannerUrl": "https://yt3.googleusercontent.com/Wg27ZtirmK5sH4Bx7atk4CugZubFCTwsXZsKdITtWPT6aTiikJgl26heFNxnM16UJi0-qnlUxQ=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj","channelTotalVideos": 230,"channelTotalViews": 919280766,"numberOfSubscribers": 1380000,"isChannelVerified": false,"inputChannelUrl": "https://www.youtube.com/@rainbowicecream9780/shorts","isAgeRestricted": false,"aboutChannelInfo": {"channelName": "Coco Creator Rainbow","channelId": "UC3N1VbltR6aREupzvJ8y-sw","channelUrl": "https://www.youtube.com/channel/UC3N1VbltR6aREupzvJ8y-sw","channelUsername": "rainbowicecream9780","numberOfSubscribers": 1380000,"channelTotalViews": 919280766,"channelTotalVideos": 230,"channelAvatarUrl": "https://yt3.googleusercontent.com/nVSr8lanf5UPU4Mc6oWOmKWqQ8VoFceHcQsM5sW63ZPp4r1S6M6pHr4stNOMGyknf1ig1Wjh3A=s160-c-k-c0x00ffffff-no-rj","channelBannerUrl": "https://yt3.googleusercontent.com/Wg27ZtirmK5sH4Bx7atk4CugZubFCTwsXZsKdITtWPT6aTiikJgl26heFNxnM16UJi0-qnlUxQ=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj","isChannelVerified": false,"channelDescription": "Thank you so much! I appreciate you all watching the videos.\n","channelJoinedDate": "Aug 9, 2021","channelLocation": "United States","isAgeRestricted": false,"inputChannelUrl": "https://www.youtube.com/@rainbowicecream9780/shorts"},"duration": "00:00:51","commentsCount": 0,"text": null,"translatedText": null,"descriptionLinks": null,"subtitles": null,"order": 0,"commentsTurnedOff": false,"fromYTUrl": "https://www.youtube.com/@rainbowicecream9780/shorts","isMonetized": null,"hashtags": [],"formats": [],"isMembersOnly": false,"input": "https://www.youtube.com/@rainbowicecream9780/shorts","fromChannelListPage": "shorts","isPaidContent": false,"music": {"song": "Night","artist": "Kilo G","album": "Mercy","thumbnailUrl": "https://yt3.googleusercontent.com/28bcrPUQOxi6GimxKsf…","source": "videoAttribute"},"engagementRate": 0.007218,"viewsPerDay": 561.26,"daysSincePublished": 310}]
Output Fields Explanation
Each short in the output contains the following fields:
🎬 Video Information
title(string): The title of the YouTube Short as it appears on YouTubetranslatedTitle(string|null): Translated title if translation is enabled, otherwise nulltype(string): Content type, always "shorts" for YouTube Shortsid(string): Unique YouTube video ID for the shorturl(string): Full URL to access the short on YouTubethumbnailUrl(string): High-quality thumbnail image URL for the shortduration(string): Video duration in HH:MM:SS format (e.g., "00:00:51")date(string): Upload/publish date in ISO 8601 formatorder(number): Sequential order number of the short in the result set
📊 Engagement Metrics
viewCount(number): Total number of views the short has receivedlikes(number): Total number of likes on the shortcommentsCount(number): Total number of comments on the short (read from the Shorts page;0when none are visible)commentsTurnedOff(boolean): Whether comments are disabled for this shortengagementRate(number|null): Likes ÷ views ratio (0–1, 6 decimals);nullwhen views are unknownviewsPerDay(number|null): Views ÷ days since publish — spot virality at a glancedaysSincePublished(number|null): Whole days since the publish date
🎵 Music / Sound
music(object|null): Sound credits when the Short uses licensed audio, otherwisenull(original audio)song(string|null): Track titleartist(string|null): Artist namealbum(string|null): Album name when availablethumbnailUrl(string|null): Cover art URLsource(string): Which YouTube data shape supplied the credits (musicSectionorvideoAttribute)
📺 Channel Information
channelName(string): Display name of the channel that posted the shortchannelUrl(string): Full URL to the channel pagechannelUsername(string): Channel username/handle (without @ symbol)channelId(string): Unique YouTube channel IDchannelDescription(string): Channel's about/description textchannelJoinedDate(string): Date when the channel was created (e.g., "Aug 9, 2021")channelLocation(string): Geographic location of the channelchannelAvatarUrl(string): URL to the channel's profile picture/avatarchannelBannerUrl(string): URL to the channel's banner imagechannelDescriptionLinks(array): Array of links from the channel description
📈 Channel Statistics
numberOfSubscribers(number): Total subscriber count for the channelchannelTotalViews(number): Total all-time views across all channel videoschannelTotalVideos(number): Total number of videos published on the channelisChannelVerified(boolean): Whether the channel has YouTube verification badge
🔍 Additional Metadata
location(string|null): Geographic location tag for the video (if set)collaborators(array|null): List of collaborators on the video (if any)isAgeRestricted(boolean): Whether the content is age-restrictedisMonetized(boolean|null): Monetization status of the videoisMembersOnly(boolean): Whether the content is restricted to channel membersisPaidContent(boolean): Whether this is paid promotional contenthashtags(array): Array of hashtags extracted from the video title/descriptiontext(string|null): Video description texttranslatedText(string|null): Translated description if translation is enableddescriptionLinks(array|null): Links extracted from video descriptionsubtitles(object|null): Transcript data whenincludeTranscriptis enabled and a transcript exists:plainText(string): Full transcript as one stringsegments(array): Timed segments{ text, startMs, endMs, startTimeText }srt(string): Ready-to-save SubRip (.srt) file contentvtt(string): Ready-to-save WebVTT (.vtt) file contentsource(string): Transcript provider used
formats(array): Available video format information
🔄 Scraper Context
inputChannelUrl(string): The original input URL used to scrape this shortfromYTUrl(string): The YouTube URL where this short was foundinput(string): The exact input parameter provided to the scraperfromChannelListPage(string): Which channel page type was scraped ("shorts", "videos", etc.)
📦 aboutChannelInfo Object
Contains a complete snapshot of channel metadata at the time of scraping:
channelName(string): Channel display namechannelId(string): Unique channel identifierchannelUrl(string): Full channel URLchannelUsername(string): Channel username/handlenumberOfSubscribers(number): Subscriber countchannelTotalViews(number): All-time channel viewschannelTotalVideos(number): Total videos publishedchannelAvatarUrl(string): Profile picture URLchannelBannerUrl(string): Channel banner URLisChannelVerified(boolean): Verification statuschannelDescription(string): Channel descriptionchannelJoinedDate(string): Channel creation datechannelLocation(string): Channel locationisAgeRestricted(boolean): Age restriction statusinputChannelUrl(string): Input URL used for scraping
Error Items
When the scraper cannot retrieve data for a given input — for example a channel does not exist or a hashtag has no Shorts — it pushes an error item to the dataset instead of silently skipping it. Normal output rows never have an error field, so you can tell them apart reliably in integrations (Make, Zapier, n8n, API consumers).
Error item structure
{"url": "https://www.youtube.com/@somechannel/shorts","input": "https://www.youtube.com/@somechannel/shorts","error": "CHANNEL_HAS_NO_SHORTS","note": "The channel has no Shorts."}
Error codes reference
error | Meaning |
|---|---|
CHANNEL_INPUT_INVALID | The entry is neither a channel name nor a YouTube channel URL, so it was skipped before any request. |
CHANNEL_DOES_NOT_EXIST | The channel does not exist (YouTube returned 404). Detected instantly — no retry loop. |
CHANNEL_NAME_NOT_RESOLVED | A name from channels matched no channel — not as a handle, not as a legacy /c/, /user/ or vanity URL, and not in YouTube channel search. Only a real answer from YouTube produces this code. Pass the channel URL or @handle instead. |
CHANNEL_PAGE_FETCH_FAILED | The channel Shorts page, or the name resolution, could not be completed (5xx / network errors after retries). |
CHANNEL_PAGE_BLOCKED | YouTube refused the request — bot check, or 401/403/429 on a flagged proxy exit. Try residential proxies. |
CHANNEL_PARSE_FAILED | The channel Shorts page could not be parsed. |
CHANNEL_HAS_NO_SHORTS | The channel exists but has no Shorts. |
SEARCH_PAGE_FETCH_FAILED | The Shorts search results page could not be fetched. |
SEARCH_PAGE_BLOCKED | YouTube blocked the search request (bot check). |
SEARCH_PARSE_FAILED | The search results page could not be parsed. |
SEARCH_HAS_NO_SHORTS | The search query returned no Shorts. |
HASHTAG_PAGE_FETCH_FAILED | The hashtag Shorts page could not be fetched. |
HASHTAG_PAGE_BLOCKED | YouTube blocked the hashtag page request (bot check). |
HASHTAG_PARSE_FAILED | The hashtag Shorts page could not be parsed. |
HASHTAG_HAS_NO_SHORTS | The hashtag has no Shorts. |
SHORT_DETAIL_FAILED | A Short's detail page could not be scraped after all retries. |
Use Cases
This YouTube Shorts scraper is perfect for:
- Content Creators: Analyze competitor shorts performance and engagement metrics
- Marketers: Track trending shorts and identify viral content patterns
- Researchers: Collect data on shorts engagement, channel growth, and content trends
- Data Analysts: Build datasets for YouTube Shorts analytics and performance studies
- Social Media Managers: Monitor channel performance and shorts strategy effectiveness
- SEO Specialists: Analyze hashtag usage and optimize short video discoverability
Notes
- The scraper automatically handles YouTube's dynamic content loading
- Desktop YouTube structure is used to ensure likes and views data is available
- Proxy usage is recommended to avoid rate limiting on large scrapes
- All engagement metrics are captured in real-time at the moment of scraping
- Channel metadata is extracted once per channel and applied to all shorts from that channel
Support
- For issues or feature requests, please use the Issues section of this actor.
- If you need customization or have questions, feel free to contact the author:
- Author's website: https://muhamed-didovic.github.io/
- Email: muhamed.didovic@gmail.com
Additional Services
- Request customization or whole dataset: muhamed.didovic@gmail.com
- If you need anything else scraped, or this actor customized, email: muhamed.didovic@gmail.com
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: muhamed.didovic@gmail.com
🤖 For AI Agents & LLM Apps
Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/youtube-shorts-scraper).
Purpose: Extract YouTube Shorts and channel metadata — per-Short engagement metrics, computed virality stats, music credits, optional transcripts, and full channel statistics — from channels, search queries, hashtag hubs, or direct Short URLs.
Minimal input:
{"channels": ["rainbowicecream9780"],"startUrls": [],"searchQueries": [],"hashtags": [],"shortUrls": [],"maxItems": 25,"maxResultsShorts": 25,"sortChannelShortsBy": "NEWEST","regionCode": "US","contentLanguage": "en","oldestPostDate": "","includeTranscript": false,"language": "default","maxConcurrency": 10,"maxRequestRetries": 15,"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Instead of channels, you can supply startUrls (channel links), searchQueries, hashtags, or direct shortUrls; at least one source field must be non-empty.
Output: one dataset row per Short. Fields include title, translatedTitle, type, id, url, thumbnailUrl, viewCount, date, likes, duration, commentsCount, commentsTurnedOff, engagementRate, viewsPerDay, daysSincePublished, music {song, artist, album}, channelName, channelUrl, channelUsername, channelId, channelDescription, channelJoinedDate, channelLocation, channelAvatarUrl, channelBannerUrl, numberOfSubscribers, channelTotalViews, channelTotalVideos, isChannelVerified, hashtags, text, subtitles, isAgeRestricted, isMonetized, isMembersOnly, isPaidContent, aboutChannelInfo, order, inputChannelUrl, fromYTUrl, input. Failed sources push an error item carrying error and note instead of a normal row.
Behaviors an agent should know:
- At least one source is required:
channels,startUrls,searchQueries,hashtags, orshortUrls. channelstakes plain channel names; a name that is not a live handle is resolved through the legacy URL shapes and then YouTube channel search, and an unmatched name yields aCHANNEL_NAME_NOT_RESOLVEDerror row instead of a look-alike channel. A block or a network failure during that resolution is reported asCHANNEL_PAGE_BLOCKED/CHANNEL_PAGE_FETCH_FAILED, never as an unmatched name.- Every entry of
channels/startUrlsproduces either Shorts or an error row carrying the text you typed ininput, so a run with one bad entry is distinguishable from a run that was one entry shorter. maxRequestRetriessets the attempts per failed request (default15); lower it to cap the traffic spent on dead or blocked sources.- Always set
maxItems— it is the global cap across all sources (free accounts are capped at 30);maxResultsShortsfurther caps rows per channel, per search query, or per hashtag. sortChannelShortsByaccepts NEWEST (default), POPULAR, or OLDEST;oldestPostDatefilters by publish date using absolute (YYYY-MM-DD) or relative (7 days,3 months) values.includeTranscriptadds asubtitlesobject (plain text, timed segments, SRT, WebVTT);regionCode(gl) andcontentLanguage(hl) localize listings and metadata.- Unreachable channels/searches/hashtags push structured error items (rows with an
errorfield) instead of failing the run — safe to filter in integrations. - Traffic routes through a built-in residential proxy at no extra cost; the
proxyfield is only an optional override. - Pay-per-event billing — see the Pricing tab on the actor page.
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC, YouTube, or any of their subsidiaries. All trademarks mentioned are the property of their respective owners.
The scraper accesses only publicly available YouTube Shorts and channel pages — no authenticated endpoints, private or unlisted content, or data behind the YouTube login wall. Users are responsible for ensuring their use complies with YouTube's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.
SEO Keywords
youtube shorts scraper, scrape youtube shorts, youtube shorts API, youtube channel scraper, Apify youtube, short video scraper, youtube analytics scraper, video engagement data, youtube hashtag scraper, youtube search scraper, youtube transcript scraper, content creator analytics, influencer research data, social media intelligence, viral video tracking