A TikTok MCP server is a Model Context Protocol server that gives an AI agent such as Claude, ChatGPT or Cursor tools for TikTok data: a profile's latest videos, play, like, share and save counts, hashtags, search results and the comments under a video. For research on accounts you don't own, the best TikTok MCP setup is the hosted Scrape.ly MCP server: your agent runs a ready-made TikTok scraper in the cloud against public pages and gets every video as a structured row, with no TikTok login, no developer app and no Business account.
This guide explains how that differs from TikTok's own MCP server, shows the setup for each client, the tool calls, and a real run from 27 October 2026: the four latest videos from @duolingo and @nasa with 13 comments, in 15 seconds, for about two cents. It also says plainly what an agent can't get from TikTok this way.
Is there an official TikTok MCP server?
Yes, for advertisers. TikTok runs the TikTok for Business MCP Server, a hosted server with two URLs: a "Full Disclosure" one where "all around 400 tools load at connection time" and a "Progressive Disclosure" one where "only around 40 core tools load initially." TikTok's setup guide lists what you need first: "A TikTok for Business account. This account is required to authorize TikTok for Business MCP Server so your AI agent can act on your behalf within the TikTok for Business ecosystem." TikTok describes the server as giving an agent "direct, programmatic access to the TikTok Ads platform", and you sign in with OAuth.
That's the right tool for running your own campaigns from a chat. It's a different job from research, where the agent needs public content from accounts you don't control: how a competitor's last ten videos performed, whether a creator's plays hold up before you sign a deal, what people say in the comments under a brand's post. The third-party TikTok MCP servers we found on GitHub and in MCP directories are mostly front ends for a data vendor's API, billed in that vendor's own credits or points, or local tools you install and keep unblocked yourself.
The Scrape.ly server reads public TikTok pages in the cloud and hands the agent rows.
| Scrape.ly MCP server | TikTok for Business MCP Server | |
|---|---|---|
| Built for | Research on any public account, hashtag or search | Managing ads in your TikTok for Business account |
| TikTok account needed | None | A TikTok for Business account, signed in with OAuth |
| What the agent gets | One row per video: caption, plays, likes, shares, saves, comments count, music, hashtags, author stats; comments on request | Tools for the TikTok Ads platform |
| Whose data | Any public profile, hashtag, search or video URL | The ad accounts you authorize |
| Export and schedule | JSON, CSV or Excel datasets; schedules and automations | Inside the chat |
How to connect the Scrape.ly MCP server
The Scrape.ly MCP server is hosted at https://mcp.scrape.ly, speaks MCP's streamable HTTP transport and signs you in with OAuth or a Scrape.ly API token. Create a free account first; the free plan includes $5 of usage credit every month, no card needed.
Claude Code. One command, then /mcp inside Claude Code to sign in:
claude mcp add --transport http scrapely https://mcp.scrape.lyClaude Desktop and claude.ai. Add https://mcp.scrape.ly as a custom connector under Customize → Connectors. Claude signs you in with OAuth.
Cursor. Add this to ~/.cursor/mcp.json, or leave out headers to sign in with OAuth:
{
"mcpServers": {
"scrapely": {
"url": "https://mcp.scrape.ly",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}ChatGPT, VS Code, Windsurf and others use the same URL with OAuth or a Bearer header; formats are in the MCP docs.
A TikTok-only server. To give the agent just the TikTok tool, put the Actor in the URL:
https://mcp.scrape.ly?actors=echofield/tiktok-scraperOne TikTok Actor, every public input
One Actor covers every public entry point. The TikTok Scraper takes any mix of these inputs, and resultsPerPage caps each one:
| Input | What it does | Useful options |
|---|---|---|
profiles | Usernames or user IDs | profileSorting latest or popular, excludePinnedPosts, date window, reposts |
hashtags | Videos on a tag, with the tag's view count when TikTok sends it | scrapeAdditionalAuthorMeta |
searchQueries | Top or video search; each hit keeps the query that found it | videoSearchDateFilter, videoSearchSorting |
postURLs | Full video URLs or short share links | scrapeRelatedVideos |
| Comments | Top-level comments, plus replies when you set a cap | commentsPerPost, maxRepliesPerComment |
Every video row carries the caption, publish time, play, like, share, comment, save and repost counts, duration, music, hashtags, effect stickers and the author's follower, video and heart counts. Pricing is $2.01 per 1,000 videos, plus $0.000593 per comment when you ask for comments, with platform usage included, as listed on the Store page on 27 October 2026. Private profiles and dead links are never charged. For shops instead of videos, the TikTok Shop Scraper returns products with price, sold count, rating and seller.
What the agent does: the four tool calls
search-actorswith "tiktok" finds the Actors above.fetch-actor-detailsreturns the input schema, README and price, so the agent knows usernames go inprofileswithout the @ and the comment cap iscommentsPerPost.call-actorstarts the run and waits up to 45 seconds. Ours finished in 15.get-actor-outputreads the rows, with only the fields the agent asks for.
The rows never land in the call-actor reply, so a 500-video export doesn't flood the context window.
A real run: @duolingo vs @nasa
The prompt: "Use scrapely to compare the four latest TikToks from @duolingo and @nasa: plays, likes, shares and saves, and what the top comments say. Skip pinned videos."
Both accounts are verified on TikTok, and the prompt names them on purpose. The agent sends echofield/tiktok-scraper this request:
{
"actor": "echofield/tiktok-scraper",
"input": {
"profiles": ["duolingo", "nasa"],
"resultsPerPage": 4,
"excludePinnedPosts": true,
"commentsPerPost": 2
},
"waitSecs": 45,
"callOptions": { "maxTotalChargeUsd": 0.05 }
}The run on 27 October 2026 took 15.1 seconds and ended with the status message "Saved 8 items." The agent read the fields it needed:
{
"runId": "28889c742c954dd38",
"fields": "authorMeta.name,authorMeta.verified,authorMeta.fans,createTimeISO,text,playCount,diggCount,shareCount,commentCount,collectCount,videoMeta.duration,comments"
}What came back:
| Account | Posted | Length | Plays | Likes | Shares | Saves | Likes per play | Caption, first words |
|---|---|---|---|---|---|---|---|---|
| @duolingo | Oct 26 | 14 s | 295,500 | 46,500 | 17,800 | 3,609 | 15.7% | make my own group, call it K/DUO |
| @duolingo | Oct 26 | 10 s | 240,000 | 34,600 | 3,604 | 3,856 | 14.4% | could've been us if u did ur lesson |
| @duolingo | Oct 26 | 14 s | 879,800 | 77,800 | 22,900 | 10,200 | 8.8% | leave everything in the past except ur streak |
| @duolingo | Oct 23 | 10 s | 1,300,000 | 295,800 | 56,600 | 37,200 | 22.8% | dressed up like jinshi but people keep mistaking me… |
| @nasa | Oct 25 | 16 s | 76,400 | 5,847 | 179 | 386 | 7.7% | NASA 🤝 college football. |
| @nasa | Oct 23 | 170 s | 191,500 | 18,900 | 1,087 | 1,572 | 9.9% | NASA shared a major update today on the road ahead for Artemis |
| @nasa | Oct 20 | 45 s | 251,500 | 9,655 | 316 | 783 | 3.8% | Going back to the Moon means figuring out how to get around. |
| @nasa | Oct 16 | 121 s | 423,800 | 22,300 | 618 | 1,653 | 5.3% | There was plenty to see across NASA this week |
The likes-per-play column is the agent's math. Its summary: Duolingo posts short clips of 10 to 14 seconds, three of these four on the same day, and they travel. Its videos drew 15 to 60 shares per 1,000 plays, against 1 to 6 for NASA. NASA's videos run longer, up to almost three minutes, and get fewer plays in absolute terms, but measured against followers NASA did better: an average of 235,800 plays on 2.1 million followers is about 11%, while Duolingo's 678,825 average on 18.3 million is about 3.7%. Each row also carried the hashtags, music and sticker data, and both accounts came back with verified: true.
The comments
The run saved 13 comments. We asked for two per video; TikTok sent one for one Duolingo video and none for another, which is why the schema says it "may return fewer." Commenters are private people, so we show them as [commenter 1] and so on, numbered in the order they came back:
| On | Commenter | Comment | Likes | Replies |
|---|---|---|---|---|
| @duolingo, Oct 26 | [commenter 4] | day 8 of asking duo if he's proud of me | 444 | 20 |
| @duolingo, Oct 26 | [commenter 5] | Every time I try Duolingo I learn nothing | 582 | 4 |
| @nasa, Oct 20 | [commenter 10] | Is it true that the aliens are on earth | 184 | 4 |
| @nasa, Oct 16 | [commenter 12] | My mom found this at 5 am r aliens coming? | 29 | 13 |
The agent's read: four of the eight comments under NASA's videos asked about aliens, none about the Moon missions the videos covered, while Duolingo's most-liked comments were jokes about its mascot and at the app's own expense. That's the kind of pattern a social team wants before writing the next caption, and it took one tool call.
Cost: 8 videos × $0.00201 + 13 comments × $0.000593 = $0.02379 at list price, platform usage included. Our account was billed $0.01903 after its plan's Store discount.
Prompts that work well
- "Use scrapely to get the 20 most popular videos of @nasa and tell me which topics get the most shares per play."
- "Search TikTok for 'protein coffee', 15 videos from the past month, and summarize the hooks in the first line of each caption."
- "Pull the 10 latest videos for #booktok and list the sounds they use."
- "Get 30 comments on this video URL, with replies, and group them by what people ask."
- "Every Monday, compare our account with these three competitors and flag any video with more than twice their usual plays."
- "Keep every run under $0.10."
The agent turns the last line into callOptions.maxTotalChargeUsd, which stops the run when it reaches the cap.
What your agent can and can't get from TikTok
The scraper sees what TikTok shows a logged-out visitor, which covers most research, and the edges are worth knowing:
- Public accounts only. A private profile, a missing account or a dead link is skipped, named in the run's
failedInputsrecord and status message, and not charged. The rest of the input still runs. - Comments are a sample, not the full thread. TikTok can return fewer comments than you ask for on busy videos, and replies only come when you set
maxRepliesPerComment. - Search sorting is applied by the Actor. TikTok's logged-out search ignores date filters and sorting, so the Actor applies them itself, re-ordering up to three times your limit of matching videos.
- Search results depend on location. Keyword searches run from Canada by default so repeated runs see the same ranking; set
proxyCountryCodefor one market. - No made-up fields. A field TikTok didn't send stays off the item, and a real
0stays0. The form's AI description fields are not filled, per the README, because TikTok's payload doesn't include them. - Creators are people. Most TikTok accounts belong to private individuals. Treat usernames, follower counts and comments as personal data, and keep them out of anything you publish, as we do above.
Spending control for agents
- A dollar cap per run.
maxTotalChargeUsdcaps everything a run can cost, comments included. - Scoped API keys with daily charge limits. Give an unattended agent its own key under Settings → API keys, with only
actors:runandruns:read. - A prepaid balance. Usage draws from your credit, so there's no surprise invoice.
Is it legal to scrape TikTok with an AI agent?
The Actor reads public pages that anyone can open without logging in, and your agent never signs in to TikTok. TikTok's US Terms of Service, last updated July 15, 2026, still say you may not "scrape, crawl, export or otherwise extract any data or content in any form, for any purpose, from the Platform using any automated system or software... except as approved in writing" by TikTok USDS Joint Venture. How far a site's terms bind logged-out access is a question courts have looked at; our TikTok scraping guide covers the practical side. Collect only what you need, keep private people out of what you share, follow the GDPR and CCPA, and get legal advice before commercial use. This isn't legal advice.
For a REST endpoint instead of a chat, the TikTok API page has Python, JavaScript and cURL examples, and how to scrape TikTok comments goes deeper on threads and replies. For more platforms, see social media scraping, Instagram MCP, Facebook MCP and the best MCP servers for web scraping.
FAQ
Does TikTok have an official MCP server?
Yes. TikTok runs the TikTok for Business MCP Server for advertisers, with about 400 tools for the TikTok Ads platform, and you authorize it with a TikTok for Business account. For public videos, counts and comments from any account, in any MCP client and with no TikTok account, use the Scrape.ly MCP server.
What is the TikTok MCP server URL for Scrape.ly?
https://mcp.scrape.ly, the same URL for Claude, ChatGPT, Cursor and every other client. Add ?actors=echofield/tiktok-scraper to expose only the TikTok tool.
Can Claude analyze TikTok videos?
Yes, once it can fetch the data. Connect Claude to the Scrape.ly MCP server, ask about a public account, hashtag or search, and Claude runs the TikTok Scraper and works with the plays, likes, shares, saves, captions and comments it gets back. It reads the metadata TikTok publishes, not the video frames.
Can my agent read TikTok comments?
Yes. Set commentsPerPost and the Actor adds top-level comments to each video, plus replies when you set maxRepliesPerComment. Each comment costs $0.000593. TikTok may send fewer than you ask for on very busy videos.
Do I need the TikTok API or a developer account?
No. The Actor reads public pages, so there's no TikTok developer app, Business account or access token. You only need a Scrape.ly account, and the free plan's $5 a month covers almost 2,500 videos at $2.01 per 1,000.
How much does a TikTok MCP setup cost?
Connecting the server is free. You pay per saved video, $2.01 per 1,000, plus $0.000593 per comment if you ask for comments, platform usage included. Our run of eight videos and 13 comments cost $0.02379 at list price.




