YouTube & TikTok Transcripts MCP Server for AI Agents avatar

YouTube & TikTok Transcripts MCP Server for AI Agents

Pricing

from $2.10 / 1,000 youtube transcripts

Go to Apify Store
YouTube & TikTok Transcripts MCP Server for AI Agents

YouTube & TikTok Transcripts MCP Server for AI Agents

MCP server for AI agents: YouTube and TikTok transcripts, YouTube search and comments as tools for Claude, ChatGPT, Cursor and any MCP client. Connect by URL, nothing to host. $3 per 1,000 YouTube transcripts, $1.50 per 1,000 TikTok. Videos without captions and failures free.

Pricing

from $2.10 / 1,000 youtube transcripts

Rating

0.0

(0)

Developer

Gautham Krishna

Gautham Krishna

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

an hour ago

Last modified

Share

YouTube & TikTok Transcripts MCP Server

An MCP server that gives AI agents YouTube and TikTok transcripts, YouTube search and YouTube comments as tools, for anyone building with Claude, ChatGPT, Cursor or their own agent.

Use cases:

  • Ask Claude to summarize a YouTube video from its link
  • Have an agent search YouTube, read the top videos' transcripts and compare what they say
  • Pull the latest videos of a channel or a whole playlist into an agent's context in one call
  • Read a TikTok's spoken words, with its author, date and play counts
  • Let an agent read what viewers say in a video's comments

It runs on Apify in Standby mode, so there is nothing to install or host. Each tool call answers in a few seconds and starts no other run.

You pay $3 per 1,000 YouTube transcripts ($0.003 each) and $1.50 per 1,000 TikTok transcripts, less on Apify Store discount tiers. Videos without captions, private or deleted videos, duplicates and failures are never charged.

At a glance

TopicDetails
Server URLhttps://heyitsgautham--video-transcripts-mcp-server.apify.actor/mcp, streamable HTTP
AuthYour Apify API token, as Authorization: Bearer <token>
Toolsyoutube_transcript, youtube_channel_transcripts, youtube_search, youtube_comments, tiktok_transcript
PriceYouTube transcript $0.003, TikTok transcript $0.0015, search result $0.00024, comment $0.00025. Lower on Bronze, Silver and Gold. No start fee. You also pay the platform usage of the server's run, as with every Standby actor on Apify
TestedFinal test on 21 Oct 2026, 17 tool calls through an MCP client: 77 of 77 inputs that had data worked (55 YouTube transcripts, 15 TikTok transcripts, 3 searches, 4 comment threads, 4 channels and playlists). 10 inputs had no data, such as TikToks without captions
Speed1.5 to 32 seconds per call in that test, 17 to 27 seconds for 10 YouTube transcripts
LimitsUp to 25 videos per transcript call, 50 search results and 500 comments. Reads the captions the site publishes and runs no speech-to-text

Connect

Claude Desktop, Cursor, Windsurf and other clients that take a JSON config

{
"mcpServers": {
"video-transcripts": {
"url": "https://heyitsgautham--video-transcripts-mcp-server.apify.actor/mcp",
"headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
}
}
}

Claude Code

claude mcp add --transport http video-transcripts https://heyitsgautham--video-transcripts-mcp-server.apify.actor/mcp --header "Authorization: Bearer <YOUR_APIFY_TOKEN>"

Through Apify's own MCP server

If you already use https://mcp.apify.com, add ?tools=heyitsgautham/video-transcripts-mcp-server to its URL and the five tools show up next to Apify's. Apify's call-actor tool can also call them as heyitsgautham/video-transcripts-mcp-server:youtube_transcript.

From Python

import asyncio
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport
URL = "https://heyitsgautham--video-transcripts-mcp-server.apify.actor/mcp"
async def main():
transport = StreamableHttpTransport(URL, headers={"Authorization": "Bearer <YOUR_APIFY_TOKEN>"})
async with Client(transport) as client:
result = await client.call_tool("youtube_transcript", {"videos": ["https://youtu.be/jNQXAC9IVRw"]})
print(result.structured_content["results"][0]["transcript"])
asyncio.run(main())

Your Apify token is on the Integrations page of the Apify Console.

Tools

ToolArgumentsReturns
youtube_transcriptvideos (URLs or IDs, up to 25), language, timestamps, max_charactersOne result per video with transcript, title, channel, publishedAt, duration, language and whether the captions are auto-generated
youtube_channel_transcriptssource (@handle, channel URL, UC... ID or playlist URL), max_videos (up to 25), language, include_shorts, timestamps, max_charactersThe channel or playlist name and one transcript per video, newest first for a channel
youtube_searchquery, max_results (up to 50)Video IDs, URLs, titles, upload age and view counts in YouTube's order
youtube_commentsvideo, max_comments (up to 500), sort (top or newest), include_repliesThe video's title, views and comment count, and each comment's text, author display name, likes, reply count and age
tiktok_transcriptvideos (URLs, short links or IDs, up to 25), language, timestamps, max_charactersOne result per video with transcript, author, description, date, duration and play, like, comment and share counts

Every result carries a status. ok is charged, and everything else is free: no_transcript, unavailable, duplicate, invalid_input, error and budget_reached. Transcript calls also return a summary with the count per status and how many results were charged.

With timestamps: true the transcript comes as paragraphs, each led by its start time, such as [1:05] text. max_characters cuts each transcript for agents with a small context, and marks it truncated: true. language picks the caption language by its 2-letter code. When a video has no captions in it, you get the original language and requestedLanguageFound: false.

Output examples

From the final test run, with the transcripts shortened here.

youtube_transcript with max_characters: 4000:

{
"input": "https://www.youtube.com/watch?v=qgLaCZyKv_8",
"videoId": "qgLaCZyKv_8",
"url": "https://www.youtube.com/watch?v=qgLaCZyKv_8",
"status": "ok",
"title": "I Tried All The Best (and Worst) Doorbells",
"channel": "Linus Tech Tips",
"channelId": "UCXuqSBlHAE6Xw-yeJA0Tunw",
"publishedAt": "2026-09-17T17:29:14Z",
"durationSeconds": 1042,
"language": "en",
"requestedLanguageFound": true,
"isAutoGenerated": true,
"wordCount": 2866,
"transcript": "We've all got our own reasons for wanting a doorbell camera. [music] >> Great. Now, none of us can watch TV. >> That's my TV. >> But which one should you get? ...",
"truncated": true
}

youtube_search:

{
"query": "how transformers work",
"status": "ok",
"results": [
{
"position": 1,
"videoId": "jcY4QN7awEc",
"url": "https://www.youtube.com/watch?v=jcY4QN7awEc",
"title": "Transformers Explained - How transformers work",
"published": "4 years ago",
"views": "3,773,822 views"
}
]
}

youtube_comments:

{
"input": "https://www.youtube.com/watch?v=wjZofJX0v4M",
"videoId": "wjZofJX0v4M",
"url": "https://www.youtube.com/watch?v=wjZofJX0v4M",
"videoTitle": "Transformers, the tech behind LLMs | Deep Learning Chapter 5",
"videoViews": 11471688,
"videoCommentCount": 4143,
"status": "ok",
"comments": [
{
"commentId": "UgyhCd5s7WIU57r39cl4AaABAg",
"text": "Edit: The finalized version of the next chapter is out https://youtu.be/eMlx5fFNoYc ...",
"author": "@3blue1brown",
"isByCreator": true,
"likes": 1300,
"replies": 47,
"published": "2 years ago",
"isReply": false,
"parentId": null,
"isPinned": true,
"isHeartedByCreator": false
}
]
}

tiktok_transcript with timestamps: true:

{
"input": "https://www.tiktok.com/t/ZTUucaS24",
"videoId": "7683326706576395538",
"url": "https://www.tiktok.com/@chefpolooficial/video/7683326706576395538",
"status": "ok",
"author": "chefpolooficial",
"authorName": "Chef Polo",
"createTime": "2026-09-09T00:31:51Z",
"durationSeconds": 483,
"playCount": 7200000,
"likeCount": 275800,
"commentCount": 4210,
"shareCount": 114900,
"language": "es",
"requestedLanguageFound": false,
"isAutoGenerated": true,
"isMachineTranslated": false,
"availableLanguages": ["spa-ES"],
"wordCount": 1362,
"transcript": "[0:00] te encantan los tacos de suadero y no sabes cómo prepararlos en casa ..."
}

Pricing

EventFree planBronzeSilverGold and up
YouTube transcript$0.003$0.0027$0.0024$0.0021
TikTok transcript$0.0015$0.0014$0.0013$0.0012
YouTube search result$0.00024$0.00022$0.00020$0.00018
YouTube comment$0.00025$0.000225$0.00020$0.000175

A tool charges once per call, after the work is done, only for the results it returns. If your Apify spending limit runs out mid-call, the results it does not cover come back as free budget_reached rows.

Apify runs Standby actors in your account, so your account also pays the server run's platform usage: compute while it serves your calls and for 2 minutes after the last one, and the proxy traffic. In testing, a server run that stayed up 6 minutes and returned 75 transcripts, 49 search results and 120 comments used $0.038 of platform usage. Proxy traffic was $0.028 of that.

Run it without an MCP client

A normal run of this actor, from the Console or the API, runs one tool once and saves the results in the dataset. Set tool to a tool name and arguments to its arguments, for example {"videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]}. For batch jobs of thousands of videos, our YouTube Transcript Scraper, YouTube Channel Transcripts and TikTok Transcript Scraper fit better.

More from heyitsgautham

Other actors from the same account.

FAQ

Which videos have no transcript? Videos with no captions at all, such as many music videos, and TikToks without captions, such as music-only clips and photo posts. They come back as free no_transcript rows.

Does it work for Shorts, live streams and old videos? Yes. Shorts, youtu.be, embed and live links all work, and the oldest test video is from 2005.

What data does it collect? Only what YouTube and TikTok show to logged-out visitors. Comment authors appear by their public display name only. It uses no login and no account on either site.