YouTube & TikTok Transcripts MCP Server for AI Agents
Pricing
from $2.10 / 1,000 youtube transcripts
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
an hour ago
Last modified
Categories
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
| Topic | Details |
|---|---|
| Server URL | https://heyitsgautham--video-transcripts-mcp-server.apify.actor/mcp, streamable HTTP |
| Auth | Your Apify API token, as Authorization: Bearer <token> |
| Tools | youtube_transcript, youtube_channel_transcripts, youtube_search, youtube_comments, tiktok_transcript |
| Price | YouTube 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 |
| Tested | Final 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 |
| Speed | 1.5 to 32 seconds per call in that test, 17 to 27 seconds for 10 YouTube transcripts |
| Limits | Up 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 asynciofrom fastmcp import Clientfrom fastmcp.client.transports import StreamableHttpTransportURL = "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
| Tool | Arguments | Returns |
|---|---|---|
youtube_transcript | videos (URLs or IDs, up to 25), language, timestamps, max_characters | One result per video with transcript, title, channel, publishedAt, duration, language and whether the captions are auto-generated |
youtube_channel_transcripts | source (@handle, channel URL, UC... ID or playlist URL), max_videos (up to 25), language, include_shorts, timestamps, max_characters | The channel or playlist name and one transcript per video, newest first for a channel |
youtube_search | query, max_results (up to 50) | Video IDs, URLs, titles, upload age and view counts in YouTube's order |
youtube_comments | video, max_comments (up to 500), sort (top or newest), include_replies | The video's title, views and comment count, and each comment's text, author display name, likes, reply count and age |
tiktok_transcript | videos (URLs, short links or IDs, up to 25), language, timestamps, max_characters | One 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
| Event | Free plan | Bronze | Silver | Gold 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.
- YouTube Transcript & Subtitles Scraper for specific videos, or when you want every video on a channel or playlist with channel stats and up to 20,000 videos per source.
- YouTube Channel & Playlist Transcripts for every video on a channel or playlist, with channel stats and up to 20,000 videos per source.
- YouTube Video & Shorts Comments Scraper with Replies for the comments and replies on a video or Short, for sentiment analysis and audience research.
- YouTube Search Results & Rank Tracker Scraper for YouTube search results with rank, and channel discovery within a subscriber range.
- TikTok Video Transcript & Subtitles Scraper for the spoken words of public TikTok videos, with an optional speech-to-text fallback for videos without captions.
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.