YouTube data

YouTube Channel Videos Scraper (bulk, lightweight)

List every video of a YouTube channel: title, video id, duration, view count, publish date and thumbnail, plus channel name, handle and subscriber count. Paste channel URLs, @handles or channel ids. Only delivered videos are charged.

$0.35per 1,000 ยท Video listed

One video delivered to the dataset. Channels that fail or have no public videos are never charged.

run it
ACTOR=steadydata~youtube-channel-videos
URL="https://api.apify.com/v2/acts/$ACTOR/run-sync-get-dataset-items"

curl -X POST "$URL?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"channels": ["@mkbhd"], "maxVideosPerChannel": 100, "language": "en"}'

# rows come straight back as JSON, one object per delivered row

Input

FieldNameWhat it does
channels
required
ChannelsChannel URLs, @handles or channel ids. All of these work: https://www.youtube.com/@mkbhd, @mkbhd, https://www.youtube.com/channel/UCBJycsmduvYEL83R_U4JriQ, UCBJycsmduvYEL83R_U4JriQ.
maxVideosPerChannelMax videos per channelStop after this many videos per channel, newest first. This is your cost ceiling: one delivered video is one charged event.
languageLanguageInterface language for the texts YouTube returns, e.g. en, nl, de. Affects wording such as the publish date.
countryCountryISO country code used for the request, e.g. US, NL, DE.

What you get back

FieldType
channelIdstring, null
channelNamestring, null
channelHandlestring, null
channelUrlstring, null
channelSubscribersinteger, null
channelVideoCountinteger, null
videoIdstring, null
urlstring, null
titlestring, null
durationstring, null
durationSecondsinteger, null
viewCountinteger, null
publishedTextstring, null
thumbnailUrlstring, null
statusstring, null
inputstring, null
errorCodestring, null
errorstring, null