Aurelix

Tools › Video

YouTube Transcript Scraper

Get the transcripts of YouTube videos, Shorts, channels, playlists or searches (text, timestamps, AI-ready chunks) for $0.90 per 1,000 videos ($0.60 on paid plans), no login. No captions, no charge.

For AI builders, researchers and content teams. One video comes back in seconds; your preferred caption language with fallback, an auto-generated flag on every row, and a status row (never charged) for videos without a transcript.

$0.90 per 1,000 videos ($0.60 on paid Apify plans)

At a glance

What the YouTube Transcript Scraper does

Input
Video URLs or IDs, channels, playlists, search terms
Output
Transcript text, timestamped segments, AI chunks, chapters, 26 fields incl. a status; JSON, CSV, Excel, API
Languages
Your preference order, creator captions before auto-generated, automatic fallback
Automate
Schedules, webhooks, Zapier, Make, n8n, Google Sheets, MCP for AI agents

Who it is for

  • AI developers loading a channel's videos into a vector database for RAG
  • Researchers and analysts mining talks, lectures and interviews as text
  • Marketers and SEO writers turning videos into articles, summaries and quotes
  • AI agents that need a video's transcript through MCP

Output

What you get

  • status (ok, or why there is no transcript: no_captions, unavailable, invalid_input, not_found, no_videos, failed, not_read) and error
  • video_id, url, title, channel_name, channel_id, channel_url, channel_handle, published_at (ISO 8601 UTC), duration_seconds, view_count, category, is_live_content
  • language, language_name, is_auto_generated, language_fallback, available_languages
  • transcript_text and word_count
  • segments: [{start, end, text}] in seconds
  • chapters: [{title, start, end}]; chunks: [{index, start, end, text, url}]
  • source_url, scraped_at

Example

Input and output

Input

{
  "channels": [
    "https://www.youtube.com/@veritasium"
  ],
  "maxVideosPerSource": 20,
  "languages": [
    "en"
  ],
  "chunkSize": 1000
}

One output record

{
  "video_id": "jNQXAC9IVRw",
  "url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
  "title": "Me at the zoo",
  "channel_name": "jawed",
  "channel_id": "UC4QobU6STFB0P71PMvOGN5A",
  "channel_url": "https://www.youtube.com/channel/UC4QobU6STFB0P71PMvOGN5A",
  "channel_handle": "@jawed",
  "published_at": "2005-04-24T03:31:52Z",
  "duration_seconds": 19,
  "view_count": 447765657,
  "category": "Film & Animation",
  "is_live_content": false,
  "language": "en",
  "language_name": "English",
  "is_auto_generated": false,
  "language_fallback": false,
  "available_languages": [
    {
      "language": "en",
      "is_auto_generated": false
    },
    {
      "language": "de",
      "is_auto_generated": false
    }
  ],
  "transcript_text": "All right, so here we are, in front of the elephants the cool thing about these guys is that they have really... really really long trunks and that's cool…",
  "word_count": 39,
  "segments": [
    {
      "start": 1.2,
      "end": 3.36,
      "text": "All right, so here we are, in front of the elephants"
    },
    {
      "start": 5.318,
      "end": 7.974,
      "text": "the cool thing about these guys is that they have really..."
    },
    {
      "start": 7.974,
      "end": 12.616,
      "text": "really really long trunks"
    },
    "… 3 more"
  ],
  "chapters": [
    {
      "title": "Intro",
      "start": 0,
      "end": 5
    },
    {
      "title": "The cool thing",
      "start": 5,
      "end": 17
    },
    {
      "title": "End",
      "start": 17,
      "end": 19
    }
  ],
  "chunks": [
    {
      "index": 0,
      "start": 1.2,
      "end": 18.881,
      "text": "All right, so here we are, in front of the elephants the cool thing about these guys is that they have really... really really long trunks and that's cool…",
      "url": "https://www.youtube.com/watch?v=jNQXAC9IVRw&t=1s"
    }
  ],
  "source_url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
  "scraped_at": "2026-11-04T19:33:36Z"
}

From a real run of this tool; long text and lists shortened here.

How to use it

Three steps

  1. Paste video links, channel links or @handles, playlist links or search terms, and set how many videos to read per channel, playlist or search.
  2. Optionally set your preferred caption languages (e.g. en, es), turn auto-generated captions off, or change the AI chunk size.
  3. Click Start, then download JSON, CSV or Excel, or send the transcripts to your vector database, LangChain, LlamaIndex, Zapier, Make or n8n through the API.

API

Call it from Python

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("aurelix/youtube-transcript-scraper").call(run_input={'channels': ['https://www.youtube.com/@veritasium'],
 'maxVideosPerSource': 20,
 'languages': ['en'],
 'chunkSize': 1000})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

pip install apify-client. The same input works from the Apify console, a schedule, Make, n8n, Zapier or an AI agent through the Apify MCP server.

Pricing

Pay per result

Per 1,000 videos, free plan$0.90
Per 1,000 videos, paid plans$0.60
Residential retry, per 1,000, free plan$200.00
Long video hour, per 1,000, free plan$0.10
Start fee per run$0.0001

Live prices from the Apify Store; no subscription and no platform usage billed on top. See the Store page.

Honest limits

What it does not do

  • Only videos that have captions can be returned; there is no speech-to-text for videos without them.
  • Private, removed, age-restricted, members-only, live and upcoming videos are skipped (they need a login or have no final captions).
  • No translation: captions come in the languages the video has.
  • Channels are read from their Videos tab (newest first); Shorts and live tabs are not included unless you give those videos directly.
  • Search returns YouTube's video results for the term in relevance order, without Shorts, channels or playlists.
  • Chapters come from description timestamps only, not YouTube's auto-generated chapters.
  • YouTube refuses many cloud IPs; the run moves to fresh datacenter IPs, and if the first 60 it tries (all workers together), or its first 20 seconds of video requests, are all refused it stops with a BLOCKED status (only the start fee is charged). With 'residentialFallback' on it moves to residential IPs at that point instead, for up to 20 videos.
  • Very long videos: each full hour beyond the first 3 hours adds $0.0001 (a 12-hour stream is $0.0009 + 9 × $0.0001).

FAQ

Questions buyers ask

Can I get transcripts for a whole YouTube channel?

Yes. Paste the channel URL and it returns a transcript for each of its videos that has captions. Turn on the only-new-videos mode and schedule it for a daily channel feed.

Is there a cheaper YouTube transcript scraper on Apify?

On price, yes: $0.60 per 1,000 videos on paid plans, cheaper than the leading tools, with a $0.0001 start fee. This tool doesn't translate transcripts or export SRT/VTT.

Can an AI agent call it?

Yes, through Apify's MCP server or the API: a single video comes back in seconds, and the output has chunks with timestamped links ready for citations.

How much does the YouTube Transcript Scraper cost?

$0.90 per 1,000 videos ($0.60 on paid Apify plans), billed through your Apify account; you pay only for results. Apify's free plan includes $5 of credit a month, enough for about 5,555 videos.

Which videos work?

Any public video with captions: creator-uploaded or YouTube's automatic captions, in any language, including Shorts and past live streams. Videos without captions, private, removed, age-restricted and members-only videos cannot be read without a login; they are skipped and not charged.

Does it translate transcripts?

No. It returns captions in the languages the video actually has. Your preferred languages are tried in order; if none exists the video's own track is returned and 'language_fallback' is true. 'available_languages' lists every track.

What are the chunks for?

For RAG and embeddings: each transcript is cut into chunks of about 'chunkSize' characters with 'chunkOverlap' characters of overlap, always at caption-line boundaries. Each chunk has its start and end in seconds and a link that opens the video at that moment, so an AI answer can cite the exact spot.

How do chapters work?

They are read from the description timestamps the way YouTube builds chapters: at least three timestamps, the first at 0:00, in ascending order. YouTube's automatically generated chapters are not included.

Why did a run return fewer videos than I asked for?

Videos without captions and unavailable videos get a status row instead of a transcript (the status message also counts them by reason). Channels and playlists can have fewer videos than the limit. If YouTube kept blocking every proxy IP, the run stops early, keeps the transcripts already done and says so.

Do I need a YouTube account or API key?

Yes, without login: no YouTube account, cookies or API key. The Actor reads the public data YouTube serves any logged-out visitor, and never solves CAPTCHAs.

Is this legal?

It reads only public data any logged-out visitor can see: YouTube videos' captions and basic video details. It reads one video per IP at a time, four at once, never logs in and never solves CAPTCHAs. It returns caption text and video details (title, channel, date, duration, views, chapters); no comments, commenter names or other viewer data are read. Data is returned as shown publicly on YouTube, incl. the channel's name and @handle. The content is returned as the creator published it; copyright in it stays with its owner. People can ask for removal of their data by opening an issue on this Actor's Issues tab; if YouTube formally asks us to stop, this Actor will stop. You are responsible for using the data lawfully, incl. anti-spam and privacy laws; this is not legal advice.

What am I charged when no transcript comes back?

Only the start fee ($0.0001 per run at the default 256 MB). Videos without captions, private, removed, age-restricted, members-only, live and upcoming videos, empty caption tracks, inputs that are not YouTube links and videos already returned in incremental mode are never charged. The $0.20 residential fee is charged only when you turned on residentialFallback and a residential IP returned at least one transcript.

What does a BLOCKED status mean?

YouTube refused every cloud IP the run tried. Before the run's first video answer, it stops after 60 refused IPs (all four workers together) or 20 seconds, charges only the start fee, and gives each unread video a 'not_read' row. Try again later, or turn on residentialFallback: at that same point the run then moves to residential IPs (up to 20 videos, one $0.20 fee only if they return a transcript).

Is a video charged twice if it is in a channel and a playlist?

No. Videos from all sources are de-duplicated before reading, so each video is read and charged once per run. With Only new videos since last run on, videos returned by an earlier run with the same inputs (or the same stateKey) are skipped too; that memory is kept for a year.

How fast is it?

A single video usually comes back in 3 to 20 seconds in total, most of it the run starting. Videos are read four at a time; in our tests 19 videos took about 30 seconds and 90 videos from channels, a playlist and searches a few minutes.

How many videos can one run read?

Up to 5,000 per channel, playlist or search term, plus any videos you list directly. A run stops early when 5 videos in a row fail after retries, when it has read 20 videos over a residential IP, when your maximum charge is reached, or when the run timeout comes near; it keeps and charges only the transcripts already returned.

Are Shorts included?

Shorts you paste as links are read. A channel is read from its Videos tab, so its Shorts and live tabs are not included, and search results leave Shorts out.

What happens if chunkOverlap is bigger than chunkSize?

The run sets the overlap to a tenth of the chunk size instead of failing. Set chunkSize to 0 to get no chunks at all.

How do I export videos to Google Sheets?

Download the run's results as CSV or Excel and open them in Google Sheets, or add Apify's Google Sheets integration to the run or a schedule so every run's results land in a sheet.

Related

Related tools

Try the YouTube Transcript Scraper

Open it on the Apify Store, paste the example input above and click Start. Results download as CSV, Excel or JSON.