← All guides

Bulk YouTube transcripts: whole channels and playlists

Written by the VidWords Team · · Updated · Report a correction

Researching a creator, turning a course into notes, training a chatbot on a back catalogue, or auditing competitors — here's how to turn an entire channel or playlist into text.

The 30-second version

  1. Open Bulk extract and pick the Channel or Playlist tab.
  2. Paste an @handle, a channel URL, a UC… id, or any link containing list=…, then hit Find videos — listing is free and covers up to 500 videos.
  3. Hit Extract all. Progress runs three videos at a time, and per-video failures are itemised instead of sinking the batch — they are never charged.
  4. Download the whole run as one .txt, .json, or .csv file.
  5. Automating it? POST /api/channels (Starter and up) turns a handle into video ids; feed those to POST /api/transcripts in batches of 50.

Channel or playlist — which do you want?

Both run through the same bulk extractor and cost the same, so the only question is how the videos are grouped:

A video that belongs to a playlist can be reached either way; pasting a URL that contains list=… resolves the playlist rather than the single video.

Extracting a channel in the browser

  1. Open Bulk extract and pick the Channel tab.
  2. Paste the channel's @handle (e.g. @mkbhd), its URL, or a UC… channel ID — VidWords resolves the channel ID for you.
  3. Hit Find videos. The latest videos (up to 500) are listed for free — finding videos never costs credits.
  4. Click Extract all. Progress runs three videos at a time; failures (e.g. caption-less videos) are listed per video and never charged.
  5. Download everything as one combined .txt, .json, or .csv.

Extracting a playlist in the browser

  1. Copy the playlist link — anything containing list=… works, including a video URL that is part of a playlist.
  2. Open Bulk extractPlaylist tab → paste → Find videos (free).
  3. Review the resolved list — title, channel, and count, with a note showing exactly how many credits extraction will use.
  4. Hit Extract all, then download the combined file.

What the combined download looks like

FormatStructureBest for
.txtEach video separated by a heading with its title and linkReading end to end, or pasting into an LLM
.jsonPer-video segments with timings and metadataScripts, pipelines, and RAG indexes
.csvOne row per caption line with video id, start, and durationSpreadsheets and timestamp filtering

What people build with this

Over the API

The channels endpoint (Starter plan and higher) turns handles into video lists, which you then feed to the transcripts endpoint in batches of 50:

curl -X POST https://vidwords.com/api/channels \
  -H "Authorization: Basic YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ids": ["@mkbhd"]}'

The response includes channelId, the channel title, and each video's id — pipe those ids into POST /api/transcripts.

Limits and practical notes

Try bulk extraction →