YouTube Transcript API avatar

YouTube Transcript API

Pricing

Pay per usage

Go to Apify Store
YouTube Transcript API

YouTube Transcript API

Get YouTube transcripts with timestamps, in one request per video, from any cloud server. Uses your GetYouTubeTranscript API key (free tier, no card).

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Deepak Pant

Deepak Pant

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

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

FieldRequiredDescription
videosYesYouTube URLs (watch, youtu.be, shorts) or 11-character video IDs
apiKeyYesYour GetYouTubeTranscript API key (stored as a secret)
languageNoLanguage code such as en, es, de. Defaults to en
timestampsNoAdd 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.