Transcript API

Pull YouTube transcripts into your own scripts and AI sessions.

Transcript API

Every YouTube video LiftMonkey can read has a transcript, and you can pull it programmatically — into a script, a notebook, or an AI session doing research. One authenticated request, plain text or SRT.

You do not need a YouTube or Google account for this. Captions come from a public endpoint that YouTube's own player uses; there is no API key, no OAuth, and no quota on YouTube's side. The only credential involved is a LiftMonkey token, which authenticates you to us.

Getting a token

Go to API tokens in your account, give the token a name, and copy it.

The value is shown once. We store only a one-way hash of it, so we cannot show it to you again or recover it if you lose it — revoke it and create another. Revoking takes effect immediately.

Tokens are available on every plan, including Free. Each plan has a daily call limit; you'll get a clear 429 with a Retry-After if you reach it.

Making a request

curl -X POST https://liftmonkey.app/api/v1/transcripts \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://youtu.be/VIDEO_ID"}'

You get back the transcript as text, the same content as timestamped srt subtitles, and context about the video — title, channel, duration, and a word count so you know how long it is before you use it.

When it doesn't work

Errors come back with a machine-readable error field so a script can tell the difference between "try again" and "give up":

  • no_transcript_available — the video genuinely has no captions (music, no speech, or the creator disabled them). Permanent.
  • video_unavailable — removed, private, members-only, age-restricted, or region-blocked. Permanent.
  • unsupported_url — not a YouTube link we can read.
  • rate_limited — you've hit the per-minute or daily limit. Retry after the delay given.
  • extraction_failed — a temporary problem reaching YouTube. Worth retrying.

Using it from Claude (MCP)

LiftMonkey also speaks the Model Context Protocol, so a Claude session can fetch transcripts as a built-in tool instead of you writing HTTP calls. Add this to your .mcp.json:

{
  "mcpServers": {
    "liftmonkey": {
      "type": "http",
      "url": "https://liftmonkey.app/mcp",
      "headers": { "Authorization": "Bearer ${LIFTMONKEY_API_TOKEN}" }
    }
  }
}

Set LIFTMONKEY_API_TOKEN in your environment and the session gets a get_youtube_transcript tool. Ask it to read a video and it will call out, fetch the transcript, and work from it directly.

Scope

English transcripts for single YouTube videos. Playlists, channels, other languages, and other platforms aren't supported yet. Videos with no captions can't be transcribed — we read existing captions, we don't transcribe audio ourselves.