YouTube data
Transcripts for the recent videos of a YouTube channel in one run, up to 50 channels: give a handle or channel URL, get one row per video with full transcript text, language, duration and views. Videos without captions cost nothing. Pay per transcript.
One video transcript delivered. Channels that fail and videos without captions are never charged.
# one call, results straight back curl -X POST "https://api.apify.com/v2/acts/steadydata~youtube-channel-transcripts/run-sync-get-dataset-items?token=$APIFY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ ... }'
| Field | Name | What it does |
|---|---|---|
channelsrequired | Channels | One per row, up to 50: an @handle, a channel id (UC...) or any youtube.com channel URL. |
maxVideosPerChannel | Max videos per channel | Cost ceiling per channel, newest first. Each delivered transcript is one charged event. |
languages | Preferred transcript languages | Language codes in order of preference, for example en, nl, de. Empty takes the video's default track. |
preferManualCaptions | Prefer manual captions | On, a human-made track wins over an auto-generated one when both exist. |
includeTimestampedSnippets | Include timestamped snippets | On, each row also carries the transcript as timed snippets. Off keeps rows small. |
| Field | Type |
|---|---|
channelHandle | string, null |
channelId | string, null |
channelName | string, null |
videoId | string, null |
url | string, null |
title | string, null |
publishedText | string, null |
viewCount | integer, null |
durationSeconds | integer, null |
language | string, null |
isAutoGenerated | boolean, null |
text | string, null |
snippets | array, null |
status | string, null |
input | string, null |
errorCode | string, null |
error | string, null |
skippedNoCaptions | integer, null |