Skip to content

About

Apify actor: YouTube transcripts with timestamps via the GetYouTubeTranscript API

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YouTube Transcript API

Get the transcript of any YouTube video, with per-line timestamps, as structured data. Paste video URLs or IDs, run, and download the results as JSON, CSV or Excel, or pull them through the Apify API.

It calls the GetYouTubeTranscript API, which fetches captions server-side. That means it keeps working from cloud servers that YouTube blocks for direct scraping, and each video comes back in a single request (no job polling), typically in around 800 ms.

What you need

A GetYouTubeTranscript API key. Create one at getyoutubetranscript.com/developers: the free tier needs no card. Each successful transcript uses 1 credit, and failed requests are not charged. Paid plans start at $5 per 1,000 requests.

The actor itself only makes one HTTP call per video, so Apify compute usage is tiny.

Input

Field Required Description
videos Yes YouTube URLs (watch, youtu.be, shorts) or 11-character video IDs
apiKey Yes Your GetYouTubeTranscript API key (stored as a secret)
language No Language code such as en, es, de. Defaults to en
timestamps No Add segments with start and duration in seconds. Default true
{
  "videos": ["https://www.youtube.com/watch?v=jNQXAC9IVRw", "dQw4w9WgXcQ"],
  "apiKey": "sk_live_...",
  "language": "en",
  "timestamps": true
}

Output

One dataset item per video:

{
  "input": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
  "videoId": "jNQXAC9IVRw",
  "url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
  "title": "Me at the zoo",
  "author": "jawed",
  "language": "en",
  "requestedLanguage": "en",
  "captionType": "manual",
  "fetchedAt": "2026-08-25T04:47:39.930Z",
  "wordCount": 39,
  "transcript": "All right, so here we are, in front of the elephants...",
  "segments": [
    { "start": 1.2, "duration": 2.16, "text": "All right, so here we are, in front of the elephants" }
  ]
}

language is the caption track actually returned; when it differs from requestedLanguage, the video didn't have the language you asked for. captionType is manual (uploaded by the creator), auto (YouTube speech recognition, so names may be misheard) or null if unknown.

If a video has no captions, or the requested language isn't available, the item has error (for example TRANSCRIPT_NOT_FOUND or LANGUAGE_NOT_AVAILABLE) and message instead, and the run continues with the next video. An invalid key or an empty credit balance stops the run right away.

Use cases

  • Summarize or analyze videos with an LLM
  • Build a searchable knowledge base from a channel or playlist
  • Quote the exact moment something was said, using segments timestamps
  • Feed transcripts to RAG pipelines, n8n, Make or Zapier through Apify integrations

More than transcripts

The same API key also covers video search, channel uploads, channel search and playlists. See the API docs, the MCP server for Claude and other AI agents, and SDKs for Python (pip install getyoutubetranscript) and Node (npm install @tubeagentkit/getyoutubetranscript).

Questions or issues: open an issue on this actor or contact us via getyoutubetranscript.com.

About

Apify actor: YouTube transcripts with timestamps via the GetYouTubeTranscript API

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages