YouTube Transcript Scraper: Chapters, Channels & Playlists avatar

YouTube Transcript Scraper: Chapters, Channels & Playlists

Pricing

from $0.50 / 1,000 transcript founds

Go to Apify Store
YouTube Transcript Scraper: Chapters, Channels & Playlists

YouTube Transcript Scraper: Chapters, Channels & Playlists

Scrape YouTube transcripts and subtitles from videos, channels, playlists and searches, split into the video chapters for AI. Text, SRT, VTT, Markdown. $0.50 per 1,000, failed videos free.

Pricing

from $0.50 / 1,000 transcript founds

Rating

0.0

(0)

Developer

Farovin

Farovin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

What you get

Each video comes back with its transcript already split into the creator's chapters (or 5-minute parts if it has none):

{
"title": "Phone Review: First Generation",
"sections": [
{ "title": "Intro", "start": 0, "text": "So this is the first..." },
{ "title": "The Hardware", "start": 201, "text": "Let's start with the..." }
],
"text": "So this is the first..."
}

How to start

  1. Paste a video, channel (@name) or playlist link, or a search term.
  2. Click Start.
  3. Download as JSON, CSV or Excel. Videos without captions are not charged.

Full documentation (optional)

Everything below is reference material. You do not need it to get started.

Why use this YouTube transcript scraper?

Feature
Single videos, Shorts, live replays, any link format✅
Whole channels (newest first)✅
Playlists✅
YouTube search queries✅
Transcript split by creator chapters✅ rare
Equal time sections when a video has no chapters✅
Choose transcript language, human captions first✅
Auto-generated captions as fallback✅
Text, [mm:ss] timestamps, segments, SRT, VTT, Markdown, in one run✅
Only videos from the last N days, skip Shorts✅
List available caption languages for free✅
Video details: title, channel, duration, views, description, tags, thumbnail✅
Failed videos free, pay only for transcripts✅
About half the price of the most popular alternatives✅
Scheduling, API, webhooks, Google Sheets, n8n, Make, Zapier, MCP✅ (Apify platform)

Use cases

AI, RAG and chatbots

Feed transcripts into ChatGPT, Claude or your own LLM pipeline. The sections field gives you chapter-sized chunks with titles and timestamps, so retrieval and citations point to the right part of the video.

Content repurposing

Turn videos into blog posts, newsletters, show notes, social posts and course material. The Markdown format is ready to paste into Notion, Google Docs or a CMS.

Research and analysis

Collect transcripts from a channel, a playlist or a search to study topics, sentiment, claims or language across hundreds of videos.

SEO and competitor monitoring

See what your competitors say in their videos. Schedule a daily run on their channels with Only videos from the last N days to get only what is new.

Subtitles and accessibility

Download SRT or VTT files to edit, translate or re-upload subtitles.

Datasets and machine learning

Build text datasets with clean, timestamped segments and metadata.

What data can it extract?

FieldTypeDescription
textstringFull transcript as one string
sectionsarrayTranscript split by chapter: title, start, end, text, wordCount
sectionsTypestringcreator-chapters, every-5-min or none
timestampedTextstringLines like [01:23] text
segmentsarrayCaption lines with start and duration in seconds
srt, vttstringReady-to-use subtitle files
markdownstringLLM-ready document with one heading per chapter
languagestringLanguage code of the returned transcript
isAutoGeneratedbooleantrue for YouTube automatic captions
availableLanguagesarrayAll caption languages YouTube offers for the video
title, channelName, channelIdstringVideo and channel
durationSeconds, viewCountnumberLength and views
description, tags, thumbnailUrlstring / arrayVideo details
publishedText, isShortstring / booleanUpload age as shown in lists (e.g. "3 weeks ago"), Shorts flag
source, sourceInputstringWhere the video came from: video, channel, playlist or search
wordCount, segmentCountnumberSize of the transcript
status, charged, errorCode, errorResult status and whether it was charged

How to get YouTube transcripts

  1. Open the Actor and go to the Input tab.
  2. Add links in Videos, channels or playlists, or type Search queries.
  3. For channels, playlists and searches, set Max videos per channel, playlist or search.
  4. Pick Output formats and keep Split transcript into chapters on.
  5. Click Start, then download the results as JSON, CSV, Excel or HTML.

Input examples

One video

{ "videos": ["https://www.youtube.com/watch?v=abcdEFGh123"] }

Many videos at once

{ "videos": ["https://youtu.be/abcdEFGh123", "https://www.youtube.com/shorts/xyzXYZ12345", "abcdEFGh124"] }

Pick a language

{ "videos": ["https://www.youtube.com/watch?v=abcdEFGh123"], "languages": ["es", "en"] }

SRT, VTT and Markdown in the same run

{ "videos": ["https://www.youtube.com/watch?v=abcdEFGh123"], "outputFormats": ["text", "srt", "vtt", "markdown"] }

Check which languages exist (free)

{ "videos": ["https://www.youtube.com/watch?v=abcdEFGh123"], "languagesOnly": true }

Transcribe a whole channel

{ "videos": ["https://www.youtube.com/@examplechannel"], "maxVideosPerSource": 200 }

Only new videos of a channel, without Shorts

{ "videos": ["https://www.youtube.com/@examplechannel"], "publishedWithinDays": 7, "includeShorts": false }

A playlist

{ "videos": ["https://www.youtube.com/playlist?list=PLxxxxxxxxxxxxxxxx"], "maxVideosPerSource": 100 }
{ "searchQueries": ["how to bake sourdough bread"], "maxVideosPerSource": 25 }

Only creator chapters, no time sections

{ "videos": ["https://www.youtube.com/watch?v=abcdEFGh123"], "chapters": "chapters-only" }
FieldWhat it does
videosVideo links or IDs, channel links (@handle, /channel/, /c/) or playlist links. Watch, youtu.be, Shorts, embed and live links all work.
searchQueriesTranscripts of the top videos for each search.
maxVideosPerSourceVideos to take from each channel (newest first), playlist or search. Default 50.
publishedWithinDaysOnly videos uploaded in the last N days (channels, playlists, searches). Approximate, based on the age YouTube shows in lists.
includeShortsTurn off to skip Shorts.
languagesOnlyOnly list available caption languages. Free.
chapterschapters-or-sections (default), chapters-only or off.
sectionMinutesSection length when a video has no chapters. Default 5.
languagesPreferred languages in order, e.g. ["es", "en"]. If none is available, English is tried, then the first available transcript.
includeAutoGeneratedUse automatic captions when there are no human ones. On by default.
outputFormatsAny of text, timestamped, segments, srt, vtt, markdown.
maxVideosStop after this many videos in total. Caps the cost of any run.
maxConcurrencyVideos processed in parallel. Default 5.

Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. One item per video:

{
"status": "ok",
"charged": true,
"videoId": "abcdEFGh123",
"url": "https://www.youtube.com/watch?v=abcdEFGh123",
"title": "Phone Review: First Generation",
"channelName": "Example Channel",
"durationSeconds": 742,
"publishedText": "2 days ago",
"language": "en",
"isAutoGenerated": false,
"availableLanguages": [{ "code": "en", "name": "English", "autoGenerated": false }],
"wordCount": 2890,
"sectionsType": "creator-chapters",
"sections": [
{ "title": "Intro", "start": 0, "end": 73, "wordCount": 120, "text": "So this is the first..." },
{ "title": "The Hardware", "start": 201, "end": 455, "wordCount": 2107, "text": "Let's start with the..." }
],
"text": "So this is the first...",
"srt": "1\n00:00:01,200 --> 00:00:03,360\nSo this is the first...\n..."
}

A video without captions

{ "status": "error", "charged": false, "videoId": "xyzXYZ12345", "errorCode": "NO_TRANSCRIPT", "error": "This video has no captions or transcript." }

Markdown output

# Phone Review: First Generation
Channel: Example Channel | Video: https://www.youtube.com/watch?v=abcdEFGh123 | Language: en
## Intro (00:00)
So this is the first...
## The Hardware (03:21)
Let's start with the...

How to split a YouTube transcript into chapters

Many creators add chapters to their videos with timestamps in the description (0:00 Intro, 1:13 Setup...). This Actor reads them using YouTube's own rules (first chapter at 0:00, at least three chapters, each at least 10 seconds long) and puts the matching transcript text under each chapter in sections.

When a video has no chapters, the transcript is split into equal sections of sectionMinutes minutes, so every video comes in chunks of a predictable size. Set chapters to chapters-only if you only want real creator chapters.

How to get transcripts of a whole YouTube channel

Paste the channel link (https://www.youtube.com/@name, /channel/UC... or /c/name) and set maxVideosPerSource. Videos are taken newest first. Add publishedWithinDays to get only recent uploads and includeShorts: false to skip Shorts. Schedule the run daily or weekly to keep a channel archive up to date.

How to build a searchable transcript dataset for RAG

  1. Run the Actor on your channels, playlists or searches with outputFormats: ["text"] and chapters on.
  2. Use each item in sections as one document: title + text, with the video url and start time as metadata.
  3. Embed the sections in your vector database. Answers can then link to the exact moment in the video: url + "&t=" + start.

How much does it cost to get YouTube transcripts?

WhatPrice
Transcript delivered$0.50 per 1,000 ($0.0005 each)
Run start$0.05 per 1,000 runs ($0.00005 per run), covers server start-up
Video without a transcript, private, deleted, invalid linkFree
Listing a channel, playlist or searchFree
Listing available languages (languagesOnly)Free
RunCost
100 videos in one runabout $0.05
1,000 videosabout $0.50
10,000 videosabout $5.00

Apify's free $5 monthly credit covers about 10,000 transcripts a month. Set Max videos to cap the cost of any run.

Use with AI agents: Claude, ChatGPT, Cursor (MCP)

Every Apify Actor can be used by AI agents through the Apify MCP server.

  1. Get your Apify API token in Settings > API & Integrations.
  2. Add the Apify MCP server to your client (Claude Desktop, Claude Code, Cursor, VS Code or ChatGPT) and enable the Actor farovin/youtube-transcripts.
  3. Ask your agent, for example: "Get the transcripts of the last 10 videos of @examplechannel split by chapters, and summarize each chapter in two sentences."

Use in n8n, Make, Zapier and Google Sheets

Use the Apify node or app, choose Run Actor, select farovin/youtube-transcripts and pass the JSON input. Send text, markdown or sections to your LLM, Google Docs, Notion, Airtable or database. You can also export every run to Google Sheets, or trigger a webhook when a run finishes.

Use from code

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("farovin/youtube-transcripts").call(run_input={
"videos": ["https://www.youtube.com/@examplechannel"],
"maxVideosPerSource": 10,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], len(item.get("sections", [])))

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('farovin/youtube-transcripts').call({
videos: ['https://www.youtube.com/watch?v=abcdEFGh123'],
outputFormats: ['text', 'srt'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].text);

Tips

  • Lower cost per video: put many videos in one run instead of one run per video (the start fee is paid once per run).
  • Spreadsheet-friendly: choose only text for clean CSV and Excel exports; nested fields like sections are easier in JSON.
  • Faster runs: raise maxConcurrency for large batches.
  • Monitoring: schedule a daily run with publishedWithinDays: 1 to get only new videos.

Limitations

  • It returns captions that YouTube already has (human or automatic). It does not transcribe audio of videos without captions.
  • Caption translation is not offered: YouTube currently rate-limits it, and we do not ship features we cannot run reliably.
  • publishedWithinDays is approximate: it uses the upload age YouTube shows in lists ("3 weeks ago").
  • Likes, comment counts and exact upload dates are not included, to keep the price low.
  • Private, deleted, members-only, age-restricted and region-blocked videos cannot be read.

Troubleshooting

SymptomLikely causeWhat to do
NO_TRANSCRIPTThe video has no captions, or only automatic ones and includeAutoGenerated is offCheck captions are visible on YouTube; turn on includeAutoGenerated. Not charged.
UNAVAILABLE, PRIVATE, AGE_RESTRICTEDThe video is deleted, private or needs sign-inNothing to fix. Not charged.
INVALID_INPUTThe link is not a YouTube video, channel or playlistUse a standard watch, youtu.be, Shorts, @handle or playlist link. Not charged.
Wrong languageThe requested language is not availableCheck availableLanguages, or run with languagesOnly: true first.
Channel or playlist returns few or no videosPrivate playlist, no public videos, or filters too strictOpen the link while signed out; relax publishedWithinDays or includeShorts.
BLOCKEDYouTube refused the request after several retriesRun that video again. Not charged. If it repeats, open an issue.

Responsible use

Use this Actor only for lawful purposes and for content you are allowed to process. Transcripts belong to their creators and may contain copyrighted material, personal data or errors from automatic captions. Keep attribution to the original video, verify important quotes, and comply with YouTube's terms and the laws that apply to you.

Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

FAQ

Do I need a YouTube API key?

No. The Actor works without any key, login or cookies.

Is there a free tier?

Yes. Apify gives every account $5 of free usage per month, which covers about 10,000 transcripts.

Can it split a transcript into chapters?

Yes, this is its main extra: creator chapters when the video has them, equal time sections otherwise.

Does it work with YouTube Shorts and live streams?

Yes for Shorts. Finished live streams work when YouTube has captions for them.

Can I choose the transcript language?

Yes, with languages. Human captions are preferred over automatic ones.

Can I get several formats in one run?

Yes. Pick any combination of text, timestamps, segments, SRT, VTT and Markdown.

Can it transcribe videos that have no captions?

No. It returns captions YouTube already has. Most videos have automatic captions.

Can it translate transcripts?

Not at the moment. YouTube currently rate-limits caption translation.

Am I charged for videos without a transcript?

No. You only pay for delivered transcripts. Every item shows charged: true or false.

How many videos can I process?

There is no fixed limit. Use maxVideos to cap a run, and maxVideosPerSource for channels, playlists and searches.

Can I run it on a schedule or via API?

Yes. Use Apify schedules, the API, webhooks, or n8n, Make and Zapier.

How do I report a problem?

Open an issue in the Issues tab with the video link. We read every issue and usually reply within a day.

Did it help you?

If this Actor saved you time, a short review on Apify Store helps other people find it. Thank you!