TikTok Remote MCP Server
Server Details
Public TikTok profiles, videos, comments and keyword search as JSON. No developer account.
- Status
- Healthy
- Uptime
- 86.0% over 54 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- HasData/tiktok-mcp
- GitHub Stars
- 10
- Server Listing
- TikTok MCP Server
TDQS
Scored across 4 tools
Each tool targets a clearly distinct resource and action: comments, posts, profile, and keyword search. Although getTikTokComments also returns video metadata, its primary purpose (comment retrieval) is unmistakable and does not overlap enough to cause misselection.
All four names follow the same pattern: hasdata_tiktok_<resource>_getTikTok<Resource>, combining a consistent provider/domain prefix with a verb_noun suffix. There is no mixing of conventions or casing styles.
Four tools is a focused, well-scoped set for a read-only TikTok data API, and each earns its place. It is slightly thin, as a couple more endpoints (e.g. hashtag/trending) could reasonably be added.
The surface covers the core read paths: profile, account posts, video comments, and keyword search, with pagination and cross-links to profiles/posts. Minor gaps exist (no dedicated video-detail, followers/following, or trending endpoints) but core discovery and analytics workflows are supported.
Available Tools
4 toolshasdata_tiktok_comments_getTikTokCommentstiktok_comments: GET /ARead-onlyInspect
Get TikTok Comments
Fetches the comments on a public TikTok video by its numeric video id, or the replies to a specific comment when commentId is given. Each comment returns text, like count, timestamp, reply count, and author (username, nickname, avatar, plus hasdataLink to the profile endpoint and hasdataPostsLink to the posts endpoint). The first page of top-level comments also returns post with the video's description, author, music, cover and video URLs, duration, hashtags, and its like, comment, share, play, and save counts. Supports token-based pagination via nextPageToken. Use for sentiment analysis, engagement research, or building comment datasets from a video discovered via the posts or search APIs.
| Name | Required | Description | Default |
|---|---|---|---|
| videoId | Yes | The numeric id of the video (the number after `/video/` in a TikTok URL). | |
| commentId | No | When provided, returns the replies to this comment instead of the video's top-level comments. | |
| nextPageToken | No | Defines the next page token. Use the `nextPageToken` value returned by the previous response. Omit it to fetch the first page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false, so safety is covered. The description adds genuinely useful behavioral detail beyond that: token-based pagination via nextPageToken and the fact that only the first page of top-level comments returns the `post` object. It does not mention rate limits or auth requirements, keeping it at a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded paragraph that opens with the core purpose and then layers in return fields and pagination. It is efficient and wastes little, though the dense enumeration of returned fields is longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return-value burden, and it does: it enumerates comment fields (text, likes, timestamp, reply count, author details, links) plus the post metadata on the first page. Combined with pagination guidance, an agent has everything needed to call and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents videoId, commentId, and nextPageToken. The prose restates their behavior (numeric video id, replies switch, next-page token) but adds no syntax or format detail the schema lacks, matching the baseline 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetches the comments on a public TikTok video') and explicitly distinguishes two operating modes: top-level comments by videoId vs. replies to a comment when commentId is given. This cleanly separates it from siblings like tiktok_posts and tiktok_search without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage contexts ('sentiment analysis, engagement research, building comment datasets') and points to the posts/search APIs as the upstream way to discover a video. It lacks an explicit when-not or alternative-selection rule (there is no tiktok-comments sibling to route against), so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_tiktok_posts_getTikTokPoststiktok_posts: GET /ARead-onlyInspect
Get TikTok Posts
Fetches a page of videos for a public TikTok account by username (handle) and returns each video with description, hashtags, mentions, like/comment/share/play/collect counts, cover and playable video URLs, music, duration, and timestamp. Returns a page of ~30 videos plus a nextPageToken; pass that token back to walk the account history one page at a time. Use to monitor competitor content, track engagement of creator videos, or build datasets of account content for vetting and analytics.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | The TikTok username of the account whose videos you want to scrape, with or without the `@` symbol. | |
| nextPageToken | No | Defines the next page token. It is used for retrieving the next page of results. Use the `nextPageToken` value returned by the previous response. Omit it to fetch the first page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive), but the description adds substantive behavior: results come in pages of ~30, a nextPageToken is returned and must be looped to walk history, and the account must be public. It omits rate limits, auth requirements, and failure modes, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core verb and scope are front-loaded, and the pagination mechanic follows logically. The enumeration of returned fields (likes/comments/shares/plays/collects, cover and playable URLs, music, duration, timestamp) is slightly list-heavy but earns its place given there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the burden of describing return values and the pagination contract, which it does thoroughly. It lacks edge-case context (empty/private accounts, rate limits), so it is strong but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (handle, nextPageToken) are already fully documented in the schema, including the @ optionality and the first-page omit behavior. The description restates handle and the token but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (fetch a page of videos for a public TikTok account by handle) and enumerates the returned fields, so the agent knows exactly what the tool produces. It does not explicitly name or contrast the nearby siblings (tiktok_profile, tiktok_search, tiktok_comments), so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete use cases (monitor competitor content, track creator engagement, build vetting/analytics datasets) and explains the pagination walk via nextPageToken, which is real guidance. It stops short of stating when NOT to use it or pointing to the profile/search alternative for other intents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_tiktok_profile_getTikTokProfiletiktok_profile: GET /ARead-onlyInspect
Get TikTok Profile
Fetches a public TikTok profile by username (handle) and returns nickname, biography, bio link, avatar URLs, verified/private flags, account creation time, and followers, follows, likes, videos, and friends counts. Use to enrich CRM/lead records, verify influencer reach before outreach, monitor competitor accounts, or build datasets of creator metadata for vetting and analytics.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | The TikTok username of the profile you want to scrape, with or without the `@` symbol. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds the meaningful constraint that only public profiles are fetched and discloses the returned data surface, though it says nothing about auth needs, rate limits, or behavior on missing/private handles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action before the return list and use cases. Minor redundancy between the title restatement "Get TikTok Profile" and the opening sentence, and the four-item use-case list is slightly long but each item is substantive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description compensates by enumerating the returned fields and the intended use cases. It is nearly complete; only error/empty-profile behavior and rate-limit context are absent, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single handle parameter is fully documented there, including the optional `@` prefix. The description only restates "by username (handle)" and adds no format or normalization detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Fetches a public TikTok profile by username") and enumerates the exact return set (nickname, bio, avatar URLs, flags, counts). An agent can distinguish this from hasdata_instagram_profile_getInstagramProfile or hasdata_facebook_profile_getFacebookProfile on platform and data shape alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage contexts — CRM/lead enrichment, influencer vetting before outreach, competitor monitoring, dataset building — which orients the agent well. It stops short of naming sibling tools or stating when NOT to use it (e.g. vs tiktok_posts or tiktok_search), so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_tiktok_search_getTikTokSearchtiktok_search: GET /ARead-onlyInspect
Search TikTok
Searches TikTok by keyword and returns either videos (with description, hashtags, mentions, like/comment/share/play counts, cover and playable video URLs, music, and author) or users (nickname, bio, avatar, verified flag, follower count). Each author and each user carries a hasdataLink to their profile endpoint and a hasdataPostsLink to their posts endpoint. Supports token-based pagination via nextPageToken. Use for content discovery, trend research, influencer discovery, or building datasets from a keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | What to search for — videos or users. Defaults to video. | |
| keyword | Yes | The phrase to search for on TikTok. | |
| nextPageToken | No | Defines the next page token. Use the `nextPageToken` value returned by the previous response. Omit it to fetch the first page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/destructive=false, so the safety profile is covered. The description adds genuinely useful context: the token-based pagination model via nextPageToken, the fields returned per result type, and the embedded hasdataLink/hasdataPostsLink pointers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose, then output shape, pagination, and use cases in sequence. It is on the longer side but each sentence carries distinct information, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by describing video vs user fields and the cross-links. Combined with full schema coverage and safety annotations, an agent has enough to call it correctly, though the sibling boundary remains implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the enum, keyword, and nextPageToken semantics are already fully documented in the schema. The description only restates pagination at a high level, adding no syntax or format detail beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Searches TikTok by keyword') and enumerates the two result shapes (videos vs users) with their fields. It stops short of explicitly contrasting with the closely related siblings like hasdata_tiktok_profile or hasdata_tiktok_posts, though the hasdataLink/hasdataPostsLink mentions hint at the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete use cases: 'content discovery, trend research, influencer discovery, or building datasets from a keyword.' This gives clear positive context for when to reach for it, but names no alternatives or exclusions (e.g., when to prefer the profile or posts endpoints).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
hasdata_tiktok_comments_getTikTokComments - First observed
hasdata_tiktok_posts_getTikTokPosts - First observed
hasdata_tiktok_profile_getTikTokProfile - First observed
hasdata_tiktok_search_getTikTokSearch
Publisher details
- Operator
- HasData · Publisher source
- Operator website
- https://hasdata.com · Publisher source
- Vendor relationship
- Independent · Publisher source
- Documentation
- https://docs.hasdata.com/mcp-server · Publisher source
- Trust center
- Not available
- Restrictions
- A free HasData account covers 1,000 credits a month with no card. Heavier use needs a paid plan. No admin approval, no regional limits and no custom OAuth app. · Publisher source
Related MCP Connectors
TikTok videos, profiles, hashtags, search, comments and followers as JSON. No login. $0.35/1k videos
TikTok profiles, video stats and transcripts by handle or URL. No login. Pay per result.
Unofficial TikTok API & scraper: creator analytics, video data, comments, search. x402, no API key.
TikTok search demand, videos, creators, comments and captions for AI agents. OAuth or API key.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables access to TikTok data without watermarks, including trending users, hashtags, post analytics, user profiles, and download links for specific countries. Supports searching by username, user ID, or post links.10MIT
- AlicenseNot gradedqualityBmaintenanceEnables reading TikTok trends, profiles, comments, and own-account metrics via an unofficial facade with fallback providers and risk-tiered tools, plus queued posting capabilities.5 npm-
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients and skill-aware agents to retrieve structured TikTok videos, profiles, hashtags, comments, followers, and related feeds without login. It supports natural-language requests for filtering, transcripts, downloads, and AI labels such as brand safety and sentiment.MIT
- AlicenseAqualityBmaintenanceEnables downloading TikTok videos and photos without watermarks, extracting metadata and analytics, and performing bulk downloads of user profiles via CLI or as an MCP server for AI assistants.53 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.