Blog

Get a YouTube transcript from a video URL

Transcripts are the cheapest way to make video searchable, summarisable, or feedable to a model. YouTube has them for most videos. Getting them out programmatically is the annoying part.

One video

curl -X POST "https://api.apify.com/v2/acts/parseforge~youtube-transcript-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }],
    "maxItems": 1
  }'

You get the transcript text back with its timings. If you want subtitle-file output instead, set includeSrt to true and the SRT comes along with it.

A list of videos

startUrls takes as many as you want, so a batch is the same call with a longer array. If you are working from ids rather than links, videoIds accepts those directly and saves you building URLs.

Set maxItems to bound the run. It is the one input worth setting deliberately: a channel’s back catalogue is a lot of videos.

Languages

language picks the track. Leave it off and you get the default, which is usually the original audio language. Set it and you get that track when the video has it.

This is the field that quietly decides whether your pipeline works on non-English content, so it is worth setting explicitly rather than relying on the default.

What you cannot get

Videos with transcripts disabled do not have one to return, and no scraper changes that. Auto-generated tracks come back as what they are: useful, and wrong often enough that you should not treat them as a record of what was said.

Browse the library