YouTube Transcript Scraper (Captions API) avatar

YouTube Transcript Scraper (Captions API)

Pricing

from $1.20 / 1,000 transcripts

Go to Apify Store
YouTube Transcript Scraper (Captions API)

YouTube Transcript Scraper (Captions API)

Get the transcript of any YouTube video as text and timed segments. Every transcript is labelled manual or auto-generated, flags a different language than the one you asked for, and shows how much of the video it covers. Videos without one are listed free.

Pricing

from $1.20 / 1,000 transcripts

Rating

0.0

(0)

Developer

Honest Data

Honest Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

What does YouTube Transcript Scraper do?

It gets the transcript of any YouTube video as clean text and timed segments, in bulk. Paste video links or ids, pick a language, and get one row per video. It's a YouTube captions API alternative built for AI and research pipelines: summarising videos, feeding RAG, quoting talks and analysing what channels say.

In short: $2 per 1,000 transcripts, in bulk, each one labelled manual or auto-generated, and videos without a transcript are free.

Why use it?

  • Manual or auto-generated, labelled. Every transcript says whether the channel uploaded it (manual) or YouTube's speech recognition wrote it (auto-generated). They are not equally trustworthy, and most tools don't tell you which one you got.
  • No silent language swaps. Ask for English and the video only has Korean? You get the Korean transcript labelled languageMatched: false, or, if you turn fallback off, a free "not available" row. Never a wrong-language transcript passed off as a match.
  • You see how much of the video it covers. coveragePct is the share of the video with spoken words on screen. A transcript that covers 20% of a talk is flagged by the number, not hidden.
  • Sound tags counted, styling stripped. [Music], (Applause) and ♪ ♪ lines are counted in nonSpeechSegments. Styled captions (colour codes, invisible characters, every line doubled) are cleaned, so word counts are real.
  • Videos without a transcript are free. Private, deleted, region-locked, members-only, or simply no captions: you get a row saying why (unavailableReason) and pay nothing for it.
  • Reliable, and tested every day. When YouTube asks for a sign-in check, the video is retried on a fresh connection (moving to a residential IP) instead of failing. An automated check also fetches real transcripts every morning and checks the text itself, not just that the run finished.
VideoCaptionsLanguageAsked forCoversWords
Do schools kill creativity? (TED)manualenyes77.5%3,170
The Egg - A Short Storyauto-generatedenyes91.9%910
PSY - GANGNAM STYLEauto-generatedkono (asked en)80.2%194
Charlie bit my finger - again!auto-generatedenyes48.6%24

What data can you get from YouTube?

FieldWhat it is
videoId, url, titleThe video
channelName, channelIdThe channel
durationSeconds, viewCount, isLiveLength, views and whether it's a live stream
transcriptAvailabletrue, or false with unavailableReason and unavailableMessage
captionTypemanual or auto-generated
languageCode, language, requestedLanguage, languageMatchedThe transcript's language, and whether it's the one you asked for
textThe whole transcript as one string
segmentsTimed lines: [{ "start": 1.2, "duration": 2.16, "text": "..." }], in seconds
coveragePct, nonSpeechSegments, segmentCount, wordCountHow much of the video it covers, sound tags, and counts
availableTranscriptsEvery caption track the video has (language and type)

Reasons a video has no transcript: no_captions, language_not_available, private, unavailable (deleted or never existed), age_restricted, members_only, region_blocked, paid, live_not_started, unplayable, empty_transcript, and blocked (YouTube refused every retry).

How to get YouTube transcripts in bulk

  1. Open the Actor and click Try for free.
  2. Paste YouTube video links or ids, one per line (watch, youtu.be, Shorts, live and embed links all work).
  3. Set the language you want, e.g. en, or leave it empty for the language spoken in the video.
  4. Click Start.
  5. Download the transcripts as JSON, CSV or Excel, or read them through the API.

How much does it cost to get YouTube transcripts?

$0.002 per transcript delivered, so 1,000 transcripts cost $2. Videos without a transcript are listed free, and each video is fetched once even if you paste it twice. There's also a tiny start fee of $0.00005 per run.

Apify's free plan includes $5 of monthly credit, which covers about 2,500 transcripts a month. The run checks your max charge before fetching and stops cleanly when it's reached.

Input

See the Input tab for every option:

  • YouTube videos: links (watch, youtu.be, Shorts, live, embed) or 11-character ids
  • Language: e.g. en, es, pt-BR. Empty means the language spoken in the video. en also matches en-US and en-GB.
  • Use the video's own language if yours isn't there: on by default

Output

You can download the dataset as JSON, CSV, Excel, XML or HTML. Two real rows (text and segments shortened):

[
{
"videoId": "l5aZJBLAu1E",
"url": "https://www.youtube.com/watch?v=l5aZJBLAu1E",
"title": "The Weather Girls - It's Raining Men (Official Video)",
"channelName": "TheWeatherGirlsVEVO",
"durationSeconds": 294,
"viewCount": 122391588,
"isLive": false,
"transcriptAvailable": true,
"captionType": "manual",
"languageCode": "en",
"requestedLanguage": "en",
"languageMatched": true,
"coveragePct": 78.4,
"nonSpeechSegments": 2,
"segmentCount": 71,
"wordCount": 485,
"text": "(intriguing music) - Hi. - Hi, we are your weather girls. - Uh huh. - And have we got news for you! ...",
"segments": [
{ "start": 0.68, "duration": 2.917, "text": "(intriguing music)" },
{ "start": 14.762, "duration": 0.833, "text": "- Hi." }
]
},
{
"videoId": "2JK7NMfvZTY",
"url": "https://www.youtube.com/watch?v=2JK7NMfvZTY",
"durationSeconds": 10387,
"transcriptAvailable": false,
"unavailableReason": "no_captions",
"unavailableMessage": "This video has no captions or transcript.",
"segmentCount": 0,
"wordCount": 0,
"text": null,
"segments": []
}
]

The second video has no captions at all, so its row says why and costs nothing.

Tips

  • Check captionType before you rely on a transcript. Auto-generated captions are speech recognition: names, numbers and lyrics are often wrong. On songs, YouTube sometimes even picks the wrong language: in our tests Italian songs came back as Spanish or Romanian captions.
  • Manual captions are labelled by the uploader, and labels can be wrong: Despacito's "English" track is the Spanish lyrics.
  • Many videos have no captions at all, mostly music videos and languages YouTube can't auto-caption. We checked our answers against YouTube's own watch page (41 videos, 35 of them without captions) and the iPhone app's player (49 videos): they matched every time.

FAQ

Can I give a channel or playlist? Not yet. Video links or ids only.

Do I need a proxy? No. Apify Proxy is on by default: each video is tried on a data-center IP first and moves to residential only if YouTube refuses. Videos are read from the US (or the proxy country you pick), and anything blocked there shows as region_blocked.

Can it translate? No. You get the tracks the video really has.

Can I use it from code or an AI assistant? Yes. Use the Apify API or the Python and JavaScript clients (see the API tab), connect it to Make, Zapier or Google Sheets, or schedule it. AI assistants such as Claude and Cursor can call it through Apify's MCP server: https://mcp.apify.com?tools=honestdata/youtube-transcript-scraper.

Is it legal to scrape YouTube transcripts? It reads the public captions of public videos and collects no account data. Transcripts can mention people by name, so handle them under the rules that apply to you (such as the GDPR) and respect creators' copyright when you reuse them.

Found a problem? Open an issue in the Issues tab. We read every report.

Found it useful? A short review on this page helps other people find it.

More from Honest Data