YouTube Scraper — Channel Videos, Shorts & Playlists avatar

YouTube Scraper — Channel Videos, Shorts & Playlists

Pricing

from $0.40 / 1,000 youtube videos

Go to Apify Store
YouTube Scraper — Channel Videos, Shorts & Playlists

YouTube Scraper — Channel Videos, Shorts & Playlists

Export public YouTube videos from channels, Shorts tabs, searches, playlists, and direct URLs with available views, likes, comment totals, and metadata. Bounded feed pagination and run-wide video deduplication.

Pricing

from $0.40 / 1,000 youtube videos

Rating

0.0

(0)

Developer

Coor Yu

Coor Yu

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

3

Monthly active users

12 hours ago

Last modified

Share

Collect public YouTube video metadata from channel feeds, Shorts tabs, keyword searches, playlists, and direct video URLs with this YouTube Scraper. Export available titles, channel information, views, likes, comment totals, thumbnails, and publication data for video research and playlist analysis.

Requests use direct HTTP and YouTube's public page data and continuation endpoints, not a browser or a configured proxy. You do not supply a YouTube login or YouTube Data API key. Running through the Apify API still requires an Apify token and incurs the charges below.

Supported collection modes

  • Channel videos: a channel URL, ID, or handle normally selects its Videos tab. Explicit /shorts and /streams tabs are supported.
  • Shorts: use a Shorts tab URL, or set includeShorts: true to add a separate Shorts feed for each non-Shorts channel input.
  • Search: video-only results for each keyword in searchQueries.
  • Playlists: public playlist URLs or playlist IDs.
  • Direct videos: watch, youtu.be, Shorts, embed, or live URLs, or 11-character video IDs; at most one row per video input.

This is a metadata scraper, not a video downloader or comment-text exporter.

Quick start

In Apify Console, supply at least one input type. Start with a small request:

{
"channelUrls": ["@OpenAI"],
"includeShorts": true,
"includeVideoStats": true,
"resultsPerInput": 5
}

Alternatively, use searchQueries, playlistUrls, or videoUrls; they can be combined. For an authenticated API run, save the input as input.json and use:

curl -X POST \
'https://api.apify.com/v2/acts/funny_ground~youtube-scraper/run-sync-get-dataset-items' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
--data-binary @input.json

This command starts a billable run. The examples are illustrative inputs, not claims of a newly verified live result.

Input fields and bounds

FieldDefaultBehavior
channelUrls[]Up to 50 channel URLs, @handles, bare handles, or channel IDs.
includeShortsfalseAdd a Shorts tab alongside each non-Shorts channel tab.
searchQueries[]Up to 50 video-search queries.
playlistUrls[]Up to 50 playlist URLs or IDs.
videoUrls[]Up to 100 direct URLs or video IDs.
resultsPerInput501–1000 caps each channel tab, search, or playlist separately. 0 traverses the feed subject to a 10,000-video safety cap per feed.
includeVideoStatstrueAttempt additional public statistics requests for each result. Disable for feed-only collection with fewer requests.
maxConcurrency4Concurrent input/direct-video processing; range 1–12.
maxRequestRetries2Temporary HTTP-error retries; range 0–4.
requestTimeoutSecs30Per-request timeout; range 10–120 seconds.

The result bound applies separately to Videos and Shorts, not globally. Feed traversal also stops at 500 pages, repeated tokens, or two pages adding no new videos. Deduplication, unavailable counters, request failures, and billing limits can make saved counts lower than requested.

Apify Free-plan preview: the developer limits output to 50 saved dataset rows per run across all inputs and caps each input's requested feed size at 50. Direct-video inputs are also limited to the first 50 on this plan. Paid plans remove this developer-set preview cap, not the documented input, page, and safety bounds. Free-plan result events are still paid events.

Output and billable unit

The default dataset contains one saved video row. Video IDs are deduplicated across overlapping inputs within a run; the first saved occurrence supplies its source attribution rather than a merged list of all matching sources.

Available fields include:

  • videoId, canonical url, title, description, thumbnailUrl;
  • viewCount and its numeric alias playCount, likeCount, commentCount, commentCountText;
  • durationSeconds, publishedAt, publishedTimeText, isShort, isLive;
  • channelId, channelName, channelUrl, channelHandle;
  • playlistId, playlistTitle, position, category, keywords;
  • sourceType, sourceInput, and ISO collection timestamp scrapedAt.

Fields depend on the response type and may be null. publishedAt is YouTube's supplied publish/upload date when available, not necessarily a precise timestamp. List pages may provide only relative text such as “2 days ago.” Duration is in seconds; position is the scraper's collection sequence, not a guaranteed original playlist index.

Counters are snapshots, not guaranteed exact totals. Abbreviated views, likes, or comments are converted to numbers and can be approximate. commentCountText preserves the displayed comment-total text. A live response may expose “watching now,” which is not the same as lifetime plays. Statistics enrichment is best effort and can retain list/player values when an endpoint withholds data. With enrichment disabled, list rows generally lack likes and comment totals; direct-player fields can differ.

A row without a finite public playback counter is skipped, not saved or result-billed. Discovered rows and HTTP requests are not the result billing unit; the configured event is apify-default-dataset-item for saved valid rows. Overlapping saved video IDs do not create extra result rows.

Current pricing

Apify planPer saved video eventPer 1,000 events
FREE$0.00225$2.25
BRONZE$0.00045$0.45
SILVER, GOLD, PLATINUM, DIAMOND$0.00040$0.40

The apify-actor-start event costs $0.0005 per GB of allocated memory, minimum one event per run. It is not necessarily one fixed fee for every memory setting. The running user also pays Apify compute, storage, and transfer separately. Startup and platform usage may still apply to failed or empty runs. No downstream Actor or separate per-request charge event is configured.

Check the Pricing tab for your effective plan price. A maximum event-charge budget can stop output; it is not a guarantee of complete collection or an all-inclusive platform-cost ceiling.

Reliability and responsible use

YouTube can rate-limit direct data-center requests, change page layouts, return consent pages, or withhold statistics. A failed later continuation can leave a partial dataset from earlier pages. An entire run with zero valid emitted videos is marked FAILED; this does not waive startup or platform charges. Validate saved rows and logs before relying on a requested count.

Private, deleted, restricted, and unavailable videos may produce no output. This Actor does not bypass authentication or access controls and cannot promise full channel history. Use public data consistently with YouTube's terms, copyright, privacy requirements, and applicable law.

FAQs

Does “no YouTube API key” mean no authentication or cost? No. No user-provided YouTube credential is required, but Apify API calls require an Apify token. Event and platform costs still apply.

Does resultsPerInput: 0 export an entire channel? Not necessarily. It enables bounded feed traversal, with row/page safety limits, a separate Free-plan cap, and possible source or budget interruptions.

Does this scrape comments? It may retrieve a public comment total, not comment text or reply threads.

Complementary Actors