YouTube Shorts Scraper - Channels & Hashtags avatar

YouTube Shorts Scraper - Channels & Hashtags

Pricing

from $3.00 / 1,000 youtube short results

Go to Apify Store
YouTube Shorts Scraper - Channels & Hashtags

YouTube Shorts Scraper - Channels & Hashtags

Extract YouTube Shorts from channels, hashtags, or video URLs. Collect titles, views, likes, publish dates, and available creator data. Paginate up to 1,000 Shorts per source and export JSON, CSV, or Excel. No YouTube API key required. $3 per 1,000 video results plus Apify usage.

Pricing

from $3.00 / 1,000 youtube short results

Rating

1.8

(3)

Developer

Newbs

Newbs

Maintained by Community

Actor stats

14

Bookmarked

438

Total users

12

Monthly active users

4 days ago

Last modified

Share

YouTube Shorts Scraper

Extract YouTube Shorts from channels, hashtags, and direct video URLs into a dataset you can export as JSON, CSV, or Excel. Collect titles, video links, thumbnails, views, and available engagement and creator metadata without a YouTube API key.

Use it to monitor competitor channels, research short-form content, discover creators, or feed a dashboard. Request up to 1,000 Shorts per channel or hashtag with automatic pagination. YouTube availability and your run limits determine how many results can be returned.

Price: $0.003 per video result ($3 per 1,000), plus Apify platform usage. Diagnostic rows are free.

Try it in three steps

  1. Enter @youtube, a channel URL, or #fashion in YouTube sources.
  2. Choose Results per source. Start with the prefilled one-result sample; increase it for your real job.
  3. Click Start, inspect the Overview output, and export your results.

Video enrichment is enabled by default. For a faster collection of titles, links, thumbnails, and listing view counts, turn off Enrich video and channel details.

Use one source type per run. For compatibility with existing integrations, direct video URLs take priority over hashtags, and hashtags take priority over channels when you mix types.

Choose the right settings

Your goalSettingsWhat to expect
Collect many Shorts quicklyneedVideoDetails: falseTitles, URLs, thumbnails, and available listing views. Automatic pagination.
Analyze video performanceneedVideoDetails: true (default)Available views, likes, publish dates, descriptions, duration, and author data.
Research creatorsAdd includeChannelDetails: trueAvailable subscribers, channel video count, profile image, banner, description, and social links. Profile requests are cached per creator.
Recover missing metadataAdd fallbackToBrowser: trueSlower browser recovery. Fields hidden by YouTube can still be missing.

Missing values remain null or N/A. Comment counts and profile fields are not guaranteed. This Actor returns metadata; it does not download video files, transcripts, or individual comments.

Example inputs

Collect 100 Shorts from a channel

{
"channel": ["@youtube"],
"numberOfResults": 100,
"needVideoDetails": false,
"maxRunSeconds": 240
}

To compare several channels, put their handles in the same channel array. The result limit applies to each source.

Research Shorts by hashtag

{
"hashtag": ["fashion", "style"],
"numberOfResults": 20,
"needVideoDetails": true,
"includeChannelDetails": false,
"maxRunSeconds": 240
}

Hashtag results follow YouTube's available listing order. They are not a complete historical archive or a guaranteed ranking of the most viral videos.

Enrich specific videos

{
"videoUrls": ["https://www.youtube.com/shorts/SWQHAPIY5ag"],
"needVideoDetails": true,
"includeChannelDetails": true
}

Direct inputs also accept watch, embed, live, and youtu.be URLs or bare video IDs. These URLs skip discovery; the Actor does not certify that an arbitrary direct video is a Short.

Output and exports

Each video has resultType: "video". The following shortened example shows the structure; counts change over time:

{
"resultType": "video",
"id": "7yG3lTRoqxc",
"videoUrl": "https://www.youtube.com/shorts/7yG3lTRoqxc",
"author": "@youtube",
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"source": "@youtube",
"sourceType": "channel",
"position": 1,
"detailStatus": "not_requested"
}
Field groupFields
Videoid, title, videoUrl, coverImage, description, durationSeconds, durationText
PerformanceviewCount, viewCountText, likeCount, commentCount, publishedAt
Creatorauthor, channelId, channelUrl, subscriberCount, amountOfVideos, profilePicture, profileBanner, channelInfo
Source and qualitysource, sourceType, hashtag, position, resultType, detailStatus, dataQualityScore, missingFields

Numeric counts are normalized where possible; abbreviated listing views such as 5.3K are approximate. viewCountText preserves a readable representation. Existing output aliases remain available for integrations.

Open Output → Overview to inspect the results, or export the dataset to JSON, CSV, Excel, and other Apify-supported formats. Filter to resultType === "video" in automations: empty or invalid sources can produce free source_status diagnostic rows.

The Run summary output links to OUTPUT, which includes saved video counts, missing-field coverage, runtime information, summary.timeToFirstVideoSeconds, and summary.collectionStats. Time to first video measures the delay from application input loading to the first saved video; Apify startup adds extra time. Collection statistics explain whether each HTTP source reached its requested limit, exhausted its listing, hit a runtime limit, or encountered a pagination problem.

Use the YouTube Shorts Scraper API

Run the Actor from JavaScript with the official Apify client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('newbs/youtube-shorts').call({
channel: ['@youtube'],
numberOfResults: 100,
needVideoDetails: false,
}, { maxTotalChargeUsd: 0.50, timeout: 300 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const videos = items.filter(item => item.resultType === 'video');
console.log(videos);

See the API tab for Python, JavaScript, and HTTP examples. For recurring monitoring, save an Apify task and schedule it. Every run is a fresh scrape; deduplicate by id in your destination when tracking changes over time.

Pricing and cost control

Saved video resultsResult fee
10$0.03
100$0.30
1,000$3.00

Apify compute, proxy traffic, data transfer, and storage usage are additional. Only video rows saved to the dataset incur the result fee; source_status diagnostics are free.

The maximum run charge is a spending limit, not an upfront charge. The Actor limits collection to the remaining result allowance and saves completed rows immediately or in short micro-batches. It stops additional work when the result budget is exhausted. Set your maximum charge and timeout before a large run.

Input reference

FieldDefaultDescription
channelChannels/handles/URLs, hashtags, or direct videos. Up to 20 entries in the input form. Prefer one source type per run.
hashtagDedicated hashtag list, with or without #, or full hashtag URLs.
videoUrlsDedicated direct-video list; up to 50 entries in the input form.
numberOfResults1Maximum per channel/hashtag, from 1 to 1,000. Direct URL runs ignore it.
needVideoDetailstrueRequest available video metadata over HTTP.
includeChannelDetailsfalseRequest additional creator profile metadata.
fallbackToBrowserfalseEnable slower browser recovery for missing listings/details.
maxSourceConcurrency2Concurrent HTTP sources; maximum 10.
maxVideoDetailConcurrency10HTTP video/creator requests in parallel per source; maximum 20. Lower this if YouTube throttles a large job.
maxConcurrency1Concurrent browser fallback pages; maximum 5.
maxRunSeconds0Optional graceful runtime cap; 0 follows the Apify timeout. The sample is prefilled with 240 seconds.
proxyConfigurationApify Proxy on platformApify or custom proxy configuration.
proxyModeautoDirect HTTP first, then proxy recovery. always uses the configured proxy; never disables it.
videoDetailProxyStrategyautoSet proxyFirst if direct detail requests are repeatedly blocked.
directRetryAttempts1Extra direct detail attempts before other recovery routes; maximum 3.

Performance and reliability

Results appear in the dataset as they become ready. Completed videos do not wait for a slower member of a fixed batch. Rows can therefore arrive in completion order; use source and position to recover the original listing order. Channel listing-only runs stream results while subsequent pages are still being collected. Hashtag creator lookups share the configured HTTP concurrency, and creator profile requests remain cached within the run.

The HTTP collector follows YouTube continuation pages and removes duplicate video IDs within each source. Small channel samples can use RSS; bulk collection reads the Shorts listing so it is not limited to the feed's recent-upload window. Page failures preserve results already collected. Repeated tokens and duplicate-only pages stop pagination to avoid wasted requests.

For large jobs, start with listing-only mode, keep source concurrency modest, and raise the Apify timeout as needed. Video and profile enrichment require additional requests. The 1,000-result setting is an upper limit, not a guarantee that a source exposes that many public Shorts.

Troubleshooting and FAQ

Why did I receive fewer results than requested?

Check Run summary → summary.collectionStats and summary.stopReason. A source may have fewer public Shorts, YouTube may stop pagination, a request may fail, or your runtime/result budget may be exhausted. Increase the relevant limit or retry a blocked source. Collected results are preserved.

Why did I receive a diagnostic row?

Rows with resultType: "source_status" explain invalid inputs, unavailable sources, or collection failures. They are free and are not video results. Check scrapingStatus and the row's description.

Can I mix channels and hashtags?

Use separate runs for different source types. Within one run, direct videos take priority, then hashtags, then channels. You can batch multiple sources of the same type.

Are likes, comments, and subscriber counts always available?

No. Availability varies by video, channel, and YouTube response. Enable the relevant enrichment settings, inspect missingFields, and use browser fallback when the extra runtime is worthwhile. A missing field does not mean its value is zero.

Is a YouTube API key or login required?

No YouTube API key or YouTube login is required. This is an independent scraper of public metadata, not an official YouTube API.

How do I report a problem?

Open an issue on the Actor page with your input, a run link, expected result count, and an example URL. Share the affected run so the developer can inspect it; other users' private run data is not visible by default.