YouTube Transcript Scraper | Text + Timestamps, Any Language avatar

YouTube Transcript Scraper | Text + Timestamps, Any Language

Pricing

from $2.80 / 1,000 video results

Go to Apify Store
YouTube Transcript Scraper | Text + Timestamps, Any Language

YouTube Transcript Scraper | Text + Timestamps, Any Language

Get the transcript of any YouTube video as clean text and timestamped lines: manual captions or auto-generated ones, in the language you choose, plus title, channel, length and views. Paste video URLs or IDs, including Shorts. You only pay for videos that have a transcript.

Pricing

from $2.80 / 1,000 video results

Rating

0.0

(0)

Developer

Akatra

Akatra

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Categories

Share

YouTube Transcript Scraper: text and timestamps, any language

Turn YouTube videos into text. Paste video URLs or IDs and get each video's transcript as clean full text and as timestamped lines, together with the title, channel, length and view count. It reads captions written by the uploader and YouTube's auto-generated captions, in the language you prefer.

By default you only pay for videos that have a transcript. Videos without captions, private or deleted videos are reported in the log and not charged. If you turn on "Also return videos without a transcript", those videos are added to the results as rows of their own and are charged like any other result.

Pay per result · No login, no API key · Public data only · Tested daily · LLM-ready JSON for AI agents (MCP)

🛠️ What does YouTube Transcript Scraper do?

  • 📝 Clean full text and timestamped lines for every video, with title, channel, length and view count.
  • 🌐 Any language. Reads captions written by the uploader and YouTube's auto-generated captions, in the language you prefer.
  • 💸 By default you pay only for videos that have a transcript. Videos without captions, private or deleted videos are not charged.
  • 🛡️ Built to get through blocking. Requests go out with a real browser fingerprint through rotating proxies, and a blocked request is retried from a fresh IP. A result that could not be completed is never charged.

What people use it for

  • AI and RAG pipelines. Feed video content into LLMs, summarizers, vector stores and agents.
  • Content repurposing. Turn talks, podcasts and tutorials into articles, newsletters and social posts.
  • Research and analysis. Search and analyze what was said across hundreds of videos.
  • SEO. Mine competitors' videos for topics, keywords and questions.
  • Subtitles and translation workflows. Get timestamped lines ready to convert to SRT or VTT.

📊 What data can you extract?

Every result is one JSON object (one row in CSV or Excel) with these fields:

FieldMeaning
videoId, urlThe video
title, channel, channelId, lengthSeconds, viewCountBasic video details
isLiveContenttrue for a live stream or the recording of one
transcriptThe whole transcript as one text
segmentsEvery caption line with its start time and duration in seconds (when timestamps are on)
wordCountNumber of words in the transcript
language, languageNameThe language of the returned transcript
isAutoGeneratedtrue when the captions were generated by YouTube's speech recognition, false when the uploader provided them
availableLanguagesEvery caption language the video has
hasTranscript, unavailableReasonOnly relevant when you turn on "Also return videos without a transcript": why a video has none

🚀 How to use YouTube Transcript Scraper

  1. Create a free Apify account and open this Actor.
  2. Add your videos, one per line: full URLs, youtu.be links, Shorts links, embed links or plain video IDs.
  3. Set your preferred languages in order, for example en, es. The first language the video has is used.
  4. Decide whether to use another language when none of yours exist, and whether you need timestamped lines.
  5. Run it and download the results as JSON, CSV or Excel, or connect them through the API.

📥 Input example (JSON)

{
"videos": [
"https://www.youtube.com/watch?v=8jPQjjsBbIc",
"https://youtu.be/dQw4w9WgXcQ",
"https://www.youtube.com/shorts/ZZ5LpwO-An4"
],
"languages": ["en", "es"],
"fallbackToAnyLanguage": true,
"includeTimestamps": true,
"includeVideosWithoutTranscript": false
}

📤 Sample output (JSON)

Sample output table of YouTube Transcript Scraper

One result per video. The lists are shortened here.

{
"videoId": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"channel": "Rick Astley",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"lengthSeconds": 213,
"viewCount": 1822189128,
"isLiveContent": false,
"hasTranscript": true,
"language": "en",
"languageName": "English",
"isAutoGenerated": false,
"availableLanguages": [
{ "code": "en", "name": "English", "autoGenerated": false },
{ "code": "en", "name": "English (auto-generated)", "autoGenerated": true }
],
"transcript": "[♪♪♪] ♪ We're no strangers to love ♪ ♪ You know the rules and so do I ♪ ...",
"wordCount": 487,
"segments": [
{ "start": 18.64, "duration": 3.24, "text": "♪ We're no strangers to love ♪" }
],
"unavailableReason": null,
"scrapedAt": "2026-10-02T00:30:00+00:00"
}

🤖 Use it with AI agents, MCP and the API

The output is clean JSON with stable field names, ready for LLM pipelines, RAG and agent tools without extra parsing.

  • AI agents and MCP (Claude, ChatGPT, Cursor and others). Add the Apify MCP server with this Actor as a tool: https://mcp.apify.com?tools=akatra/youtube-transcript-scraper. The agent can then run it and read the results by itself.
  • API. Start a run and get the results in a single call:
curl -X POST "https://api.apify.com/v2/acts/akatra~youtube-transcript-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videos": ["https://www.youtube.com/watch?v=8jPQjjsBbIc", "https://youtu.be/dQw4w9WgXcQ", "https://www.youtube.com/shorts/ZZ5LpwO-An4"], "languages": ["en", "es"], "fallbackToAnyLanguage": true, "includeTimestamps": true, "includeVideosWithoutTranscript": false}'
  • No-code tools and SDKs. Works with Make, n8n, Zapier and LangChain through Apify's integrations, and with the Apify clients for Python and JavaScript. Schedule it and send the results to a webhook, Google Sheets or your own database.

💰 Pricing: pay per result

You pay per result. By default a result is a video with a transcript; with "Also return videos without a transcript" on, every video you submit becomes a result. Nothing is charged for empty runs beyond a tiny start fee. See the price on the Pricing tab. The price is the same for a one-minute Short and a three-hour podcast. There is no subscription or rental fee. New to Apify? The free plan includes $5 of platform credit every month, enough for about 1,200 videos with this Actor, and no credit card is needed.

🚦 Run status and error messages

Every run ends with a plain status message, so automated workflows (API, Make, n8n, AI agents) can tell what happened without reading the log:

SituationWhat you get
Finished normallySaved N videos.
No video has a transcriptThe run succeeds with No transcripts saved. The videos have no captions in the requested languages, or are unavailable. You pay only the start fee.
Some videos have no transcriptN videos have no transcript and were not charged. (With 'Also return videos without a transcript' on, they are returned and charged.)
YouTube kept blocking some videosSkipped N videos whose details stayed blocked (not charged).
Missing or unsupported inputThe run fails at once and the log names the field to fix. Nothing is scraped.
Your maximum charge is reachedStops cleanly with Stopped at your maximum charge limit. Everything saved so far stays in the dataset.

ℹ️ Good to know

  • Captions written by the uploader are preferred over auto-generated ones in the same language. A request for en also accepts regional variants such as en-US or en-GB. Different scripts are never mixed up: zh-Hans does not return zh-Hant.
  • One run handles up to 20,000 videos. Start another run for more.
  • Videos with no captions at all cannot be transcribed by this scraper; it reads YouTube's captions and does not run speech recognition itself.
  • Private, deleted and age-restricted videos, and live streams that are still running, have no transcript available without logging in.
  • A video that stays blocked after all retries is skipped and not charged. The run's status message tells you how many were skipped, so you can run them again.
  • If you set a maximum charge for a run, the scraper stops as soon as that limit is reached.
  • Turn off timestamped lines when you only need the text: results get several times smaller.
  • No personal data beyond the public channel name is collected.

📝 Changelog

  • 2026-10-02 README restructured: data table, API and MCP examples, run status messages.
  • 2026-10-02 Better language matching (writing system, manual captions first) and clearer reasons for unavailable videos, after an independent audit.
  • 2026-10-02 First release: full text and timestamped lines, any language, videos without a transcript not charged.

This scraper is an independent tool and is not affiliated with, endorsed by, or sponsored by YouTube or Google. "YouTube" is a trademark of its owner and is used here only to show which website the tool works with. Videos and their transcripts belong to their creators. Use the data in line with the laws that apply to you and the source site's terms.

The source site's name and logo are trademarks of their owner and appear here only to identify the website this tool works with. The Actor reads only pages that are public without logging in. How you store and use the data is your responsibility: follow the laws that apply to you, such as GDPR and CCPA.

🔗 More scrapers from Akatra

💬 Support

Found a bug or need a field that is missing? Open an issue on the Issues tab and we usually reply within a day.