Cheap Youtube Scraper avatar

Cheap Youtube Scraper

Under maintenance

Pricing

from $1.30 / 1,000 video results

Go to Apify Store
Cheap Youtube Scraper

Cheap Youtube Scraper

Under maintenance

The cheapest actor to scrape YouTube videos, Shorts, live streams, channels, playlists, comments, replies, and subtitles. no API key required

Pricing

from $1.30 / 1,000 video results

Rating

5.0

(1)

Developer

API Geek

API Geek

Maintained by Community

Actor stats

2

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape YouTube videos, Shorts, live streams, channels, playlists, comments, replies, and subtitles at a low cost. Cheap YouTube Scraper accepts URLs and search queries, uses lightweight YouTube web APIs, and requires no YouTube API key.

Quick start

Provide startUrls, searchQueries, or both. Sources are additive and duplicate videos are emitted only once.

Scrape a video with comments

{
"startUrls": [{ "url": "https://www.youtube.com/watch?v=jNQXAC9IVRw" }],
"maxCommentsPerVideo": 20,
"maxRepliesPerComment": 3,
"commentSort": "TOP"
}

Search with filters

{
"searchQueries": ["apify tutorial", "web scraping"],
"maxResultsPerSource": 50,
"searchSort": "uploadDate",
"searchUploadDate": "month",
"searchHdOnly": true
}

maxResultsPerSource applies separately to each query, playlist, hashtag, or selected channel feed. A direct video URL always produces at most one video result.

Scrape channel videos, Shorts, and streams

{
"startUrls": [{ "url": "https://www.youtube.com/@Google" }],
"channelContentTypes": ["videos", "shorts", "streams"],
"maxResultsPerSource": 20
}

For a generic channel URL, every selected feed can produce up to the configured limit. A URL ending in /shorts or /streams targets only that feed.

Download subtitles

{
"startUrls": [{ "url": "https://www.youtube.com/watch?v=jNQXAC9IVRw" }],
"downloadSubtitles": true,
"subtitleLanguage": "en",
"subtitleFormat": "srt"
}

Subtitle content is stored in the run's default Key-Value Store. The video item contains subtitle.storageKey. If the requested language is unavailable, the video is still returned with its available subtitleTracks and an error record is written.

searchHasSubtitles only filters search results. It does not download subtitles; use downloadSubtitles for that.

Input reference

InputDefaultPurpose
startUrls[]Video, Short, channel, playlist, search, or hashtag URLs
searchQueries[]YouTube search keywords or phrases
maxResultsPerSource20Result limit for each query, playlist, hashtag, or channel feed
channelContentTypes["videos"]Channel feeds: videos, shorts, and/or streams
searchSortrelevancerelevance, uploadDate, viewCount, or rating
searchUploadDatehour, today, week, month, or year
searchDurationshort, medium, or long
searchPublishedAfterFilter out videos older than an ISO date
searchHdOnly, search4KOnly, searchLiveOnlyfalseAdditional YouTube search filters
searchHasSubtitlesfalseSearch only for captioned videos
maxCommentsPerVideo0Top-level comments; 0 disables comments
maxRepliesPerComment0Replies collected for each emitted top-level comment
commentSortTOPTOP or NEWEST
downloadSubtitlesfalseDownload one matching caption track per video
subtitleLanguageenCaption language code, for example en-US or id
subtitleFormattexttext, json, srt, or vtt
proxyConfigurationOptional Apify Proxy configuration used by YouTube requests

At least one non-empty URL or query is required. Invalid and retired fields fail before requests or charges with an actionable validation message.

Output

The default dataset contains VIDEO, SHORT, LIVE, and COMMENT items. Comments and replies use the same COMMENT type and are distinguished by isReply and parentCommentId.

Each item includes sourceInput, identifying the URL or query that first produced it. Search results also include searchQuery and searchPosition; playlist results include playlist identity and position.

Additional output is available from the Actor run page:

  • CHANNEL_METADATA: metadata for resolved channels.
  • PLAYLIST_METADATA: metadata for resolved playlists.
  • Subtitle files: records named SUBTITLE_<videoId>_<language>_<format>.
  • ERRORS dataset: source-level and item-level failures that did not necessarily fail the whole run.

A run can succeed with partial errors when at least one source produced results. Validation errors and fatal failures are reported as failed Actor runs. A valid source with no matching results completes normally as SOURCE_EXHAUSTED.

Billing

This Actor uses Apify pay-per-event billing. See the Actor's live Pricing tab for current unit prices; the store configuration is the source of truth.

  • apify-actor-start: once per run, when configured by the platform.
  • video-result: after a video, Short, or live-stream item is saved successfully.
  • comment-result: after a comment or reply is saved successfully.
  • subtitle-result: after a requested subtitle is downloaded and stored successfully.

No result event is charged before its corresponding output is persisted. The approximate run cost is the start event plus each successful event count multiplied by its live unit price.

Local development

npm ci
npm run build
npm test

npm run test:live deliberately contacts live YouTube services. npm run benchmark runs the compiled benchmark suite after a build.