Unofficial TikTok API & scraper: creator analytics, video data, comments, search. x402, no API key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
List replies to a specific comment on a video. Use to drill into a comment thread. Requires both `comment_id` and the parent `video_id`. Paginate with `cursor`.
aweme_id or a /video/<id> URL of the parent video
Numeric comment id (from tiktok_video_comments)
Number of items to return, <=50
Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response.
Return the full untrimmed payload. Default false = compact JSON.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
List replies to a specific comment on a video. Use to drill into a comment thread. Requires both `comment_id` and the parent `video_id`. Paginate with `cursor`.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=50 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| video_id* | string | aweme_id or a /video/<id> URL of the parent video |
| comment_id* | string | Numeric comment id (from tiktok_video_comments) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"comment_id",
"video_id"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Number of items to return, <=50"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"video_id": {
"type": "string",
"description": "aweme_id or a /video/<id> URL of the parent video"
},
"comment_id": {
"type": "string",
"description": "Numeric comment id (from tiktok_video_comments)"
}
},
"additionalProperties": false
}List a creator's followers (paginated). Use for audience mapping and finding connected accounts. Paginate with `cursor`.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=50 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| user_id* | string | @username or numeric user_id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Number of items to return, <=50"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"user_id": {
"type": "string",
"description": "@username or numeric user_id"
}
},
"additionalProperties": false
}List the accounts a creator follows (paginated). Use for interest-graph and collaboration analysis. Paginate with `cursor`.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=50 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| user_id* | string | @username or numeric user_id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Number of items to return, <=50"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"user_id": {
"type": "string",
"description": "@username or numeric user_id"
}
},
"additionalProperties": false
}List videos a creator has publicly liked (only available when the account exposes its Likes tab). Use for taste/affinity analysis. Paginate with `cursor`.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=35 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| user_id* | string | @username or numeric user_id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 35,
"minimum": 1,
"description": "Number of items to return, <=35"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"user_id": {
"type": "string",
"description": "@username or numeric user_id"
}
},
"additionalProperties": false
}Fetch a TikTok creator's public profile: follower/following counts, total videos and likes, verification status, bio, region, and avatar. Use for influencer discovery, creator analytics, and audience-size vetting for UGC/brand deals. `handle` accepts an @username (e.g. `@charlidamelio`) or a numeric user_id.
| Argument | Type | Description |
|---|---|---|
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| handle* | string | @username or numeric user_id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"handle"
],
"properties": {
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"handle": {
"type": "string",
"description": "@username or numeric user_id"
}
},
"additionalProperties": false
}List a creator's recent videos with per-video stats (views, likes, comments, shares). Use to compute engagement rate, spot recent virality, or pull a content sample. Paginate with `cursor` (the `max_cursor` from the response). `user_id` accepts an @username or numeric id.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=35 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| user_id* | string | @username or numeric user_id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 35,
"minimum": 1,
"description": "Number of items to return, <=35"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"user_id": {
"type": "string",
"description": "@username or numeric user_id"
}
},
"additionalProperties": false
}List videos under a hashtag/challenge. Pass a resolved numeric `cid`, or a `hashtag` name (e.g. `booktok`) which is resolved to a cid first. Use for trend tracking and campaign monitoring. Passing `cid` directly skips the resolution lookup and is slightly faster.
| Argument | Type | Description |
|---|---|---|
| cid | string | Numeric challenge id (preferred; skips resolution) |
| count | integer | Number of items to return, <=35 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| hashtag | string | Hashtag name without #, e.g. `booktok` |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"cid": {
"type": "string",
"description": "Numeric challenge id (preferred; skips resolution)"
},
"count": {
"type": "integer",
"default": 20,
"maximum": 35,
"minimum": 1,
"description": "Number of items to return, <=35"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"hashtag": {
"type": "string",
"description": "Hashtag name without #, e.g. `booktok`"
}
},
"additionalProperties": false
}Resolve a TikTok @username to its stable numeric user_id and sec_uid. Cheap utility — call this first when you only have a handle and need an id for other tools.
| Argument | Type | Description |
|---|---|---|
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| username* | string | @username (with or without the @) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"username"
],
"properties": {
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"username": {
"type": "string",
"description": "@username (with or without the @)"
}
},
"additionalProperties": false
}Search TikTok creators by keyword/name, returning matching profiles. Use for influencer discovery and account lookup. Paginate with `cursor`.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=30 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| keyword* | string | Search query text |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"keyword"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 30,
"minimum": 1,
"description": "Number of items to return, <=30"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"keyword": {
"type": "string",
"description": "Search query text"
}
},
"additionalProperties": false
}Search TikTok hashtags/challenges by keyword, returning matching challenges with their cid and video counts. Use to find the right hashtag before pulling its videos. Paginate with `cursor`.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=30 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| keyword* | string | Search query text |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"keyword"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 30,
"minimum": 1,
"description": "Number of items to return, <=30"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"keyword": {
"type": "string",
"description": "Search query text"
}
},
"additionalProperties": false
}Search live TikTok streams by keyword. Use for real-time/live-content discovery. Paginate with `cursor`.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=30 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| keyword* | string | Search query text |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"keyword"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 30,
"minimum": 1,
"description": "Number of items to return, <=30"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"keyword": {
"type": "string",
"description": "Search query text"
}
},
"additionalProperties": false
}Search TikTok sounds/tracks by keyword, returning matching music with usage counts. Use for audio/trend discovery. Paginate with `cursor`.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=30 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| keyword* | string | Search query text |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"keyword"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 30,
"minimum": 1,
"description": "Number of items to return, <=30"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"keyword": {
"type": "string",
"description": "Search query text"
}
},
"additionalProperties": false
}Search TikTok videos by keyword, returning matching posts with stats. Use for topic/trend discovery and competitive research. Paginate with `cursor`.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=30 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| keyword* | string | Search query text |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"keyword"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 30,
"minimum": 1,
"description": "Number of items to return, <=30"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"keyword": {
"type": "string",
"description": "Search query text"
}
},
"additionalProperties": false
}Fetch metadata for a sound/track: title, author, duration, and how many videos use it. Use to size a sound's reach before pulling its videos.
| Argument | Type | Description |
|---|---|---|
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| music_id* | string | Numeric TikTok music_id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"music_id"
],
"properties": {
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"music_id": {
"type": "string",
"description": "Numeric TikTok music_id"
}
},
"additionalProperties": false
}List videos that use a given sound/track, most-recent first. Use for sound-trend analysis, finding UGC around a track, or gauging a sound's virality. Paginate with `cursor`.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=35 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| music_id* | string | Numeric TikTok music_id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"music_id"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 35,
"minimum": 1,
"description": "Number of items to return, <=35"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"music_id": {
"type": "string",
"description": "Numeric TikTok music_id"
}
},
"additionalProperties": false
}List a creator's active TikTok Stories (ephemeral posts that expire ~24h). Use to capture story content before it disappears. `user_id` accepts an @username or numeric id.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=35 |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| user_id* | string | @username or numeric user_id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 35,
"minimum": 1,
"description": "Number of items to return, <=35"
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"user_id": {
"type": "string",
"description": "@username or numeric user_id"
}
},
"additionalProperties": false
}List top-level comments on a video, most-relevant first, with like counts and authors. Use for sentiment sampling and audience-response analysis. Paginate with `cursor`.
| Argument | Type | Description |
|---|---|---|
| count | integer | Number of items to return, <=50 |
| cursor | string | Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response. |
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| video_id* | string | aweme_id or a /video/<id> URL |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"video_id"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Number of items to return, <=50"
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the `cursor`/`max_cursor`/`has_more` value from a prior response."
},
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"video_id": {
"type": "string",
"description": "aweme_id or a /video/<id> URL"
}
},
"additionalProperties": false
}Resolve a watermark-free download URL for a TikTok video. Use to obtain the clean MP4 for archival or analysis. Accepts a numeric `video_id` or a full TikTok video URL.
| Argument | Type | Description |
|---|---|---|
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| video_id* | string | aweme_id or a /video/<id> URL |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"video_id"
],
"properties": {
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"video_id": {
"type": "string",
"description": "aweme_id or a /video/<id> URL"
}
},
"additionalProperties": false
}Fetch a single TikTok video's stats and metadata: play/like/comment/share/save counts, author, sound, duration, description, hashtags, and create time. Use to measure a specific post's performance. Accepts a numeric `video_id` (aweme_id) or a full TikTok video URL.
| Argument | Type | Description |
|---|---|---|
| expand | boolean | Return the full untrimmed payload. Default false = compact JSON. |
| video_id* | string | aweme_id or a tiktok.com/.../video/<id> URL |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"video_id"
],
"properties": {
"expand": {
"type": "boolean",
"description": "Return the full untrimmed payload. Default false = compact JSON."
},
"video_id": {
"type": "string",
"description": "aweme_id or a tiktok.com/.../video/<id> URL"
}
},
"additionalProperties": false
}