YouTube Scraper avatar

YouTube Scraper

Pricing

from $0.94 / 1,000 video scrapeds

Go to Apify Store
YouTube Scraper

YouTube Scraper

Search videos, get playlists, single videos with comments and all in any language

Pricing

from $0.94 / 1,000 video scrapeds

Rating

0.0

(0)

Developer

Monster Leads

Monster Leads

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

YouTube Scraper — any language

Search videos, get playlists, single videos with comments — and all in any language.

Scrape YouTube channels, playlists, search results and individual videos without the official YouTube Data API and without a headless browser. Every request goes through a rotating proxy, handled for you — there is nothing to configure.

Any language

Set language and YouTube returns that locale's version of the data — titles, descriptions, view counts, dates and subscriber counts:

{ "mode": "channel", "channel": "@MrBeast", "language": "es" }
languageTitle returned
enI Survived The Most Extreme Places On Earth
esSobrevivimos a los Lugares más Extremos del Mundo
deWir haben an den extremsten Orten überlebt
pt-BRNós Sobrevivemos aos Lugares Mais Extremos do Mundo

Want the same video in several languages? Run the actor once per language and join the results on videoId, which is stable across every locale. That gives you one row per language for the same video — useful for building localised catalogues, comparing how a channel positions itself per market, or filling a multi-language database from a single source.

Because the language is sent explicitly, results stay consistent no matter which country the rotating proxy exits from. Without it YouTube guesses from the exit IP and a single run can come back with mixed languages.

What it does

ModeInputReturns
channelchannel id, @username or channel URLvideos, shorts or streams from that channel
playlistplaylist id (PL..., UU...)every video in the playlist
searcha search termvideos, channels, playlists or movies
videoa list of video ids or URLsfull metadata per video, optionally with top comments

Input

Pick a mode, then fill in only that mode's fields. Everything else is ignored.

ModeRequired fieldOptional fields for that mode
channelchannelcontentType, sortBy
playlistplaylistId
searchsearchQueryresultsType, searchSortBy
videovideoIdscommentsPerVideo

maxItems and language apply to every mode.

Minimal channel run:

{
"mode": "channel",
"channel": "@LinusTechTips",
"maxItems": 100
}

Playlist run:

{
"mode": "playlist",
"playlistId": "PLZbbT5o_s2xrwRnXk_yCPtnqqo4_u2YGL"
}

Search run:

{
"mode": "search",
"searchQuery": "python tutorial",
"resultsType": "video",
"searchSortBy": "view_count",
"maxItems": 50
}

Single video run, with the top 20 comments:

{
"mode": "video",
"videoIds": [
"dQw4w9WgXcQ",
"https://www.youtube.com/watch?v=jNQXAC9IVRw",
"https://youtu.be/9bZkp7q19f0"
],
"commentsPerVideo": 20
}

Field reference

Required, depending on mode

  • channel (Channel mode) — channel id (UC...), @username, or full channel URL.
  • playlistId (Playlist mode) — the id after list= in a playlist URL.
  • searchQuery (Search mode) — what to search for.
  • videoIds (Single videos mode) — one entry per video. Bare ids, watch URLs, youtu.be links and shorts URLs are all accepted.

Optional, mode-specific

  • contentType (Channel)videos, shorts or streams. Defaults to videos.
  • sortBy (Channel)newest, popular or oldest. Defaults to newest.
  • resultsType (Search)video, channel, playlist or movie. Defaults to video.
  • searchSortBy (Search)relevance, upload_date, view_count or rating. Defaults to relevance.
  • commentsPerVideo (Single videos) — top comments per video. 0 skips them. Included in the per-video price, so 20 costs the same as 0.

Optional, every mode

  • maxItems — stop after this many results. Leave empty to scrape everything.
  • languageAccept-Language sent to YouTube, eg en, de, es, pt-BR. Defaults to en. See Language below.

Proxy rotation, retries and request pacing are handled automatically — there is nothing to configure.

Output

Each dataset item for channel mode:

{
"videoId": "sL6OWsT47zc",
"title": "Apple just Copied Microsoft's Worst Idea",
"is_live": false,
"url": "https://www.youtube.com/watch?v=sL6OWsT47zc",
"thumbnail": "https://i.ytimg.com/vi/sL6OWsT47zc/hqdefault.jpg",
"source": "channel"
}

playlist mode adds which playlist the video came from, on every item, so a dataset holding several playlists stays groupable:

{
"videoId": "0UG_SZpo750",
"title": "T1 vs GEN | 2026 LCK Road to MSI: Final Round",
"is_live": false,
"url": "https://www.youtube.com/watch?v=0UG_SZpo750",
"thumbnail": "https://i.ytimg.com/vi/0UG_SZpo750/hqdefault.jpg",
"playlistId": "PLTL19WNP0Lgc",
"playlistTitle": "2026 Road to MSI FULL VOD",
"playlistUrl": "https://www.youtube.com/playlist?list=PLTL19WNP0Lgc",
"source": "playlist"
}

Search mode adds duration, views, published and channel.

Each dataset item for video mode carries the full metadata:

{
"videoId": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"description": "The official video for ...",
"viewCount": 1813981533,
"likes": 19381188,
"lengthSeconds": 213,
"publishDate": "2009-10-24T23:57:33-07:00",
"channel": "Rick Astley",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"subscribers": "4.54M subscribers",
"category": "Music",
"keywords": ["rick astley", "nggyu"],
"isLive": false,
"commentsFetched": 20,
"comments": [
{
"commentId": "Ugzge340dBgB75hWBm54AaABAg",
"text": "can confirm: he never gave us up",
"author": "@YouTube",
"authorChannelId": "UCBR8-60-B28hp2BmDPdntcQ",
"authorIsVerified": true,
"likes": 313000,
"likesText": "313K",
"replyCount": 963,
"publishedText": "1 year ago"
}
]
}

Comment like counts are abbreviated by YouTube, so likes is an expansion of likesText ("313K" becomes 313000) and is approximate above 1,000. The video's own likes and viewCount are exact.

Pricing

This actor uses pay per event:

EventApplies toPrice
Listing item scrapedchannel, playlist, search$0.001 per item ($1 per 1,000)
Video details scrapedvideo$0.01 per video

A video item costs more because it needs its own page request plus a comments continuation, and returns full metadata (description, likes, duration, keywords, category) together with the top comments. Comments are included in that $0.01 — they are not billed separately, so 20 comments cost the same as 0.

You are charged only for items actually stored in the dataset, so a run that returns nothing costs nothing.

Notes and limits

What language does and does not translate

WhatEffect of language
View counts, dates, subscriber countsAlways localised — 1.8B views vs 1,8 Mrd. Aufrufe
Video titles and descriptionsLocalised only where the creator supplied a translation

A channel that publishes no translations returns its original titles in every language, so language is not a machine translator — it returns what the creator actually published for that locale.

Numeric viewCount and likes are parsed to plain integers, so they are safe to compare and deduplicate across languages. shortViewCount, subscribers and likesText keep YouTube's localised formatting.

If you need a title in its original language regardless of translations, fetch it from the YouTube Data API using the returned videoId.

Other limits

  • popular / oldest sorting is only available on channel tabs that have enough videos for YouTube to render the filter chips. Small channels fall back to newest.
  • No download links. Results contain the canonical watch?v= URL. Direct googlevideo.com stream URLs are deliberately not extracted: they expire within hours and are bound to the IP that fetched them, so they would be broken for most users by the time they were read.