
One call returns up to 10 videos posted by a TikTok user. Each item is a video with playback URL, caption, engagement stats, and music info. The answer shows 10 items; get the next page by passing the `cursor` value to the `cursor` parameter.
7 live routes on TikTok, from $0.00002 per call. Every route below answered our last live test on 2026-10-06; the gateway re-tests them daily.
The upstream price you are metered at, cheapest first. A route without a published price says so.
| Provider | Endpoint | Price |
|---|---|---|
tiktok-scraper7RapidAPI listing | Get User's PostCHEAPESTGET user/posts | $0.00002$0.02 / 1k calls |
tiktok-api23RapidAPI listing | Download All User VideosGET api/download/user/video | $0.00005$0.05 / 1k calls |
tiktok-api23RapidAPI listing | Get User Liked PostsGET api/user/liked-posts | $0.00005$0.05 / 1k calls |
tiktok-api23RapidAPI listing | Get User PostsGET api/user/posts | $0.00005$0.05 / 1k calls |
tiktok-api6RapidAPI listing | Post User VideosPOST user/videos | $0.001998$2.00 / 1k calls |
tiktok-api6RapidAPI listing | User's VideosGET user/videos | $0.001998$2.00 / 1k calls |
tiktok-api6RapidAPI listing | User's Videos ContinuationGET user/videos/continuation | $0.001998$2.00 / 1k calls |
From a real call to the cheapest route: tiktok-scraper7.
data.videos[].idVideo IDdata.videos[].video_idAlternative video IDdata.videos[].playPlayable video URLdata.videos[].coverVideo thumbnail URLdata.videos[].titleVideo captiondata.videos[].author.idCreator user IDdata.videos[].author.unique_idCreator usernamedata.videos[].digg_countLike countdata.videos[].play_countView countdata.cursorCursor for next pagePaging (tiktok-scraper7): read `data.cursor` from the answer and send it back as `cursor=` for the next page; stop when it is empty or repeats. From MCP: call_endpoint("rapidapi-tiktok-scraper7.get_user_s_post", params, pages=3) follows it for you.
Paging (tiktok-api23): read `cursor` from the answer and send it back as `cursor=` for the next page; stop when it is empty or repeats. From MCP: call_endpoint("rapidapi-tiktok-api23.get_user_liked_posts", params, pages=3) follows it for you.
Paging (tiktok-api23): read `data.cursor` from the answer and send it back as `cursor=` for the next page; stop when it is empty or repeats. From MCP: call_endpoint("rapidapi-tiktok-api23.get_user_posts", params, pages=3) follows it for you.
HTTP with your key in x-api-key, or the call_endpoint tool of our MCP server.
| Parameter | Type | Notes | |
|---|---|---|---|
| unique_id | string · query | optional | |
| cursor | string · query | optional | Used to get the content of the next page · default 0 |
| user_id | string · query | optional | default 107955 |
| count | string · query | optional | max 30 · default 10 |
| sort_type | string · query | optional | Sort Type 0-Latest 1-Hot · default 0 |
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-scraper7/user/posts?count=10&cursor=0&user_id=107955&sort_type=0" \ -H "x-api-key: YOUR_KEY"
call_endpoint("rapidapi-tiktok-scraper7.get_user_s_post", {"count": "10", "cursor": "0", "user_id": "107955", "sort_type": "0"}){
"msg": "success",
"code": 0,
"data": {
"cursor": "1788444219118",
"videos": [
{
"play": "https://v19.tiktokcdn-eu.com/19196572c2b4a12ee07e319a13a40222/6ac2aeed/video/tos/alisg/tos-alisg-ve-37c799-sg/oAcUigEXfRBf6fBAJqEVffAoy3hAeAiBfuvewiB/?a=1233&bt…",
"size": 15062406,
"cover": "https://p16-common-sign.tiktokcdn-eu.com/tos-useast8-p-0068-tx2/oM8tULGCGRQNtQAnUfIIpKJA4AHAVfAMfqeuVF~tplv-tiktokx-cropcenter:300:400.jpeg?dr=10399&refresh_tok…",
"is_ad": false,
"music": "https://sf16-music.tiktokcdn-eu.com/obj/ies-music-tx2/7692467603113134879.mp3",
"title": "ATEEZ on the FYF. BTS on tour. dance challenges on repeat. @rachelszero and friends reminisce on K-Pop Summer on TikTok",
"author": {
"id": "107955",
"avatar": "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/ba67b11de451691939223e9d978e613a~tplv-tiktokx-cropcenter:300:300.jpeg?dr=10397&refresh_token=8d7a4c…",
"nickname": "TikTok",
"unique_id": "tiktok"
},
"is_top": 0,
"region": "US",
"wmplay": "https://v19.tiktokcdn-eu.com/703199245c567ea9022c3a86c8a37a7c/6ac2aeed/video/tos/alisg/tos-alisg-ve-37c799-sg/osEfiVoEXcBfBifqmefZYfvUuReBfAAdigJABhA/?a=1233&bt…",
"anchors": null,
"wm_size": 13427269,
"aweme_id": "v15044gf0000davu1gfog65v8vaf05og",
"duration": 65,
"…": "18 more fields"
},
{
"play": "https://v19.tiktokcdn-eu.com/434c312fbfbd53be5c1f71b76cae18e5/6ac2af04/video/tos/alisg/tos-alisg-ve-37c799-sg/o8lQUIDfAAnTQvlqGLe2wqGFAkeoeIR3BA0pg7/?a=1233&bti…",
"size": 18878962,
"cover": "https://p16-common-sign.tiktokcdn-eu.com/tos-useast8-p-0068-tx2/oM1EAXqI9sdDaCGhAJVcYfE2FEARCAv3leTUAE~tplv-tiktokx-cropcenter:300:400.jpeg?dr=10399&refresh_tok…",
"is_ad": false,
"music": "https://sf16-music.tiktokcdn-eu.com/obj/ies-music-tx2/7691701980183415582.mp3",
"title": "if your FYF had you hitting the Zara Larsson, you'll know Pop Girl Summer is never-ending. @McCall Mirabella the music and moments that shaped the season 🐬",
"author": {
"id": "107955",
"avatar": "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/ba67b11de451691939223e9d978e613a~tplv-tiktokx-cropcenter:300:300.jpeg?dr=10397&refresh_token=8d7a4c…",
"nickname": "TikTok",
"unique_id": "tiktok"
},
"is_top": 0,
"region": "US",
"wmplay": "https://v19.tiktokcdn-eu.com/417b41999f5fab666cb126cd6e220968/6ac2af04/video/tos/alisg/tos-alisg-ve-37c799-sg/oAvqYLn0gAilgGvZAQLeeCUGpe2q3ewIQRFV7I/?a=1233&bti…",
"anchors": null,
"wm_size": 17058658,
"aweme_id": "v15044gf0000dauo9t7og65pdvdkrqng",
"duration": 88,
"…": "18 more fields"
},
"… 2 more"
],
"hasMore": true
},
"processed_time": 0.9389
}| Parameter | Type | Notes | |
|---|---|---|---|
| minCursor | number · query | optional | `minCursor` parameter is used for pagination. In the first request, the default value of `minCursor` is 0. For subsequent requests, the value of `minCursor` will be taken from the response of the previous request. Both `minCursor` and `maxCursor` must be provided to paginate in the next request. |
| maxCursor | number · query | optional | `maxCursor` parameter is used for pagination. In the first request, the default value of `maxCursor` is 0. For subsequent requests, the value of `maxCursor` will be taken from the response of the previous request. Both `minCursor` and `maxCursor` must be provided to paginate in the next request. |
| secUid | string · query | required | User secUid · default MS4wLjABAAAAqB08cUbXaDWqbD6MCga2RbGTuhfO2EsHayBYx08NDrN7IE3jQuRDNNN6YwyfH6_6 |
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api23/api/download/user/video?secUid=MS4wLjABAAAAqB08cUbXaDWqbD6MCga2RbGTuhfO2EsHayBYx08NDrN7IE3jQuRDNNN6YwyfH6_6" \ -H "x-api-key: YOUR_KEY"
call_endpoint("rapidapi-tiktok-api23.download_all_user_videos", {"secUid": "MS4wLjABAAAAqB08cUbXaDWqbD6MCga2RbGTuhfO2EsHayBYx08NDrN7IE3jQuRDNNN6YwyfH6_6"})| Parameter | Type | Notes | |
|---|---|---|---|
| count | number · query | optional | `count` parameter specifies the number of results to be returned. The default and maximum value is `30` · default 30 |
| cursor | number · query | optional | `cursor` parameter is used for pagination. In the first request, the default value of `cursor` is 0. For subsequent requests, the value of `cursor` will be taken from the response of the previous request · default 0 |
| secUid | string · query | required | default MS4wLjABAAAA-hnFaH9aGUYLRspPmUXT3nZOha3-CEyChdtqwlyFaG1M_kAi4MD0AaZkbuIsPIzc |
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api23/api/user/liked-posts?count=30&cursor=0&secUid=MS4wLjABAAAA-hnFaH9aGUYLRspPmUXT3nZOha3-CEyChdtqwlyFaG1M_kAi4MD0AaZkbuIsPIzc" \ -H "x-api-key: YOUR_KEY"
call_endpoint("rapidapi-tiktok-api23.get_user_liked_posts", {"count": "30", "cursor": "0", "secUid": "MS4wLjABAAAA-hnFaH9aGUYLRspPmUXT3nZOha3-CEyChdtqwlyFaG1M_kAi4MD0AaZkbuIsPIzc"})| Parameter | Type | Notes | |
|---|---|---|---|
| count | number · query | optional | `count` parameter specifies the number of results to be returned. The default and maximum value is `35` · default 35 |
| cursor | string · query | optional | `cursor` parameter is used for pagination. In the first request, the default value of `cursor` is 0. For subsequent requests, the value of `cursor` will be taken from the response of the previous request · default 0 |
| secUid | string · query | required | default MS4wLjABAAAAqB08cUbXaDWqbD6MCga2RbGTuhfO2EsHayBYx08NDrN7IE3jQuRDNNN6YwyfH6_6 |
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api23/api/user/posts?count=35&cursor=0&secUid=MS4wLjABAAAAqB08cUbXaDWqbD6MCga2RbGTuhfO2EsHayBYx08NDrN7IE3jQuRDNNN6YwyfH6_6" \ -H "x-api-key: YOUR_KEY"
call_endpoint("rapidapi-tiktok-api23.get_user_posts", {"count": "35", "cursor": "0", "secUid": "MS4wLjABAAAAqB08cUbXaDWqbD6MCga2RbGTuhfO2EsHayBYx08NDrN7IE3jQuRDNNN6YwyfH6_6"})| Parameter | Type | Notes | |
|---|---|---|---|
| username | str · body | JSON body field | e.g. "mrbeast" |
curl -X POST "https://fetchapi.co/api/gw/rapidapi-tiktok-api6/user/videos" \
-H "x-api-key: YOUR_KEY" -H "content-type: application/json" \
-d '{"username": "mrbeast"}'call_endpoint("rapidapi-tiktok-api6.post_user_videos", {}, {"username": "mrbeast"})| Parameter | Type | Notes | |
|---|---|---|---|
| username | string · query | required | default mrbeast |
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api6/user/videos?username=mrbeast" \ -H "x-api-key: YOUR_KEY"
call_endpoint("rapidapi-tiktok-api6.user_s_videos", {"username": "mrbeast"})| Parameter | Type | Notes | |
|---|---|---|---|
| continuation_token | string · query | required | default 1655841269000 |
| username | string · query | required | default mrbeast |
| secondary_id | string · query | required | default MS4wLjABAAAABKjQkOz_IIzXXzEAl_9LGsWhvK-gBnlczwRPXK8EmxAp6K3X0qiaP5_OEqmm0XwG |
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api6/user/videos/continuation?username=mrbeast&secondary_id=MS4wLjABAAAABKjQkOz_IIzXXzEAl_9LGsWhvK-gBnlczwRPXK8EmxAp6K3X0qiaP5_OEqmm0XwG&continuation_token=1655841269000" \ -H "x-api-key: YOUR_KEY"
call_endpoint("rapidapi-tiktok-api6.user_s_videos_continuation", {"username": "mrbeast", "secondary_id": "MS4wLjABAAAABKjQkOz_IIzXXzEAl_9LGsWhvK-gBnlczwRPXK8EmxAp6K3X0qiaP5_OEqmm0XwG", "continuation_token": "1655841269000"})Call it over HTTP or from any MCP client. Each key has a rate limit and a monthly cap; calls are metered at the upstream price.