YouTube Shorts Scraper
Pricing
from $1.50 / 1,000 youtube shorts
YouTube Shorts Scraper
Scrape public YouTube Shorts from channel URLs. Collect video titles, descriptions, publish dates, views, likes, comments, and channel information. Supports pagination and configurable result limits. Unavailable metrics are returned as null.
Pricing
from $1.50 / 1,000 youtube shorts
Rating
0.0
(0)
Developer
Scraper Creator
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Collect public YouTube Shorts and engagement statistics from channel URLs. Get video titles, descriptions, URLs, publication dates, views, likes, comment counts, and channel subscriber counts in a structured dataset for reporting and analysis.
The Actor reads the channel's Shorts tab, newest first, and follows pagination to older Shorts. It does not require a YouTube API key or login cookies, and it does not download videos.
How to use
- Add one to five public YouTube channel URLs.
- Set the maximum number of Shorts to return per channel. The default is 100; the allowed range is 1–10,000.
- Optionally configure a proxy under Advanced settings. Direct connections are used by default.
- Start the Actor, inspect the output and run summary, then export the dataset or retrieve it through the Apify API.
The maximum is a limit, not a guaranteed result count. A channel may have fewer accessible Shorts, and individual videos or pages may fail to load. Allow enough run time when requesting large result sets.
Input
{"channels": ["https://www.youtube.com/@YouTube"],"maxResultsShorts": 100}
| Field | Required | Description |
|---|---|---|
channels | Yes, unless using channelUrls | Array of 1–5 HTTPS YouTube channel URLs. |
maxResultsShorts | No | Maximum returned Shorts per channel, from 1 to 10,000. Defaults to 100. |
proxyConfiguration | No | Optional Apify proxy configuration. Omit to connect directly. |
Accepted channel paths include /@handle, /channel/UC..., /c/name, and /user/name. Channel URLs ending in /shorts are also accepted. Use youtube.com or www.youtube.com without query parameters or URL fragments. Individual video URLs are not supported as input.
API input aliases
For integrations that use alternative field names, channelUrls is an alias for channels, and maxShortsPerChannel is an alias for maxResultsShorts:
{"channelUrls": ["https://www.youtube.com/@YouTube"],"maxShortsPerChannel": 100}
Use either naming convention. If both are supplied, their values must agree. The optional API field sortChannelShortsBy accepts only "NEWEST"; newest-first ordering is already the default.
Optional proxy
If direct requests are blocked, you can configure a proxy in the input form or JSON:
{"channels": ["https://www.youtube.com/@YouTube"],"maxResultsShorts": 100,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Proxy availability depends on your account and the selected service. Proxies may add cost and do not guarantee access to YouTube. Check the Actor's pricing and your proxy rates before running.
Output
Each dataset row represents one Short. The following is a saved example, not live statistics:
{"id": "AOVf1JmEeS8","type": "shorts","url": "https://www.youtube.com/shorts/AOVf1JmEeS8","title": "the ICONIC Victoria's Secret angel wings... but make it rug version","text": "tune in this sunday and watch the angels take the runway #YouTubePartner","date": "2026-10-16T22:00:58.000Z","channelId": "UCBR8-60-B28hp2BmDPdntcQ","channelUrl": "https://www.youtube.com/channel/UCBR8-60-B28hp2BmDPdntcQ","channelUsername": "YouTube","inputChannelUrl": "https://www.youtube.com/@YouTube","viewCount": 8210,"likes": 228,"commentsCount": 126,"numberOfSubscribers": 46500000,"subscriberCountText": "46.5M subscribers","subscriberCountIsApproximate": true,"hashtags": ["#YouTubePartner"],"scrapedAt": "2026-10-17T07:40:09.563Z","warnings": ["subscriber_count_approximate"]}
| Field | Description |
|---|---|
id, type, url | Video ID, the value shorts, and the Shorts URL. |
title, text | Video title and description. The description may be null. |
date | Publication timestamp in UTC ISO 8601 format. |
channelId, channelUrl, channelUsername | Publishing channel ID, canonical channel URL, and handle. The handle may be null. |
inputChannelUrl | Normalized channel URL associated with the input. |
viewCount | Public view count as an integer. |
likes, commentsCount | Public like and comment counts as integers, or null when unavailable. |
numberOfSubscribers | Channel subscriber count. Compact labels are converted to approximate integers; unavailable counts are null. |
subscriberCountText | Original subscriber label, such as 41.5K subscribers, or null. |
subscriberCountIsApproximate | Whether the subscriber count was converted from a compact label. |
hashtags | Hashtags displayed by YouTube above the video title, including # and display order. Empty when none are available. |
scrapedAt | Time this row was assembled, in UTC ISO 8601 format. |
warnings | Notices about unavailable counts or approximate subscriber counts. |
Data accuracy
- Subscriber counts can be approximate. For example,
41.5Kbecomes41500, withsubscriberCountIsApproximate: true. This is not an exact count from the channel owner's analytics. UsesubscriberCountTextand the approximation flag when displaying the value. - Unknown counts stay
null. Unavailable or rounded like and comment counts are not converted into exact numbers. A confirmed zero is returned as0. - Hashtags reflect YouTube's displayed selection. They are not every hashtag mentioned in the title or description. The selection and order may change between runs.
- Counts are snapshots. Statistics can change during or after a run. Channel subscriber information is read at the start of processing that channel and repeated on its video rows.
Partial results and errors
Inspect RUN-SUMMARY in the run's default key-value store when checking completeness. It contains per-channel status, result counts, and errors.
- A failed video is skipped so other videos can still be processed.
- A failed channel or pagination request preserves results already collected and allows the next channel to proceed.
- A run with some valid results may finish successfully while
RUN-SUMMARY.partialistrue. Always check the summary if complete coverage matters. - An exhausted pay-per-event budget or an abort signal stops collection and sets
RUN-SUMMARY.stoppedEarlytotrue. With no recorded errors, the run status isstoppedeven whenpartialisfalse; channels not yet attempted may be absent from the summary. Check the run status,stoppedEarly, per-channel statuses, and coverage of the requested channels rather than treatingpartial: falseas proof of completion. If errors also occurred, the run status may instead bepartialorfailed. - If errors occur and no valid results are available after all channels have been attempted, the run fails.
- Storage or charging failures stop the run. Error records are not added to the video dataset.
Per-channel status limit_reached means the requested maximum was reached; it does not mean the channel has no more Shorts. no_shorts means the channel did not expose a Shorts tab. A public channel with no accessible Shorts produces no video rows, including no standalone subscriber-count row.
Missing video identity, owner identity, an exact view count, or a valid publication timestamp causes the video to be skipped. Videos owned by another channel are also skipped.
Refreshing statistics
Start a new run with a fresh default dataset to refresh counts. Each new run begins with the newest Shorts and continues until it reaches the per-channel limit or the end of the available feed. With a limit of 100, older videos outside those results will not be refreshed.
Within the same run, duplicate video IDs are removed. If a run restarts with its existing dataset, already written videos are skipped rather than refreshed.
Scope and limitations
- Collects publicly accessible channel Shorts only. It does not collect regular long-form videos, private videos, or owner-only analytics.
- Returns comment counts, not comment text, subtitles, or transcripts.
- Does not download video or audio files.
- Public availability, network restrictions, and changes to YouTube may affect coverage, speed, and data availability. The 10,000-result input limit is not a guarantee that all requested results can be collected.
- Available subscriber counts are public display values, not authenticated YouTube Studio figures.