YouTube Transcript API

YouTube transcripts by API, ready for your LLM

Send a video, Shorts, playlist or channel URL. Get clean text, timestamped segments, SRT or VTT, plus title, channel and duration. Runs from any server, without the IP blocks that break DIY scrapers.

Get an API keyTry it live, free

  • Videos without captions are free
  • Manual captions preferred, auto as fallback
  • Any caption language + auto-translate

One request per video, playlist or channel

Pass up to 10 URLs or video IDs. Playlists and channels expand to up to 25 videos each.

  • outputFormats: text, segments, srt, vtt
  • language preference list like "es,en", and translateTo
  • Metadata included free: title, channel, duration, views, keywords, thumbnail
curl https://siftwright.com/v1/youtube-transcript \
  -H "Authorization: Bearer $SIFTWRIGHT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw", "outputFormats": ["text", "segments"]}'

What you get back

Real output for the first ever YouTube video, trimmed to three segments.

FieldWhat it is
textThe full transcript as one string
segmentsArray of {start, duration, text} in seconds
srt / vttReady-to-save subtitle files, when requested
language, isAutoGeneratedWhich caption track was used
availableLanguagesEvery caption track on the video
status"ok" or an error reason; only ok is billed
[
  {
    "videoId": "jNQXAC9IVRw",
    "url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
    "inputSource": "jNQXAC9IVRw",
    "status": "ok",
    "title": "Me at the zoo",
    "channelName": "jawed",
    "channelId": "UC4QobU6STFB0P71PMvOGN5A",
    "durationSeconds": 19,
    "viewCount": 438012882,
    "publishDate": null,
    "category": null,
    "keywords": [
      "me at the zoo",
      "jawed karim",
      "first youtube video"
    ],
    "thumbnailUrl": "https://i.ytimg.com/vi/jNQXAC9IVRw/hqdefault.jpg",
    "isLive": false,
    "language": "en",
    "sourceLanguage": "en",
    "isAutoGenerated": false,
    "isTranslated": "",
    "availableLanguages": [
      {
        "code": "en",
        "name": "English",
        "autoGenerated": false
      },
      {
        "code": "de",
        "name": "German",
        "autoGenerated": false
      }
    ],
    "wordCount": 39,
    "text": "All right, so here we are, in front of the elephants the cool thing about these guys is that they have really... really really long trunks and that's cool (baaaaaaaaaaahhh!!) and that's pretty much all there is to say",
    "segments": [
      {
        "start": 1.2,
        "duration": 2.16,
        "text": "All right, so here we are, in front of the elephants"
      },
      {
        "start": 5.318,
        "duration": 2.656,
        "text": "the cool thing about these guys is that they have really..."
      },
      {
        "start": 7.974,
        "duration": 4.642,
        "text": "really really long trunks"
      }
    ]
  }
]

What people build with it

RAG and search over video

Chunk transcripts by segment timestamps so answers can link to the exact second in the video.

Summaries and show notes

Feed text to your LLM to produce summaries, chapters, quotes and newsletters.

Subtitles and localisation

Download SRT or VTT, or machine-translate captions into another language.

Research and monitoring

Pull every new upload from a set of channels and search what was said.

Content repurposing

Turn talks and tutorials into blog drafts, threads and docs.

Accessibility

Give readers a text version of the videos you embed.

Pricing

Each video whose transcript comes back counts as one result. Videos without captions, private or removed videos, and metadata-only lookups are free.

See all plans and the calculator →

OptionPrice
Starter plan$29/mo for 10,000 results ($2.90/1k)
Pro plan$99/mo for 50,000 results ($1.98/1k)
Business plan$299/mo for 250,000 results ($1.20/1k)
Enterprise plan$999/mo for 1,500,000 results ($0.67/1k)
Pay-per-event on Apify$3.00 per 1,000 transcripts, no subscription

Frequently asked questions

Does it work for videos without captions?

No. It reads YouTube's caption tracks (creator-uploaded or auto-generated). If a video has no captions at all, the result has an error status and isn't billed. It doesn't do speech-to-text on the audio.

Why not use the open-source youtube-transcript-api library?

It's great on a laptop. From cloud servers YouTube often blocks the requests (the library's own docs discuss IP bans). Our tool connects directly and falls back to a proxy automatically, so it keeps working from any server.

Which languages are supported?

Any language YouTube has captions for. Pass a preference list like "de,en"; if none match, the first available track is used. translateTo uses YouTube's built-in translation.

Can I get transcripts for a whole channel or playlist?

Yes. Pass the playlist or channel URL and set maxVideosPerSource (1 to 25 per source through the API). Channels return the newest uploads first.

How long does a request take?

In our tests a short video took about 4 seconds end to end. Larger batches take longer; set a client timeout of a few minutes.

Get transcripts from any server today

Plans from $29/month with 10,000 successful results. Failed requests never count. Cancel anytime from the billing portal.

Get an API keyTry the live demo