TikTok
22 endpoints.
- GET /v1/tiktok/collection_videos
- GET /v1/tiktok/creators_popular
- GET /v1/tiktok/get_trending_feed
- GET /v1/tiktok/live
- GET /v1/tiktok/user
- GET /v1/tiktok/user_region
- GET /v1/tiktok/search_hashtag
- GET /v1/tiktok/search_keyword
- GET /v1/tiktok/search_suggestions
- GET /v1/tiktok/search_top
- GET /v1/tiktok/search_users
- GET /v1/tiktok/song
- GET /v1/tiktok/song_videos
- GET /v1/tiktok/user_audience
- GET /v1/tiktok/user_followers
- GET /v1/tiktok/user_following
- GET /v1/tiktok/user_live
- GET /v1/tiktok/video_comment_replies
- GET /v1/tiktok/video_comments
- GET /v1/tiktok/video_captions
- GET /v1/tiktok/video_plus
- GET /v1/tiktok/user_videos_pro
GET /v1/tiktok/collection_videos
Collection Videos
Fetches the videos saved in a public TikTok collection, which TikTok also calls a playlist. Pass the collection URL. Returns `videos` using TikTok's native web video object format, including `id`, `desc`, `author`, `stats`, and `video`. To fetch the next page, pass the previous response's `max_cursor` as `cursor` when `has_more` is true.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
url required | query | string | Public TikTok collection URL |
next_cursor | query | string | Cursor to get more videos. Use max_cursor from the previous response. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/collection_videos?url=https://www.tiktok.com/@kibblemaster808/collection/Want-to-go-7665668414573546258" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/collection_videos?url=https://www.tiktok.com/@kibblemaster808/collection/Want-to-go-7665668414573546258", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/collection_videos?url=https://www.tiktok.com/@kibblemaster808/collection/Want-to-go-7665668414573546258",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"collection_id": "7665668414573546258",
"has_more": false,
"max_cursor": "5",
"status_code": 0,
"status_msg": "",
"videos": [
{
"aigc_description": "",
"category_type": 116,
"is_hd_bitrate": false,
"show_aigc": true,
"anchors": [
{
"description": "CapCut · Video Editor",
"type": 54
}
],
"author": {
"id": "7506421330087576593",
"username": "miotravelapp",
"display_name": "miotravelapp"
},
"created_at": 1784185607,
"desc": "How often do you reckon they think about the Roman Empire? 🐈⬛",
"id": "7663018809392909588",
"stats": {
"save_count": 18900,
"comment_count": 359,
"like_count": 113000,
"view_count": 865200,
"share_count": 15700
},
"video": {
"duration": 68,
"height": 1024,
"width": 576,
"cover": "https://p19-common-sign.tiktokcdn-us.com/tos-alisg-p-0037/oUYM7iBIKB1BL5CGgwAtAiwJEfLCFXAiX9IAEA~tplv-tiktokx-origin.image"
}
}
]
}GET /v1/tiktok/creators_popular
Get popular creators
Discovers trending and popular TikTok creators, filterable by follower count range, creator country, and audience country. Returns `creator_list`, an array of creator objects each with `nickname`, `unique_id`, `follower_count`, `likes_count`, `video_views`, `engagement_rate`, and avatar URLs. Sortable by engagement, follower count, or average views.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
sort_by | query | string | Sort creators by engagement, follower count, or average views one of: engagement, follower, avg_views |
followers | query | string | Filter by follower count range one of: 10K-100K, 100K-1M, 1M-10M, 10M+ |
creator_country | query | string | Country code of the creator one of: AU, BR, CA, EG, FR, DE, ID, IL, IT, JP, MY, PH, RU, SA, SG, KR, ES, TW, TH, TR, AE, GB, US, VN |
audience_country | query | string | Country code of the audience/follower one of: AU, BR, CA, EG, FR, DE, ID, IL, IT, JP, MY, PH, RU, SA, SG, KR, ES, TW, TH, TR, AE, GB, US, VN |
page | query | number | Page number |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/creators_popular" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/creators_popular", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/creators_popular",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"creators": [
{
"tcm_id": "7377026041014927376",
"user_id": "6620098253516439554",
"nick_name": "SANIEV",
"avatar_url": "https://p16-sign-sg.tiktokcdn.com/tos-alisg-avt-0068/e2699c87b4fe37f8fc4d65a7dc453786~tplv-tiktokx-cropcenter:100:100.png?dr=14579&refresh_token=db296f9e&x-e...",
"country_code": "US",
"follower_cnt": 431339,
"liked_cnt": 129772610,
"tt_link": "https://www.tiktok.com/@sanievv_",
"tcm_link": "https://creatormarketplace.tiktok.com/ad#/author/7377026041014927376",
"items": [
{
"item_id": "7395965676629888274",
"cover_url": "https://p16-sign-sg.tiktokcdn.com/tos-alisg-p-0037/9f078a63ecd74061b52172692e1f5600_1722007460~tplv-noop.image?dr=18692&refresh_token=d96f1adb&x-expires=1767...",
"tt_link": "https://www.tiktok.com/@author/video/7395965676629888274",
"vv": 2062831,
"liked_cnt": 229970,
"created_at": 1722007452
}
]
}
],
"pagination": {
"page": 1,
"size": 20,
"total": 10,
"has_more": false
}
}GET /v1/tiktok/get_trending_feed
Trending Feed
Fetches TikTok's trending/For You feed for a given region — useful for discovering viral content and what's currently popular. Returns `aweme_list`, an array of video objects each with `aweme_id`, `desc` (caption), `statistics` (play_count, digg_count/likes, comment_count, share_count, collect_count), `video` (playback and download URLs, cover), `author` info, and `image_post_info` for photo carousels.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
region required | query | string | Where you want the proxy to be. This doesn't mean that you will only see TikToks from this region, you will just see the content that isn't banned in that region. |
trim | query | boolean | Set to true to get a trimmed response. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/get_trending_feed?region=US" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/get_trending_feed?region=US", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/get_trending_feed?region=US",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"videos": [
{
"video_id": "7540000301621841183",
"desc": "#hudsonvalley #fallgetaway #farm #upstateny #resort ",
"desc_language": "un",
"region": "US",
"statistics": {
"video_id": "7540000301621841183",
"comment_count": 646,
"like_count": 71423,
"download_count": 130,
"view_count": 1443873,
"share_count": 8440,
"forward_count": 0,
"lose_count": 0,
"lose_comment_count": 0,
"whatsapp_share_count": 37,
"collect_count": 21957,
"repost_count": 0
},
"video": {
"play_addr": {
"uri": "https://v16m.tiktokcdn-us.com/55f0fa91eb07f93e6cc97b69cf44bd28/68b782c0/video/tos/useast5/tos-useast5-ve-27dcd7c799-tx/ocTKSt6SBoLEzYiMEvPhB7Ak7g1fI9ZDxCOqp8...",
"url_list": [
"https://v16m.tiktokcdn-us.com/55f0fa91eb07f93e6cc97b69cf44bd28/68b782c0/video/tos/useast5/tos-useast5-ve-27dcd7c799-tx/ocTKSt6SBoLEzYiMEvPhB7Ak7g1fI9ZDxCOqp8..."
],
"width": 720,
"height": 720,
"url_key": "7183038472843692805",
"url_prefix": null
},
"cover": {
"uri": "tos-useast8-i-photomode-tx2/3a1c4f9217414c3c95dd8d25c2dd8d13",
"url_list": [
"https://p19-pu-sign-useast8.tiktokcdn-us.com/tos-useast8-i-photomode-tx2/3a1c4f9217414c3c95dd8d25c2dd8d13~tplv-photomode-image-cover:640:0:q70.webp?dr=12229&..."
],
"width": 640,
"height": 853,
"url_prefix": null
}
},
"image_post_info": {
"images": [
{
"display_image": "{...}"
}
],
"title": "The most perfect fall getaway for the day or the night! 🍂",
"post_extra": "{\"photo_cover_shrink\":false,\"photo_blurhash\":false,\"photo_progressive\":false}"
},
"author": {
"uid": "6754760670083138566",
"short_id": "0",
"display_name": "Bre 🤍",
"bio": "3rd grade teacher 🍎| making life cute 🪞| home inspo loading… 🏡🤎”",
"avatar_thumb": {
"uri": "tos-useast8-avt-0068-tx2/3bc038986117debaa55c18bae5685e18",
"url_list": [
"https://p19-pu-sign-useast8.tiktokcdn-us.com/tos-useast8-avt-0068-tx2/3bc038986117debaa55c18bae5685e18~tplv-tiktokx-cropcenter-q:100:100:q70.heic?dr=8835&idc..."
],
"width": 720,
"height": 720,
"url_prefix": null
},
"avatar_medium": {
"uri": "tos-useast8-avt-0068-tx2/3bc038986117debaa55c18bae5685e18",
"url_list": [
"https://p19-pu-sign-useast8.tiktokcdn-us.com/tos-useast8-avt-0068-tx2/3bc038986117debaa55c18bae5685e18~tplv-tiktokx-cropcenter-q:720:720:q70.heic?dr=8836&idc..."
],
"width": 720,
"height": 720,
"url_prefix": null
},
"region": "US",
"language": "en",
"secure_user_id": "MS4wLjABAAAANbZGXVN-iwJvesiIVGgD_nRTpyI4PGOXHEbt01cN9U5S3Ih21qUe5WQ9ztsn2J6h",
"social_info": "{\"imprs_info\":\"vv_100k+\",\"is_cold_info\":\"0\"}",
"events": null
},
"created_at": 1755543133,
"is_ad": false,
"is_eligible_for_commission": false,
"create_time_utc": "2025-08-18T18:52:13.000Z",
"url": "https://www.tiktok.com/@breannafriedman0/photo/7540000301621841183"
}
]
}GET /v1/tiktok/live
Live Info
Gets curated room-level info for a TikTok live from TikTok's public live-room source. Use `/v1/tiktok/user/live` first to find the `room_id`. If you only have a TikTok handle and need the user's numeric id, use `/v1/tiktok/profile` first to get `user.id`. This endpoint is separate from `/v1/tiktok/user/live` because it uses a different upstream call and returns a smaller response with the most relevant fields: `room_id`, `like_count`, `viewer_count`, `status`, `title`, `cover_url`, and `owner`. TikTok's room-access refusal returns HTTP 403 with no credit charge. The creator may have enabled audience controls; this response does not mean the profile was deleted. Other upstream failures remain errors rather than successful empty rooms.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
room_id required | query | string | TikTok live room id. Get this from `/v1/tiktok/user/live` in `liveRoomUserInfo.roomId` or `liveRoom.id` when the user is live. |
user_id required | query | string | TikTok numeric user id for the live owner. Get this from `/v1/tiktok/profile` in `user.id`. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/live?room_id=7523685855395842871&user_id=6742945285876515845" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/live?room_id=7523685855395842871&user_id=6742945285876515845", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/live?room_id=7523685855395842871&user_id=6742945285876515845",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"room_id": "7523685855395842871",
"like_count": 4317,
"viewer_count": 268,
"status": "live",
"title": "6'13 Grateful Streamer",
"cover_url": "https://p16-webcast.tiktokcdn-us.com/webcast/cover.jpeg",
"owner": {
"id": "6742945285876515845",
"username": "thejustalex",
"display_name": "JustAlex"
}
}GET /v1/tiktok/user
Profile
Fetches public profile data for a TikTok user by their handle or user_id — useful for looking up a creator's identity, bio, and account stats. Returns a `user` object (display name, avatar URLs, bio/signature, verification status, bio link) and a `stats` object (followerCount, followingCount, heartCount/total likes, videoCount). This only returns profile metadata, not the user's actual videos or followers list.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
handle | query | string | TikTok handle. You can pass handle or user_id. |
user_id | query | string | TikTok user id. |
cache_max_age | query | string | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). See the Caching page for details. one of: 1d, 3d, 7d, 14d, 30d |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/user" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/user", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/user",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"user": {
"id": "6659752019493208069",
"short_user_id": "",
"username": "stoolpresidente",
"display_name": "Dave Portnoy",
"avatar_large": "https://p16-sign-va.tiktokcdn.com/tos-maliva-avt-0068/7310178711609032710~c5_1080x1080.jpeg?lk3s=a5d48078&nonce=58494&refresh_token=466ff0b92ed2f51170dbbdc2a...",
"avatar_medium": "https://p16-sign-va.tiktokcdn.com/tos-maliva-avt-0068/7310178711609032710~c5_720x720.jpeg?lk3s=a5d48078&nonce=18587&refresh_token=4c5e30ff3fe99ca813d9f79d74c...",
"avatar_small": "https://p16-sign-va.tiktokcdn.com/tos-maliva-avt-0068/7310178711609032710~c5_100x100.jpeg?lk3s=a5d48078&nonce=56685&refresh_token=52483b418cbeceeaf2863a9fe0f...",
"bio": "El Presidente/Barstool Sports Founder.",
"created_at": 1550594547,
"verified": true,
"secure_user_id": "MS4wLjABAAAAINC_ElRR-l1RCcnEjOZhNO-9wOzAMf-YHXqRY8vvG9bEhMRa6iu23TaE3JPZYXBD",
"ftc": false,
"relation": 0,
"open_favorite": false,
"bio_link": {
"link": "https://www.barstoolsports.com/bios/Surviving-Barstool",
"risk": 0
},
"comment_setting": 0,
"commerce_user_info": {
"commerce_user": false
},
"duet_setting": 0,
"stitch_setting": 0,
"private_account": false,
"secret": false,
"is_ad_virtual": false,
"room_id": "",
"unique_id_modify_time": 0,
"tt_seller": false,
"...": "13 more fields"
},
"stats": {
"followers": 4100000,
"following": 74,
"heart": 190400000,
"total_likes": 190400000,
"video_count": 2017,
"like_count": 0,
"friend_count": 52
},
"item_list": []
}GET /v1/tiktok/user_region
Profile Region
Returns the TikTok region code for a public profile, like `US` for United States or `MX` for Mexico.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
handle required | query | string | TikTok handle |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_region?handle=stoolpresidente" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_region?handle=stoolpresidente", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_region?handle=stoolpresidente",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"credits": 100,
"handle": "stoolpresidente",
"profile_url": "https://www.tiktok.com/@stoolpresidente",
"region": "US"
}GET /v1/tiktok/search_hashtag
Search by Hashtag
Searches for TikTok videos under a specific hashtag — useful for finding content by topic or trend. Returns `aweme_list`, an array of video objects each with `aweme_id`, `desc` (caption), `statistics` (play_count, digg_count/likes, comment_count, share_count), `video` info, and `author` details. Paginate with `cursor` from the previous response. TikTok may return duplicate results. Scrapes TikTok videos by hashtag. Note: TikTok can return duplicate results for this search. Sorry about that — it looks like a TikTok-side thing, so we don't have control over it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
hashtag required | query | string | Hashtag to search for (without #) |
region | query | string | Region the proxy will be set to. Note: this isn't going to grab you all tiktoks from this region, you're just setting the proxy there. |
trim | query | boolean | Set to true to get a trimmed response |
next_cursor | query | number | Cursor to get more videos. Get 'cursor' from previous response. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_hashtag?hashtag=example" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_hashtag?hashtag=example", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_hashtag?hashtag=example",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"videos": [
{
"video_id": "7277923990184742177",
"desc": "best boys #friends #joeytribbiani #chandlerbing #joeyandchandler #sitcom #mecore #uscore #bromance #matthewperry #mattleblanc ",
"desc_language": "en",
"region": "DE",
"statistics": {
"video_id": "7277923990184742177",
"collect_count": 385471,
"comment_count": 94635,
"like_count": 2840077,
"download_count": 1318,
"forward_count": 0,
"lose_comment_count": 0,
"lose_count": 0,
"view_count": 12711728,
"repost_count": 0,
"share_count": 614428,
"whatsapp_share_count": 19390
},
"video": {
"cover_tsp": 7.68255116568915,
"ai_dynamic_cover": {
"uri": "tos-useast2a-p-0037-euttp/5a4c497ba73c4d3f90203a4debd33196_1694523739",
"url_list": [
"https://p16-sign-useast2a.tiktokcdn.com/tos-useast2a-p-0037-euttp/5a4c497ba73c4d3f90203a4debd33196_1694523739~tplv-tiktokx-origin.image?dr=9229&refresh_token..."
],
"url_prefix": null
},
"ai_dynamic_cover_bak": {
"uri": "tos-useast2a-p-0037-euttp/5a4c497ba73c4d3f90203a4debd33196_1694523739",
"url_list": [
"https://p16-sign-useast2a.tiktokcdn.com/tos-useast2a-p-0037-euttp/5a4c497ba73c4d3f90203a4debd33196_1694523739~tplv-tiktokx-origin.image?dr=9229&refresh_token..."
],
"url_prefix": null
},
"animated_cover": {
"uri": "tos-useast2a-p-0037-euttp/5a4c497ba73c4d3f90203a4debd33196_1694523739",
"url_list": [
"https://p16-sign-useast2a.tiktokcdn.com/tos-useast2a-p-0037-euttp/5a4c497ba73c4d3f90203a4debd33196_1694523739~tplv-tiktokx-origin.image?dr=9229&refresh_token..."
],
"url_prefix": null
},
"big_thumbs": [],
"bit_rate": [
{
"hdr_bit": "",
"hdr_type": "",
"bit_rate": 364924,
"dub_infos": null,
"fid_profile_labels": "",
"fps": 30,
"gear_name": "adapt_540_1",
"is_bytevc1": 1,
"play_addr": "{...}",
"quality_type": 28,
"video_extra": "{\"PktOffsetMap\":\"[{\\\"time\\\": 1, \\\"offset\\\": 105212}, {\\\"time\\\": 2, \\\"offset\\\": 155336}, {\\\"time\\\": 3, \\\"offset\\\": 188263}, {\\\"time\\\": 4, \\\"offset\\\": 240132},..."
}
],
"bit_rate_audio": [],
"cdn_url_expired": 0,
"cla_info": {
"caption_infos": null,
"captions_type": 0,
"creator_edited_caption_id": 0,
"enable_auto_caption": 0,
"has_original_audio": 0,
"hide_original_caption": false,
"no_caption_reason": 3,
"vertical_positions": null
},
"cover": {
"height": 720,
"uri": "tos-useast2a-p-0037-euttp/7eb5601a4f4b4134b8321955a5ceb515_1694523738",
"url_list": [
"https://p16-sign-useast2a.tiktokcdn.com/tos-useast2a-p-0037-euttp/7eb5601a4f4b4134b8321955a5ceb515_1694523738~tplv-tiktokx-origin.image?dr=1347&refresh_token..."
],
"url_prefix": null,
"width": 720
},
"cover_is_custom": true,
"did_profile_labels": "",
"download_addr": {
"data_size": 1645666,
"file_cs": "c:0-15212-b6fb",
"height": 720,
"uri": "v0f044gc0000ck062fbc77uc8kdoc7ig",
"url_list": [
"https://v45.tiktokcdn-eu.com/de0e8da0f33c14a280afb63dbbd7200f/6854a8e2/video/tos/useast2a/tos-useast2a-ve-0068c001-euttp/oYBtGfE0AWGREzMHElYDeRkucMhEAlDPQQBA..."
],
"url_prefix": null,
"width": 720
},
"download_no_watermark_addr": {
"data_size": 1596498,
"file_cs": "c:0-15212-b6fb",
"file_hash": "865acc2a4a685aa6fe71256e1f7c8510",
"height": 576,
"uri": "v0f044gc0000ck062fbc77uc8kdoc7ig",
"url_key": "v0f044gc0000ck062fbc77uc8kdoc7ig_h264_540p_767178",
"url_list": [
"https://v45.tiktokcdn-eu.com/a99d33899bc03dd0c27ade23be118c55/6854a8e2/video/tos/useast2a/tos-useast2a-ve-0068-euttp/osjwrgDKl4DecPcABYeDQEn9EAARrtCIQibMPG/?..."
],
"url_prefix": null,
"width": 576
},
"duration": 16648,
"dynamic_cover": {
"height": 720,
"uri": "tos-useast2a-p-0037-euttp/d1dfbab565b84a92ad94eca69e455a4c_1694523739",
"url_list": [
"https://p16-sign-useast2a.tiktokcdn.com/tos-useast2a-p-0037-euttp/d1dfbab565b84a92ad94eca69e455a4c_1694523739~tplv-tiktokx-origin.image?dr=9229&refresh_token..."
],
"url_prefix": null,
"width": 720
},
"has_watermark": true,
"height": 576,
"is_bytevc1": 0,
"is_callback": true,
"meta": "{\"LoudnessRange\":\"0.7\",\"LoudnessRangeEnd\":\"-9.5\",\"LoudnessRangeStart\":\"-10.2\",\"MaximumMomentaryLoudness\":\"-7.7\",\"MaximumShortTermLoudness\":\"-9.4\",\"Version\":\"...",
"misc_download_addrs": "{\"suffix_scene\":{\"uri\":\"v0f044gc0000ck062fbc77uc8kdoc7ig\",\"url_list\":[\"https://v45.tiktokcdn-eu.com/4f9aadaa474b036d50f519f6afd2bd4d/6854a8e2/video/tos/useas...",
"need_set_token": false,
"origin_cover": {
"height": 720,
"uri": "tos-useast2a-p-0037-euttp/8645744258524a9eb63d68fac73a3fd2_1694523738",
"url_list": [
"https://p16-sign-useast2a.tiktokcdn.com/tos-useast2a-p-0037-euttp/8645744258524a9eb63d68fac73a3fd2_1694523738~tplv-dmt-adapt-360p.heic?dr=1360&refresh_token=..."
],
"url_prefix": null,
"width": 720
},
"play_addr": {
"data_size": 1596498,
"file_cs": "c:0-15212-b6fb",
"file_hash": "865acc2a4a685aa6fe71256e1f7c8510",
"height": 576,
"uri": "v0f044gc0000ck062fbc77uc8kdoc7ig",
"url_key": "v0f044gc0000ck062fbc77uc8kdoc7ig_h264_540p_767178",
"url_list": [
"https://v45.tiktokcdn-eu.com/a99d33899bc03dd0c27ade23be118c55/6854a8e2/video/tos/useast2a/tos-useast2a-ve-0068-euttp/osjwrgDKl4DecPcABYeDQEn9EAARrtCIQibMPG/?..."
],
"url_prefix": null,
"width": 576
},
"...": "7 more fields"
},
"author": {
"accept_private_policy": false,
"account_labels": null,
"account_region": "",
"ad_cover_url": null,
"advance_feature_item_order": null,
"advanced_feature_info": null,
"apple_account": 0,
"authority_status": 0,
"avatar_168x168": {
"height": 720,
"uri": "tos-no1a-avt-0068c001-no/cf197741686b5d5513c17da87246c931",
"url_list": [
"https://p16-pu-no.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/cf197741686b5d5513c17da87246c931~tplv-tiktokx-cropcenter-q:168:168:q70.heic?dr=9604&idc=no1a&ps=8..."
],
"url_prefix": null,
"width": 720
},
"avatar_300x300": {
"height": 720,
"uri": "tos-no1a-avt-0068c001-no/cf197741686b5d5513c17da87246c931",
"url_list": [
"https://p16-pu-no.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/cf197741686b5d5513c17da87246c931~tplv-tiktokx-cropcenter-q:300:300:q70.heic?dr=9605&idc=no1a&ps=8..."
],
"url_prefix": null,
"width": 720
},
"avatar_larger": {
"height": 720,
"uri": "tos-no1a-avt-0068c001-no/cf197741686b5d5513c17da87246c931",
"url_list": [
"https://p16-pu-no.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/cf197741686b5d5513c17da87246c931~tplv-tiktokx-cropcenter-q:1080:1080:q70.heic?dr=9608&idc=no1a&ps..."
],
"url_prefix": null,
"width": 720
},
"avatar_medium": {
"height": 720,
"uri": "tos-no1a-avt-0068c001-no/cf197741686b5d5513c17da87246c931",
"url_list": [
"https://p16-pu-no.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/cf197741686b5d5513c17da87246c931~tplv-tiktokx-cropcenter-q:720:720:q70.heic?dr=9607&idc=no1a&ps=8..."
],
"url_prefix": null,
"width": 720
},
"avatar_thumb": {
"height": 720,
"uri": "tos-no1a-avt-0068c001-no/cf197741686b5d5513c17da87246c931",
"url_list": [
"https://p16-pu-no.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/cf197741686b5d5513c17da87246c931~tplv-tiktokx-cropcenter-q:100:100:q70.heic?dr=9606&idc=no1a&ps=8..."
],
"url_prefix": null,
"width": 720
},
"avatar_uri": "tos-no1a-avt-0068c001-no/cf197741686b5d5513c17da87246c931",
"aweme_count": 0,
"bind_phone": "",
"bold_fields": null,
"can_message_follow_status_list": [
2
],
"can_set_geofencing": null,
"cha_list": null,
"comment_filter_status": 0,
"comment_setting": 0,
"commerce_user_level": 0,
"cover_url": [],
"created_at": 0,
"...": "96 more fields"
},
"is_eligible_for_commission": true,
"is_paid_partnership": false,
"create_time_utc": "2025-09-03T18:37:38.000Z",
"url": "https://www.tiktok.com/@branttakes/video/7545933721589910798",
"shop_product_url": "https://www.tiktok.com/shop/pdp/1729494515984797858"
}
],
"next_cursor": 20
}GET /v1/tiktok/search_keyword
Search by Keyword
Searches for TikTok videos by keyword or phrase — the general video search across all of TikTok. Returns `search_item_list`, an array of objects each containing `aweme_info` with `aweme_id`, `desc` (caption), `statistics` (play_count, digg_count/likes, comment_count, share_count), `video` info, and `author` details. Paginate with `cursor`. TikTok may return duplicate results. Scrapes TikTok videos matching a keyword. Note: TikTok can return duplicate results for this search. Sorry about that — it looks like a TikTok-side thing, so we don't have control over it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
query required | query | string | Keyword to search for |
date_posted | query | string | Time Frame one of: yesterday, this-week, this-month, last-3-months, last-6-months, all-time |
sort_by | query | string | Sort by one of: relevance, most-liked, date-posted |
region | query | string | Note, this doesn't filter the tiktoks only in a specfic region, it puts the proxy there. Use it in case you want to scrape posts only available for some country. Use 2 letter country codes like US, GB, FR, etc |
trim | query | boolean | Set to true to get a trimmed response |
next_cursor | query | number | Cursor to get more videos. Get 'cursor' from previous response. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_keyword?query=example" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_keyword?query=example", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_keyword?query=example",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"search_item_list": [
{
"video_id": "7268287584244124971",
"desc": "Tìm 'musclesandnursing'",
"desc_language": "vi",
"region": "US",
"statistics": {
"video_id": "7268287584244124971",
"collect_count": 6978,
"comment_count": 187,
"like_count": 481608,
"download_count": 458,
"forward_count": 0,
"lose_comment_count": 0,
"lose_count": 0,
"view_count": 1282645,
"repost_count": 0,
"share_count": 2721,
"whatsapp_share_count": 56
},
"video": {
"cover_tsp": 0,
"ai_dynamic_cover": {
"uri": "tos-useast5-p-0068-tx/094a5ba1ff174727a9a483476a8d1642_1692280121",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/094a5ba1ff174727a9a483476a8d1642_1692280121~tplv-tiktokx-origin.image?dr=9229&refresh_token=f517ff94&..."
],
"url_prefix": null
},
"ai_dynamic_cover_bak": {
"uri": "tos-useast5-p-0068-tx/094a5ba1ff174727a9a483476a8d1642_1692280121",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/094a5ba1ff174727a9a483476a8d1642_1692280121~tplv-tiktokx-origin.image?dr=9229&refresh_token=f517ff94&..."
],
"url_prefix": null
},
"animated_cover": {
"uri": "tos-useast5-p-0068-tx/094a5ba1ff174727a9a483476a8d1642_1692280121",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/094a5ba1ff174727a9a483476a8d1642_1692280121~tplv-tiktokx-origin.image?dr=9229&refresh_token=f517ff94&..."
],
"url_prefix": null
},
"big_thumbs": [],
"bit_rate": [
{
"hdr_bit": "",
"hdr_type": "",
"bit_rate": 1225469,
"dub_infos": null,
"fid_profile_labels": "",
"fps": 30,
"gear_name": "normal_540_0",
"is_bytevc1": 0,
"play_addr": "{...}",
"quality_type": 20
}
],
"bit_rate_audio": [],
"cdn_url_expired": 0,
"cla_info": {
"caption_infos": [
"{...}"
],
"captions_type": 1,
"creator_edited_caption_id": 0,
"enable_auto_caption": 0,
"has_original_audio": 0,
"hide_original_caption": false,
"no_caption_reason": 0,
"original_language_info": {
"can_translate_realtime": false,
"can_translate_realtime_skip_translation_lang_check": true,
"first_subtitle_time": 0,
"is_burnin_caption": true,
"lang": "eng-US",
"language_code": "en",
"language_id": 2,
"original_caption_type": 5
},
"vertical_positions": null
},
"cover": {
"height": 720,
"uri": "tos-useast5-p-0068-tx/0f577ee28df74315b4a8627da155b294",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/0f577ee28df74315b4a8627da155b294~tplv-tiktokx-cropcenter:500:800.jpeg?biz_tag=musically_video.video_c..."
],
"url_prefix": null,
"width": 720
},
"did_profile_labels": "",
"download_addr": {
"data_size": 3577718,
"height": 720,
"uri": "v12025gd0000cjf2aabc77u3cqbmfgsg",
"url_list": [
"https://v45.tiktokcdn-eu.com/53531e0e8cb8cabe9f9fb43d31f0477a/68559dc0/video/tos/maliva/tos-maliva-ve-0068c799-us/osgGPDi7kD0SShpGAnBhusf3egUQSobVpCSz8y/?a=1..."
],
"url_prefix": null,
"width": 720
},
"download_no_watermark_addr": {
"data_size": 3503925,
"file_cs": "c:0-20264-cec0",
"file_hash": "2e54ea91b0d4db38c7e631f3e5d316a0",
"height": 1024,
"uri": "v12025gd0000cjf2aabc77u3cqbmfgsg",
"url_key": "v12025gd0000cjf2aabc77u3cqbmfgsg_h264_540p_1225469",
"url_list": [
"https://v45.tiktokcdn-eu.com/9376fcf5b7e4e4056ac2238e8a50a2d8/68559dc0/video/tos/maliva/tos-maliva-ve-0068c799-us/ooh8ViyMkQSGCrDGSB3eWuUDo7ngz8APpgbenS/?a=1..."
],
"url_prefix": null,
"width": 576
},
"duration": 22874,
"dynamic_cover": {
"height": 720,
"uri": "tos-useast5-p-0068-tx/67ce9300736f4166847161d8b805eb29_1692280121",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/67ce9300736f4166847161d8b805eb29_1692280121~tplv-tiktokx-origin.image?dr=9229&refresh_token=8a667f0e&..."
],
"url_prefix": null,
"width": 720
},
"has_watermark": true,
"height": 1024,
"is_bytevc1": 0,
"is_callback": true,
"need_set_token": false,
"origin_cover": {
"height": 720,
"uri": "tos-useast5-p-0068-tx/b077d60fb7304b5ca66c894b70eacd63_1692280121",
"url_list": [
"https://p19-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/b077d60fb7304b5ca66c894b70eacd63_1692280121~tplv-dmt-adapt-360p.heic?dr=1360&refresh_token=01618ed2&x..."
],
"url_prefix": null,
"width": 720
},
"play_addr": {
"data_size": 3503925,
"file_cs": "c:0-20264-cec0",
"file_hash": "2e54ea91b0d4db38c7e631f3e5d316a0",
"height": 1024,
"uri": "v12025gd0000cjf2aabc77u3cqbmfgsg",
"url_key": "v12025gd0000cjf2aabc77u3cqbmfgsg_h264_540p_1225469",
"url_list": [
"https://v45.tiktokcdn-eu.com/9376fcf5b7e4e4056ac2238e8a50a2d8/68559dc0/video/tos/maliva/tos-maliva-ve-0068c799-us/ooh8ViyMkQSGCrDGSB3eWuUDo7ngz8APpgbenS/?a=1..."
],
"url_prefix": null,
"width": 576
},
"ratio": "540p",
"source_hdr_type": 0,
"tags": null,
"...": "2 more fields"
},
"author": {
"accept_private_policy": false,
"account_labels": null,
"ad_cover_url": null,
"advance_feature_item_order": null,
"advanced_feature_info": null,
"authority_status": 0,
"avatar_168x168": {
"height": 720,
"uri": "tos-maliva-avt-0068/ff3b7c30f1dbed9da420371d20c57777",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/ff3b7c30f1dbed9da420371d20c57777~tplv-tiktokx-cropcenter-q:168:168:q70.heic?dr=9604&idc=no1a&ps=87d6e48a..."
],
"url_prefix": null,
"width": 720
},
"avatar_300x300": {
"height": 720,
"uri": "tos-maliva-avt-0068/ff3b7c30f1dbed9da420371d20c57777",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/ff3b7c30f1dbed9da420371d20c57777~tplv-tiktokx-cropcenter-q:300:300:q70.heic?dr=9605&idc=no1a&ps=87d6e48a..."
],
"url_prefix": null,
"width": 720
},
"avatar_larger": {
"height": 720,
"uri": "tos-maliva-avt-0068/ff3b7c30f1dbed9da420371d20c57777",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/ff3b7c30f1dbed9da420371d20c57777~tplv-tiktokx-cropcenter-q:1080:1080:q70.heic?dr=9608&idc=no1a&ps=87d6e4..."
],
"url_prefix": null,
"width": 720
},
"avatar_medium": {
"height": 720,
"uri": "tos-maliva-avt-0068/ff3b7c30f1dbed9da420371d20c57777",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/ff3b7c30f1dbed9da420371d20c57777~tplv-tiktokx-cropcenter-q:720:720:q70.heic?dr=9607&idc=no1a&ps=87d6e48a..."
],
"url_prefix": null,
"width": 720
},
"avatar_thumb": {
"height": 720,
"uri": "tos-maliva-avt-0068/ff3b7c30f1dbed9da420371d20c57777",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/ff3b7c30f1dbed9da420371d20c57777~tplv-tiktokx-cropcenter-q:100:100:q70.heic?biz_tag=musically_video.vide..."
],
"url_prefix": null,
"width": 720
},
"avatar_uri": "tos-maliva-avt-0068/ff3b7c30f1dbed9da420371d20c57777",
"aweme_count": 0,
"bold_fields": null,
"can_message_follow_status_list": null,
"can_set_geofencing": null,
"cha_list": null,
"comment_filter_status": 0,
"comment_setting": 0,
"commerce_user_level": 0,
"cover_url": null,
"custom_verify": "",
"cv_level": "",
"download_prompt_ts": 0,
"enabled_filter_all_comments": false,
"...": "69 more fields"
},
"created_at": 1692280120,
"is_ad": false,
"is_eligible_for_commission": false,
"create_time_utc": "2023-08-17T13:48:40.000Z",
"url": "https://www.tiktok.com/@thatgreygentlemanitdxz/video/7268287584244124971"
}
],
"next_cursor": 30
}GET /v1/tiktok/search_suggestions
Search Suggestions
Gets the autocomplete suggestions TikTok shows while someone is typing in search. Returns `suggestions`, a clean array of suggested search terms and the most useful metadata for each suggestion.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
query required | query | string | Search query to get suggestions for |
region | query | string | Region code for suggestions |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_suggestions?query=dogs" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_suggestions?query=dogs", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_suggestions?query=dogs",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"suggestions": [
{
"text": "dogs cute",
"position": 0,
"language": "en",
"score": 0.011535803
}
]
}GET /v1/tiktok/search_top
Top Search
Searches TikTok's 'Top' results by query — returns both videos and photo carousels, unlike keyword search which only returns videos. Returns `items`, an array of objects each with `id`, `desc` (caption), `content_type` (video or photo carousel), `statistics` (play_count, digg_count/likes, comment_count, share_count), `video` info, and `images` for carousels. Paginate with `cursor`. TikTok may return duplicate results. There is a 'Top' Search in TikTok and this is that. You can get Photo Carousels and Videos. Whereas with just the Keyword Search, you can only get Videos. Note: TikTok can return duplicate results for this search. Sorry about that — it looks like a TikTok-side thing, so we don't have control over it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
query required | query | string | Keyword to search for |
publish_time | query | string | Time Frame TikTok was posted one of: yesterday, this-week, this-month, last-3-months, last-6-months, all-time |
sort_by | query | string | Sort by one of: relevance, most-liked, date-posted |
region | query | string | Note, this doesn't filter the tiktoks only in a specfic region, it puts the proxy there. Use it in case you want to scrape posts only available for some country. Use 2 letter country codes like US, GB, FR, etc |
next_cursor | query | number | Cursor to get more videos. Get 'cursor' from previous response. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_top?query=funny" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_top?query=funny", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_top?query=funny",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"items": [
{
"id": "7620673421353012494",
"desc": "#fyp #dog #funny #humor #blowthisup? ",
"content_type": "multi_photo",
"created_at": "2026-03-24T04:25:45.000Z",
"desc_language": "un",
"region": "US",
"is_top": 0,
"statistics": {
"video_id": "7620673421353012494",
"collect_count": 75335,
"comment_count": 2555,
"like_count": 570679,
"download_count": 1026,
"forward_count": 0,
"lose_comment_count": 0,
"lose_count": 0,
"view_count": 2674660,
"repost_count": 0,
"share_count": 146329,
"whatsapp_share_count": 430
},
"video": {
"ai_dynamic_cover": {
"data_size": 0,
"height": 814,
"uri": "tos-useast5-i-photomode-tx/d986e70321f24c6f84a0ceca0aa3487f",
"url_list": [
"https://p16-common-sign.tiktokcdn-us.com/tos-useast5-i-photomode-tx/d986e70321f24c6f84a0ceca0aa3487f~tplv-photomode-image-cover:640:0:q72.heic?dr=12229&refre..."
],
"url_prefix": null,
"width": 640
},
"ai_dynamic_cover_bak": {
"data_size": 0,
"height": 814,
"uri": "tos-useast5-i-photomode-tx/d986e70321f24c6f84a0ceca0aa3487f",
"url_list": [
"https://p16-common-sign.tiktokcdn-us.com/tos-useast5-i-photomode-tx/d986e70321f24c6f84a0ceca0aa3487f~tplv-photomode-image-cover:640:0:q72.heic?dr=12229&refre..."
],
"url_prefix": null,
"width": 640
},
"big_thumbs": [],
"bit_rate": [],
"bit_rate_audio": [],
"cdn_url_expired": 0,
"cla_info": {
"caption_infos": null,
"captions_type": 0,
"creator_edited_caption_id": 0,
"enable_auto_caption": 0,
"has_original_audio": 0,
"hide_original_caption": false,
"is_author_dubbing_qualified": false,
"no_caption_reason": 3,
"no_caption_reason_v2": 3,
"vertical_positions": null
},
"cover": {
"data_size": 0,
"height": 814,
"uri": "tos-useast5-i-photomode-tx/d986e70321f24c6f84a0ceca0aa3487f",
"url_list": [
"https://p16-common-sign.tiktokcdn-us.com/tos-useast5-i-photomode-tx/d986e70321f24c6f84a0ceca0aa3487f~tplv-photomode-image-cover:640:0:q72.heic?biz_tag=musica..."
],
"url_prefix": null,
"width": 640
},
"download_addr": {
"height": 720,
"uri": "",
"url_list": [],
"url_prefix": null,
"width": 720
},
"duration": 0,
"dynamic_cover": {
"data_size": 0,
"height": 814,
"uri": "tos-useast5-i-photomode-tx/d986e70321f24c6f84a0ceca0aa3487f",
"url_list": [
"https://p16-common-sign.tiktokcdn-us.com/tos-useast5-i-photomode-tx/d986e70321f24c6f84a0ceca0aa3487f~tplv-photomode-image-cover:640:0:q72.heic?dr=12229&refre..."
],
"url_prefix": null,
"width": 640
},
"has_watermark": false,
"height": 0,
"is_bytevc1": 0,
"is_callback": false,
"meta": "{\"Loudness\":\"-7.8\",\"LoudnessRange\":\"2\",\"LoudnessRangeEnd\":\"-6.9\",\"LoudnessRangeStart\":\"-8.9\",\"MaximumMomentaryLoudness\":\"-5.8\",\"MaximumShortTermLoudness\":\"-6...",
"need_set_token": false,
"origin_cover": {
"data_size": 0,
"height": 814,
"uri": "tos-useast5-i-photomode-tx/d986e70321f24c6f84a0ceca0aa3487f",
"url_list": [
"https://p16-common-sign.tiktokcdn-us.com/tos-useast5-i-photomode-tx/d986e70321f24c6f84a0ceca0aa3487f~tplv-photomode-image-cover:640:0:q72.heic?dr=12229&refre..."
],
"url_prefix": null,
"width": 640
},
"play_addr": {
"height": 720,
"uri": "https://v16m.tiktokcdn-us.com/c7621dcf09b9341fd297a5fde52650eb/69ea3264/video/tos/useast5/tos-useast5-ve-27dcd7c799-tx/oIFNlEJniBUCfwZeDIIhwCIXUBLDbrFQNJMOCy...",
"url_key": "7110642235061947141",
"url_list": [
"https://v16m.tiktokcdn-us.com/c7621dcf09b9341fd297a5fde52650eb/69ea3264/video/tos/useast5/tos-useast5-ve-27dcd7c799-tx/oIFNlEJniBUCfwZeDIIhwCIXUBLDbrFQNJMOCy..."
],
"url_prefix": null,
"width": 720
},
"ratio": "720p",
"tags": null,
"width": 0
},
"author": {
"accept_private_policy": false,
"account_labels": null,
"ad_cover_url": null,
"advance_feature_item_order": null,
"advanced_feature_info": null,
"authority_status": 0,
"avatar_168x168": {
"height": 720,
"uri": "tos-useast5-avt-0068-tx/09640951ebb9ad9f6ae1ae283d7b4708",
"url_list": [
"https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/09640951ebb9ad9f6ae1ae283d7b4708~tplv-tiktokx-cropcenter:168:168.webp?dr=9638&refresh_token=..."
],
"url_prefix": null,
"width": 720
},
"avatar_300x300": {
"height": 720,
"uri": "tos-useast5-avt-0068-tx/09640951ebb9ad9f6ae1ae283d7b4708",
"url_list": [
"https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/09640951ebb9ad9f6ae1ae283d7b4708~tplv-tiktokx-cropcenter:300:300.webp?dr=9638&refresh_token=..."
],
"url_prefix": null,
"width": 720
},
"avatar_larger": {
"height": 720,
"uri": "tos-useast5-avt-0068-tx/09640951ebb9ad9f6ae1ae283d7b4708",
"url_list": [
"https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/09640951ebb9ad9f6ae1ae283d7b4708~tplv-tiktokx-cropcenter:1080:1080.webp?dr=9640&refresh_toke..."
],
"url_prefix": null,
"width": 720
},
"avatar_medium": {
"height": 720,
"uri": "tos-useast5-avt-0068-tx/09640951ebb9ad9f6ae1ae283d7b4708",
"url_list": [
"https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/09640951ebb9ad9f6ae1ae283d7b4708~tplv-tiktokx-cropcenter:720:720.webp?dr=9640&refresh_token=..."
],
"url_prefix": null,
"width": 720
},
"avatar_thumb": {
"height": 720,
"uri": "tos-useast5-avt-0068-tx/09640951ebb9ad9f6ae1ae283d7b4708",
"url_list": [
"https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/09640951ebb9ad9f6ae1ae283d7b4708~tplv-tiktokx-cropcenter:100:100.webp?biz_tag=musically_gene..."
],
"url_prefix": null,
"width": 720
},
"avatar_uri": "tos-useast5-avt-0068-tx/09640951ebb9ad9f6ae1ae283d7b4708",
"aweme_count": 0,
"bold_fields": null,
"can_message_follow_status_list": [
2
],
"can_set_geofencing": null,
"cha_list": null,
"comment_filter_status": 0,
"comment_setting": 0,
"commerce_user_level": 0,
"cover_url": null,
"custom_verify": "",
"cv_level": "",
"download_prompt_ts": 0,
"enabled_filter_all_comments": false,
"...": "71 more fields"
},
"images": [
"https://p16-common-sign.tiktokcdn-us.com/tos-useast5-i-photomode-tx/d986e70321f24c6f84a0ceca0aa3487f~tplv-photomode-image-v1:q70.webp?dr=8793&refresh_token=4..."
],
"music": {
"author": "𝐙",
"duration": 16,
"id": 7110642235061947000,
"title": "original sound - al7a.z",
"play_url": "https://v16m.tiktokcdn-us.com/c7621dcf09b9341fd297a5fde52650eb/69ea3264/video/tos/useast5/tos-useast5-ve-27dcd7c799-tx/oIFNlEJniBUCfwZeDIIhwCIXUBLDbrFQNJMOCy...",
"matched_song": {
"author": "Soulja Boy Tell'em",
"id": "6732704090041616385",
"title": "Crank That (Soulja Boy)"
}
},
"is_eligible_for_commission": false,
"is_paid_partnership": false,
"is_ad": false,
"url": "https://www.tiktok.com/@idk_kid712/photo/7620673421353012494",
"shop_product_url": null
}
],
"next_cursor": 30
}GET /v1/tiktok/search_users
Search Users
Searches for TikTok users by keyword or name — useful for finding creators or accounts matching a query. Returns `users`, an array of objects each containing `user_info` (nickname, unique_id, signature/bio, follower_count, following_count, avatar) and associated `items`. Paginate with `cursor` from the previous response.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
query required | query | string | Search query for users |
trim | query | boolean | Set to true to get a trimmed response |
next_cursor | query | number | Cursor to get more users. Get 'cursor' from previous response. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_users?query=example" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_users?query=example", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/search_users?query=example",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"users": [
{
"follower_count": 163953,
"following_count": 63,
"display_name": "ADRIAN",
"secure_user_id": "MS4wLjABAAAAcT5kdL_w3D2p3a3DkULhrVE6Ir17Ua1M9GZK4cnvnKxbJg3qy0xDdbaFeY260Qzz",
"uid": "6757029651601835013",
"username": "adrianzyno",
"avatar_medium": {
"height": 720,
"uri": "tos-maliva-avt-0068/60a12c00b42288dd3503cf3025165093",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/60a12c00b42288dd3503cf3025165093~tplv-tiktokx-cropcenter-q:720:720:q70.heic?dr=9607&idc=no1a&ps=87d6e48a..."
],
"url_prefix": null,
"width": 720
}
}
],
"next_cursor": 30
}GET /v1/tiktok/song
Get Song Details
Fetches detailed metadata for a specific TikTok sound or song by its clipId. Returns `music_info` with `title`, `author`, `album`, `duration`, `user_count` (number of videos using this sound), `play_url`, cover art, and artist details. Use the `clipId` from a sound URL or from the popular songs endpoint. Scraping details from the song detail
Parameters
| Name | In | Type | Description |
|---|---|---|---|
clip_id required | query | string | This is a little confusing because this isn't songId like you'd think. It is the clipId. I guess because you can clip different portions of a song 🤷♂️ |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/song?clip_id=7439295283975702544" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/song?clip_id=7439295283975702544", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/song?clip_id=7439295283975702544",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"music_info": {
"album": "Different",
"allow_offline_music_to_detail_page": false,
"artists": [
{
"avatar": {
"uri": "tos-maliva-avt-0068/e7d4971260ccf9834d92fe6a3c63e848",
"url_list": [
"https://p16-sign-va.tiktokcdn.com/tos-maliva-avt-0068/e7d4971260ccf9834d92fe6a3c63e848~c5_168x168.webp?lk3s=544a444f&nonce=23330&refresh_token=9e7d26286320fa..."
],
"url_prefix": null
},
"enter_type": 2,
"follow_status": 0,
"follower_status": 0,
"handle": "micahtylertok",
"is_block": false,
"is_blocked": false,
"is_private_account": false,
"is_verified": false,
"is_visible": false,
"nick_name": "Micah Tyler",
"secure_user_id": "MS4wLjABAAAAEdwuYUJfZcFMddE2j_F7VdBPJ-mFgfmhvS_OEZc_CwP9mgiFLDBlqsJOgEaAaHR5",
"status": 1,
"uid": "7086245766293226538"
}
],
"audition_duration": 60,
"author": "Micah Tyler",
"author_deleted": false,
"author_position": null,
"avatar_medium": {
"height": 720,
"uri": "tos-maliva-avt-0068/e7d4971260ccf9834d92fe6a3c63e848",
"url_list": [
"https://p16-sign-va.tiktokcdn.com/tos-maliva-avt-0068/e7d4971260ccf9834d92fe6a3c63e848~c5_720x720.webp?lk3s=544a444f&nonce=64063&refresh_token=84290303432aef..."
],
"url_prefix": null,
"width": 720
},
"avatar_thumb": {
"height": 720,
"uri": "tos-maliva-avt-0068/e7d4971260ccf9834d92fe6a3c63e848",
"url_list": [
"https://p16-sign-va.tiktokcdn.com/tos-maliva-avt-0068/e7d4971260ccf9834d92fe6a3c63e848~c5_100x100.webp?lk3s=544a444f&nonce=19785&refresh_token=546fc5e384f693..."
],
"url_prefix": null,
"width": 720
},
"binded_challenge_id": 0,
"can_be_stitched": true,
"can_not_reuse": false,
"collect_stat": 0,
"commercial_right_type": 3,
"cover_large": {
"height": 720,
"uri": "tos-alisg-v-2774/okeuMAAZnBBv88JZBjFEgjDOtWCZQ4AEEwfoQb",
"url_list": [
"https://p16-sg.tiktokcdn.com/aweme/720x720/tos-alisg-v-2774/okeuMAAZnBBv88JZBjFEgjDOtWCZQ4AEEwfoQb.jpeg"
],
"url_prefix": null,
"width": 720
},
"cover_medium": {
"height": 720,
"uri": "tos-alisg-v-2774/okeuMAAZnBBv88JZBjFEgjDOtWCZQ4AEEwfoQb",
"url_list": [
"https://p16-sg.tiktokcdn.com/aweme/200x200/tos-alisg-v-2774/okeuMAAZnBBv88JZBjFEgjDOtWCZQ4AEEwfoQb.jpeg"
],
"url_prefix": null,
"width": 720
},
"cover_thumb": {
"height": 720,
"uri": "tos-alisg-v-2774/okeuMAAZnBBv88JZBjFEgjDOtWCZQ4AEEwfoQb",
"url_list": [
"https://p16-sg.tiktokcdn.com/aweme/100x100/tos-alisg-v-2774/okeuMAAZnBBv88JZBjFEgjDOtWCZQ4AEEwfoQb.jpeg"
],
"url_prefix": null,
"width": 720
},
"created_at": 1563960621,
"dmv_auto_show": false,
"duration": 60,
"duration_high_precision": {
"audition_duration_precision": 60,
"duration_precision": 60,
"shoot_duration_precision": 60,
"video_duration_precision": 60
},
"external_song_info": [],
"extra": "{\"aed_music_dur\":35.15,\"amplitude_peak\":0.90573657,\"apple_song_id\":1294619219,\"beats\":{\"audio_effect_onset\":\"https://sf16-ies-music-sg.tiktokcdn.com/obj/tos-...",
"full_song": {
"full_song_duration": 195,
"full_song_duration_precision": 195.12,
"full_song_id": "6739983931317159937",
"full_song_play_url": {
"uri": "tos-alisg-ve-2774/ok4uNQDaztAMCS5ZA6iiwxBnWrBsBXAMIVfyoN",
"url_list": [
"https://sf77-ies-music-sg.tiktokcdn.com/obj/tos-alisg-ve-2774/ok4uNQDaztAMCS5ZA6iiwxBnWrBsBXAMIVfyoN"
],
"url_prefix": null
},
"full_song_shoot_duration": 60,
"full_song_shoot_duration_precision": 60
},
"has_commerce_right": false,
"...": "39 more fields"
},
"rec_list": [],
"similar_music": [],
"similar_music_ids": null,
"status_code": 0,
"status_msg": ""
}GET /v1/tiktok/song_videos
TikToks using Song
Fetches TikTok videos that use a specific sound or song, identified by its clipId. Returns `aweme_list`, an array of video objects each with `aweme_id`, `desc` (caption), `statistics` (play_count, digg_count/likes, comment_count, share_count), `video` info, and `author` details. Paginate with `cursor` from the previous response.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
clip_id | query | string | This is clipId. Can be found on a url like so: https://www.tiktok.com/music/That%27s-Who-I-Praise-7370375686554782506, where 7370375686554782506 is the clipId |
next_cursor | query | number | The cursor to get the next page of results. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/song_videos" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/song_videos", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/song_videos",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"videos": [
{
"added_sound_music_info": {
"album": "GNX",
"allow_offline_music_to_detail_page": false,
"artists": [],
"audition_duration": 59,
"author": "Kendrick Lamar & SZA",
"author_deleted": false,
"author_position": null,
"binded_challenge_id": 0,
"can_be_stitched": true,
"can_not_reuse": false,
"collect_stat": 0,
"commercial_right_type": 3,
"cover_large": {
"height": 720,
"uri": "tos-alisg-v-2774/oAQAfe3r0KfAKAMDJpQVILIMTeGSVPAmreQznA",
"url_list": [
"https://p16-sg.tiktokcdn.com/aweme/720x720/tos-alisg-v-2774/oAQAfe3r0KfAKAMDJpQVILIMTeGSVPAmreQznA.jpeg"
],
"url_prefix": null,
"width": 720
},
"cover_medium": {
"height": 720,
"uri": "tos-alisg-v-2774/oAQAfe3r0KfAKAMDJpQVILIMTeGSVPAmreQznA",
"url_list": [
"https://p16-sg.tiktokcdn.com/aweme/200x200/tos-alisg-v-2774/oAQAfe3r0KfAKAMDJpQVILIMTeGSVPAmreQznA.jpeg"
],
"url_prefix": null,
"width": 720
},
"cover_thumb": {
"height": 720,
"uri": "tos-alisg-v-2774/oAQAfe3r0KfAKAMDJpQVILIMTeGSVPAmreQznA",
"url_list": [
"https://p16-sg.tiktokcdn.com/aweme/100x100/tos-alisg-v-2774/oAQAfe3r0KfAKAMDJpQVILIMTeGSVPAmreQznA.jpeg"
],
"url_prefix": null,
"width": 720
},
"created_at": 1732317312,
"dmv_auto_show": false,
"duration": 59,
"duration_high_precision": {
"audition_duration_precision": 59.037,
"duration_precision": 59.037,
"shoot_duration_precision": 59.037,
"video_duration_precision": 60
},
"external_song_info": [],
"extra": "{\"amplitude_peak\":0.9612427,\"apple_song_id\":1781316886,\"beats\":{\"audio_effect_onset\":\"https://sf77-ies-music-sg.tiktokcdn.com/obj/tos-alisg-v-2774/oc3znOgNAB...",
"has_commerce_right": false,
"id": 7439295283975703000,
"id_str": "7439295283975702544",
"is_audio_url_with_cookie": false,
"...": "39 more fields"
},
"aigc_info": {
"aigc_label_type": 0,
"created_by_ai": false
},
"allow_gift": true,
"anchors": [
{
"actions": [],
"anchor_strong": null,
"caption": "",
"component_key": "anchor_capcut",
"description": "CapCut · Video Editor",
"general_type": 1,
"icon": {
"height": 720,
"uri": "tiktok-obj/cc_anchor_logo_230222.png",
"url_list": [
"https://p77-sg.tiktokcdn.com/tiktok-obj/cc_anchor_logo_230222.png~tplv-tiktokx-origin.image?biz_tag=anchor.capcut&dr=10423&idc=no1a&nonce=10587&ps=933b5bde&r..."
],
"url_prefix": null,
"width": 720
},
"id": "0",
"keyword": "CapCut · 2024 in 43 photos",
"log_extra": "{\"anchor_id\":0,\"anchor_name\":\"CapCut · 2024 in 43 photos\",\"anchor_name_type\":\"template_1\",\"anchor_title_detail\":\"None\",\"anchor_type\":\"TT_CAPCUT\",\"capability_...",
"schema": "aweme://lynxview/?bundle=landing%2Ftemplate.js&channel=tiktok_capcut_anchor_landing_page&container_bg_color=000000&download_optimization=1&dynamic=3&enable_p...",
"thumbnail": {
"height": 64,
"uri": "tiktok-obj/64x_Capcut3x.png",
"url_list": [
"https://p77-sg.tiktokcdn.com/tiktok-obj/64x_Capcut3x.png~tplv-tiktokx-origin.image?dr=10423&nonce=77923&refresh_token=77b96e44e22e72876d95216d492cac0d&idc=no..."
],
"url_prefix": null,
"width": 64
},
"type": 54
}
],
"anchors_extras": "",
"animated_image_info": {
"effect": 0,
"type": 0
},
"author": {
"ad_cover_url": null,
"authority_status": 0,
"avatar_168x168": {
"height": 720,
"uri": "tos-no1a-avt-0068c001-no/63a0c1998edd418ab288993da2afe4a5",
"url_list": [
"https://p16-pu-no.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/63a0c1998edd418ab288993da2afe4a5~tplv-tiktokx-cropcenter-q:168:168:q70.heic?dr=9604&idc=no1a&nonc..."
],
"url_prefix": null,
"width": 720
},
"avatar_300x300": {
"height": 720,
"uri": "tos-no1a-avt-0068c001-no/63a0c1998edd418ab288993da2afe4a5",
"url_list": [
"https://p16-pu-no.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/63a0c1998edd418ab288993da2afe4a5~tplv-tiktokx-cropcenter-q:300:300:q70.heic?dr=9605&idc=no1a&nonc..."
],
"url_prefix": null,
"width": 720
},
"avatar_larger": {
"height": 720,
"uri": "tos-no1a-avt-0068c001-no/63a0c1998edd418ab288993da2afe4a5",
"url_list": [
"https://p16-pu-no.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/63a0c1998edd418ab288993da2afe4a5~tplv-tiktokx-cropcenter-q:1080:1080:q70.heic?dr=9608&idc=no1a&no..."
],
"url_prefix": null,
"width": 720
},
"avatar_medium": {
"height": 720,
"uri": "tos-no1a-avt-0068c001-no/63a0c1998edd418ab288993da2afe4a5",
"url_list": [
"https://p16-pu-no.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/63a0c1998edd418ab288993da2afe4a5~tplv-tiktokx-cropcenter-q:720:720:q70.heic?dr=9607&idc=no1a&nonc..."
],
"url_prefix": null,
"width": 720
},
"avatar_thumb": {
"height": 720,
"uri": "tos-no1a-avt-0068c001-no/63a0c1998edd418ab288993da2afe4a5",
"url_list": [
"https://p16-pu-no.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/63a0c1998edd418ab288993da2afe4a5~tplv-tiktokx-cropcenter-q:100:100:q70.heic?dr=9606&idc=no1a&nonc..."
],
"url_prefix": null,
"width": 720
},
"cha_list": null,
"comment_filter_status": 1,
"comment_setting": 0,
"commerce_user_level": 0,
"cover_url": [],
"custom_verify": "",
"download_setting": 3,
"duet_setting": 0,
"enabled_filter_all_comments": false,
"enterprise_verify_reason": "",
"follow_status": 0,
"follower_status": 0,
"followers_detail": null,
"friends_status": 0,
"is_ad_fake": false,
"is_block": false,
"is_discipline_member": false,
"is_star": false,
"...": "19 more fields"
},
"author_user_id": 7431412724132922000,
"aweme_acl": {
"download_general": {
"code": 1,
"extra": "101",
"mute": false,
"show_type": 0,
"transcode": 1
},
"download_mask_panel": {
"code": 1,
"extra": "101",
"mute": false,
"show_type": 0,
"transcode": 1
},
"platform_list": null,
"press_action_list": null,
"share_action_list": null,
"share_general": {
"code": 1,
"extra": "101",
"mute": false,
"show_type": 1,
"toast_msg": "This action isn’t allowed for this post",
"transcode": 1
},
"share_list_status": 0
},
"video_id": "7452069943757114646",
"aweme_type": 0,
"banners": null,
"behind_the_song_music_ids": null,
"behind_the_song_video_music_ids": null,
"bodydance_score": 0,
"branded_content_accounts": null,
"cc_template_info": {
"author_name": "",
"clip_count": 0,
"desc": "",
"duration_milliseconds": 0,
"match_type": "top_item",
"music_copyright": true,
"onelink": "https://capcut-yt.onelink.me/W3Oy/mpy6xee2",
"related_music_id": "",
"schema_extra": "{\"experiment_id\":\"72683638\"}",
"style_type": 1,
"template_id": "7439087471498956085"
},
"cha_list": [
{
"author": {
"account_labels": null,
"ad_cover_url": null,
"advance_feature_item_order": null,
"advanced_feature_info": null,
"bold_fields": null,
"can_message_follow_status_list": null,
"can_set_geofencing": null,
"cha_list": null,
"cover_url": null,
"events": null,
"followers_detail": null,
"geofencing": null,
"homepage_bottom_toast": null,
"item_list": null,
"mutual_relation_avatars": null,
"need_points": null,
"platform_sync_info": null,
"relative_users": null,
"search_highlight": null,
"shield_edit_field_info": null,
"type_label": null,
"user_profile_guide": null,
"user_tags": null,
"white_cover_url": null
},
"banner_list": null,
"cha_attrs": null,
"cha_name": "memestiktok",
"cid": "1615484249350165",
"collect_stat": 0,
"connect_music": [],
"desc": "¡Llegaste al lugar indicado para encontrar memazos! \n\nCada viernes podrás encontrar a los 9 #MEMESTikTok oficiales de la semana.",
"extra_attr": {
"is_live": false
},
"hashtag_profile": "musically-maliva-obj/422f2c33d377dddff0f11cb5a276196f",
"is_challenge": 0,
"is_commerce": false,
"is_pgcshow": false,
"schema": "aweme://aweme/challenge/detail?cid=1615484249350165",
"search_highlight": null,
"share_info": {
"bool_persist": 0,
"now_invitation_card_image_urls": null,
"share_desc": "Check out #memestiktok on TikTok!",
"share_desc_info": "Check out #memestiktok on TikTok!",
"share_quote": "",
"share_signature_desc": "",
"share_signature_url": "",
"share_title": "It is a becoming a big trend on TikTok now! Click here: memestiktok",
"share_title_myself": "",
"share_title_other": "",
"share_url": "https://www.tiktok.com/tag/memestiktok?_r=1&name=memestiktok&u_code=ed95h8gmi905eb&_d=ed95ee344m3h4g&share_challenge_id=1615484249350165&sharer_language=en&s..."
},
"show_items": null,
"sub_type": 0,
"type": 1,
"use_count": 0,
"user_count": 0,
"view_count": 0
}
],
"challenge_position": null,
"cmt_swt": false,
"collect_stat": 0,
"comment_config": {
"comment_panel_show_tab_config": null,
"emoji_recommend_list": null,
"long_press_recommend_list": null,
"preload": {
"preds": "{\"item_post_comment\":0.00011830986683832393}"
},
"quick_comment": {
"enabled": true
},
"quick_comment_emoji_recommend_list": null
},
"commerce_config_data": null,
"commerce_info": {
"adv_promotable": true,
"auction_ad_invited": false,
"branded_content_type": 0,
"with_comment_filter_words": false
},
"content_desc": "",
"...": "103 more fields"
}
],
"can_pin_video": false,
"next_cursor": 12,
"extra": {
"fatal_item_ids": [],
"logid": "202502180605264FFF1CE5D6043F4CF934",
"now": 1739829927000
},
"has_more": 1,
"log_pb": {
"impr_id": "202502180605264FFF1CE5D6043F4CF934"
},
"need_lazy_loading": false,
"status_code": 0,
"status_msg": ""
}GET /v1/tiktok/user_audience
User's Audience Demographics
Retrieves audience demographic data for a TikTok user, showing where their followers are located by country. Returns `audienceLocations`, an array of objects each containing `country`, `countryCode`, `count`, and `percentage`. Costs 26 credits per request. Get the audience demographics of a TikTok user. Right now you can only get the audience countries. 🚨 Costs 26 credits per request.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
handle required | query | string | TikTok handle |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_audience?handle=shakira" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_audience?handle=shakira", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_audience?handle=shakira",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"audience_locations": [
{
"country": "Mexico",
"country_code": "MX",
"count": 83,
"percentage": "15.96%"
}
]
}GET /v1/tiktok/user_followers
Followers
Retrieves the follower list of a TikTok account by handle or user_id — useful for seeing who follows a creator or getting subscriber data. Returns `followers`, an array of user objects each with `nickname`, `unique_id`, `uid`, `follower_count`, `following_count`, and avatar URLs; also returns `total` follower count. Paginate with `min_time` from the previous response.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
handle | query | string | TikTok handle |
user_id | query | string | User id. Use this for faster response times. |
trim | query | boolean | Set to true to get a trimmed response |
min_time | query | number | Used to paginate. Get 'min_time' from previous response. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_followers" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_followers", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_followers",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"followers": [
{
"created_at": 1585489718,
"follower_count": 319,
"following_count": 1375,
"language": "en",
"display_name": "Kelsey Levens Haskin",
"region": "US",
"secure_user_id": "MS4wLjABAAAAG-DXjA9PmiU6daPQzr9ux9Xr8EQ_SU_STIlWxqs2huXTZR94IdbY2kpoGhiSzAxn",
"bio": "",
"uid": "6802639142851609605",
"username": "klh723",
"avatar_medium": {
"height": 720,
"uri": "tos-maliva-avt-0068/7324817662562402310",
"url_list": [
"https://p16-sign-va.tiktokcdn.com/tos-maliva-avt-0068/7324817662562402310~tplv-tiktokx-cropcenter-q:720:720:q70.heic?dr=9607&idc=no1a&ps=87d6e48a&refresh_tok..."
],
"url_prefix": null,
"width": 720
}
}
],
"min_time": 1750289478,
"total": 4424847
}GET /v1/tiktok/user_following
Following
Retrieves the following list — accounts that a TikTok user follows — by their handle. Returns `followings`, an array of user objects each with `nickname`, `unique_id`, `uid`, `follower_count`, `following_count`, `signature`, and avatar URLs; also returns `total` count. Paginate with `min_time` from the previous response.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
handle required | query | string | TikTok handle |
trim | query | boolean | Set to true to get a trimmed response |
min_time | query | number | Used to paginate. Get 'min_time' from previous response. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_following?handle=stoolpresidente" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_following?handle=stoolpresidente", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_following?handle=stoolpresidente",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"followings": [
{
"created_at": 1748628014,
"follower_count": 2175,
"following_count": 10,
"language": "en",
"display_name": "Barstool Beach House",
"region": "US",
"secure_user_id": "MS4wLjABAAAAbQK_EH0QRu1Wqk9mXsWvWW2dGpK1_LSiVdJx0oXtFCE_oOX8RIeGFfaYJQthUoaH",
"bio": "Coming in August",
"uid": "7510299285881160735",
"username": "barstoolbeachhouse",
"avatar_medium": {
"height": 720,
"uri": "tos-maliva-avt-0068/14f24ed9e7e1b1fc6764375b799c6ed7",
"url_list": [
"https://p16-sign-va.tiktokcdn.com/tos-maliva-avt-0068/14f24ed9e7e1b1fc6764375b799c6ed7~tplv-tiktokx-cropcenter-q:720:720:q70.heic?dr=9607&idc=no1a&ps=87d6e48..."
],
"url_prefix": null,
"width": 720
}
}
],
"min_time": 1734010829,
"total": 81
}GET /v1/tiktok/user_live
Live
Checks a TikTok user's live status and retrieves available live room details. First checks the account with the same profile lookup used by /v1/tiktok/profile; this does not add a second API credit charge. Active streams return HTTP 200 with is_live: true; an existing account that is offline or has no current stream returns HTTP 200 with is_live: false. Both successful states cost 1 credit, including offline/no-stream accounts. Unavailable accounts: HTTP 404 when TikTok confirms the account is not found or unavailable. Audience controls: HTTP 403 when TikTok confirms the creator enabled them, with TikTok's login warning. Retrieval failures: HTTP 500 when the live check fails. Errors cost 0 credits (: 0); never infer offline from an error. A failed check is not evidence that the account is offline, and having no current stream is not an account-not-found error. Use the top-level `is_live` boolean instead of checking TikTok's numeric status values yourself. Available details include `liveRoomUserInfo` (nickname, avatar, followerCount, roomId) and `liveRoom` (title, startTime, status, `liveRoomStats` with enterCount and userCount, plus `streamData` with playback URLs in multiple qualities). When no room exists, `liveRoom` is omitted rather than filled with invented room data. Ended-room details remain when TikTok supplies them. A real viewer count of zero is not treated as a restriction.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
handle required | query | string | TikTok handle |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_live?handle=thejustalex" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_live?handle=thejustalex", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_live?handle=thejustalex",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"is_live": true,
"live_room_user_info": {
"avatar_large": "https://p19-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/b169e9223700dc8d20d327510eb47f94~tplv-tiktokx-cropcenter:1080:1080.webp?dr=9640&refresh_...",
"avatar_medium": "https://p16-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/b169e9223700dc8d20d327510eb47f94~tplv-tiktokx-cropcenter:720:720.webp?dr=9640&refresh_to...",
"avatar_small": "https://p19-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/b169e9223700dc8d20d327510eb47f94~tplv-tiktokx-cropcenter:100:100.webp?dr=9640&refresh_to...",
"id": "6742945285876515845",
"display_name": "JustAlex",
"secure_user_id": "MS4wLjABAAAA3_8rhYkKsHyYO45EzOF7RBQJRs1EaHBqHFtYIaz3aka44bMVgCLONvFaXPkddJei",
"secret": false,
"username": "thejustalex",
"verified": false,
"room_id": "7523685855395842871",
"bio": "🔴LIVE EVERYDAY🔴\n—\n📧[email protected]📧\nSocials 👇",
"status": 2,
"follow_status": 0,
"following": 1225,
"followers": 601562
},
"live_room": {
"cover_url": "https://p19-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/b169e9223700dc8d20d327510eb47f94~tplv-tiktokx-cropcenter:720:720.webp?dr=9640&refresh_to...",
"square_cover_img": "https://p16-webcast.tiktokcdn-us.com/webcast-oci-tx/98159d71f96ce0a13c8234c485082e14~tplv-obj.image",
"title": "6'13 Grateful Streamer",
"start_time": 1751744708,
"status": 2,
"paid_event": {
"event_id": 0,
"paid_type": 0
},
"live_sub_only": 0,
"live_room_mode": 6,
"hash_tag_id": 5,
"game_tag_id": 1983,
"live_room_stats": {
"enter_count": 30960,
"user_count": 804
},
"stream_data": {
"pull_data": {
"options": {
"default_quality": {
"icon_type": 0,
"level": 0,
"name": "540p",
"resolution": "",
"sdk_key": "sd",
"v_codec": ""
},
"qualities": [
"{...}"
],
"show_quality_button": false
},
"stream_data": "{\"common\":{\"session_id\":\"173-20250705204222D51B254BA2C5D264202E\",\"rule_ids\":\"{\\\"ab_version_trace\\\":null,\\\"sched\\\":\\\"{\\\\\\\"ids\\\\\\\":[\\\\\\\"ex_83506(Weight:100)\\\\\\..."
}
},
"stream_id": "3576322110592123836",
"multi_stream_scene": 0,
"multi_stream_source": 0,
"hevc_stream_data": {
"pull_data": {
"options": {
"default_quality": {
"icon_type": 0,
"level": 0,
"name": "540p",
"resolution": "",
"sdk_key": "sd",
"v_codec": ""
},
"qualities": [
"{...}"
],
"show_quality_button": false
},
"stream_data": "{\"common\":{\"session_id\":\"173-20250705204222D51B254BA2C5D264202E\",\"rule_ids\":\"{\\\"ab_version_trace\\\":null,\\\"sched\\\":\\\"{\\\\\\\"ids\\\\\\\":[\\\\\\\"ex_83506(Weight:100)\\\\\\..."
}
}
}
}GET /v1/tiktok/video_comment_replies
Comment Replies
Fetches replies to a specific TikTok comment by its ID. Returns `comments`, an array of comment objects each with `text`, `user` info, and `create_time`. Paginate with `cursor` from the previous response.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
comment_id required | query | string | TikTok comment ID. This is the cid from the comments endpoint. |
url required | query | string | TikTok video URL. This is the url from the comments endpoint. |
next_cursor | query | number | Cursor to get more replies. Get 'cursor' from previous response. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/video_comment_replies?comment_id=7623828115408274207&url=https://www.tiktok.com/@stoolpresidente/video/7623818255903329566" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/video_comment_replies?comment_id=7623828115408274207&url=https://www.tiktok.com/@stoolpresidente/video/7623818255903329566", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/video_comment_replies?comment_id=7623828115408274207&url=https://www.tiktok.com/@stoolpresidente/video/7623818255903329566",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"comments": [
{
"video_id": "7623818255903329566",
"cid": "7623874021293212447",
"collect_stat": 0,
"comment_language": "en",
"comment_post_item_ids": null,
"created_at": 1775071525,
"like_count": 3,
"fold_status": 0,
"image_list": null,
"is_author_digged": false,
"is_comment_translatable": true,
"is_high_purchase_intent": false,
"label_list": null,
"no_show": false,
"reply_comment": null,
"reply_id": "7623828115408274207",
"reply_to_reply_id": "0",
"share_info": {
"acl": {
"code": 1,
"extra": "{\"is_share_handler_failed\":\"1\"}"
},
"desc": "",
"title": "",
"url": ""
},
"status": 1,
"stick_position": 0,
"text": "Brilliant",
"text_extra": [],
"thread_has_more": false,
"thread_id": 4,
"trans_btn_style": 0,
"...": "3 more fields"
}
],
"next_cursor": 6,
"extra": {
"fatal_item_ids": [],
"logid": "2026040221232018E558310EA56D7D6188",
"now": 1775165000000
},
"has_more": 1,
"log_pb": {
"impr_id": "2026040221232018E558310EA56D7D6188"
},
"status_code": 0,
"status_msg": "",
"total": 36
}GET /v1/tiktok/video_comments
Comments
Fetches comments on a TikTok video by URL — useful for reading audience reactions, replies, and engagement. Returns `comments`, an array where each comment includes `text`, `digg_count` (likes), `reply_comment_total`, `create_time`, and a `user` object with the commenter's nickname and unique_id; also returns `total` comment count. Paginate with `cursor` from the previous response. Public photo/slideshow posts are supported as well as videos. Comments use a separate TikTok public web source, so successful single-post metadata retrieval does not guarantee readable comments. An empty terminal page does not by itself prove the post has no comments globally or was deleted. This endpoint does not expose a country-selection parameter. Use the returned cursor and stop when `end_of_pagination=true`. Pages that return comments cost 1 credit; successful empty pages cost 0 credits, including the first page, later pages, and trim=true responses. Replaying a terminal null cursor also costs 0 credits. Examples and troubleshooting. Scrapes comments from public TikTok videos and photo/slideshow posts. Pages with comments cost 1 credit; empty pages cost 0 credits. An empty page does not prove the post has no comments globally. Examples and troubleshooting.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
url required | query | string | TikTok video URL |
trim | query | boolean | Set to true to get a trimmed response |
next_cursor | query | number | Cursor to get more comments. Get 'cursor' from previous response. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/video_comments?url=example" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/video_comments?url=example", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/video_comments?url=example",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"comments": [
{
"video_id": "7517114944362499342",
"text": "DAVE BUY A TEAM",
"user": {
"account_labels": null,
"ad_cover_url": null,
"advance_feature_item_order": null,
"advanced_feature_info": null,
"avatar_thumb": {
"uri": "tos-useast5-avt-0068-tx/446370164449562d1008889225530f6d",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/446370164449562d1008889225530f6d~tplv-tiktokx-cropcenter:100:100.jpg?dr=9640&refresh_token=662e5e49..."
],
"url_prefix": null
},
"bold_fields": null,
"can_message_follow_status_list": null,
"can_set_geofencing": null,
"cha_list": null,
"cover_url": null,
"custom_verify": "",
"enterprise_verify_reason": "",
"events": null,
"followers_detail": null,
"geofencing": null,
"homepage_bottom_toast": null,
"item_list": null,
"mutual_relation_avatars": null,
"need_points": null,
"display_name": "Robert Lessner",
"platform_sync_info": null,
"relative_users": null,
"search_highlight": null,
"secure_user_id": "MS4wLjABAAAA9rB4k_Ei3NexA5p2lb8naaa4LTgNCOdY0W9NHVo63016XkdsuZgvjkgolBnUkG8W",
"shield_edit_field_info": null,
"...": "6 more fields"
},
"created_at": 1750216932,
"reply_comment_total": 14,
"like_count": 3322,
"comment_language": "en"
}
],
"next_cursor": 20,
"total": 1114
}GET /v1/tiktok/video_captions
Transcript
Extracts existing transcripts, captions, or subtitles from a TikTok video by URL. Returns id, url, and transcript (native captions are WEBVTT-formatted; AI fallback returns text). Also includes top-level transcript_with_timestamp: an array of {start: number, end: number, text: string} sentence/phrase segments from native captions or AI, or null when speech or timing is unavailable. Times are seconds relative to the video. AI timings are approximate, not word-perfect. The existing transcript remains the exact raw WEBVTT string for native captions and a plain string for AI fallback. No new parameter is required, and pricing is unchanged. Native transcripts cost 1 credit only when returned, with no fixed length limit; no transcript costs 0 credits. AI fallback is opt-in via use_ai_as_fallback=true and is used only when native captions are unavailable. By default, successful AI transcription of videos up to 120 seconds (two minutes, inclusive) costs a flat 1 credit per request. Over 120 seconds, videos cannot be AI-transcribed by default. Set allow_long_transcription=true to opt into paid AI with no fixed duration cap: ALL successful AI transcriptions in this mode cost 10 credits per started minute, including short videos: 10 * ceil(duration_seconds / 60). For example, 177 seconds costs 30 credits and an opted-in 60 seconds costs 10 credits. Empty AI results and errors cost 0 credits for AI transcription. This dedicated transcript route charges the AI rate instead of adding a native-caption fee. These routes remain synchronous. Allow at least 30 seconds on your client. Paid long transcription can exceed resource limits or timeouts, so successful transcription of long videos is not guaranteed. Get native captions or an opted-in AI transcript from a TikTok video. By default, successful AI transcription of videos up to 120 seconds (two minutes, inclusive) costs a flat 1 credit per request. Over 120 seconds, videos cannot be AI-transcribed by default. Set allow_long_transcription=true to opt into paid AI with no fixed duration cap: ALL successful AI transcriptions in this mode cost 10 credits per started minute, including short videos: 10 * ceil(duration_seconds / 60). For example, 177 seconds costs 30 credits and an opted-in 60 seconds costs 10 credits. Empty AI results and errors cost 0 credits for AI transcription. These routes remain synchronous. Allow at least 30 seconds on your client. Paid long transcription can exceed resource limits or timeouts, so successful transcription of long videos is not guaranteed.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
url required | query | string | TikTok video URL |
language | query | string | Language of the transcript. 2 letter language code, ie 'en', 'es', 'fr', 'de', 'it', 'ja', 'ko', 'zh' |
allow_long_transcription | query | boolean | Paid opt-in, enabled only by the literal query value 'true' (allow_long_transcription=true). Defaults to false when omitted; other values do not enable paid mode. By default, successful AI transcription of videos up to 120 seconds (two minutes, inclusive) costs a flat 1 credit per request. Over 120 seconds, videos cannot be AI-transcribed by default. Set allow_long_transcription=true to opt into paid AI with no fixed duration cap: ALL successful AI transcriptions in this mode cost 10 credits per started minute, including short videos: 10 * ceil(duration_seconds / 60). For example, 177 seconds costs 30 credits and an opted-in 60 seconds costs 10 credits. Empty AI results and errors cost 0 credits for AI transcription. This flag does not force AI and does not enable transcription or AI fallback by itself. Keep get_transcript=true or use_ai_as_fallback=true where required by the endpoint. Returned native captions still cost 1 credit on dedicated transcript routes, even for long videos with this flag; on detail routes they leave the base price unchanged. These routes remain synchronous. Allow at least 30 seconds on your client. Paid long transcription can exceed resource limits or timeouts, so successful transcription of long videos is not guaranteed. |
use_ai_as_fallback | query | string | Set to 'true' to use paid AI only when existing captions are unavailable. Defaults to false. By default, successful AI transcription of videos up to 120 seconds (two minutes, inclusive) costs a flat 1 credit per request. Over 120 seconds, videos cannot be AI-transcribed by default. Set allow_long_transcription=true to opt into paid AI with no fixed duration cap: ALL successful AI transcriptions in this mode cost 10 credits per started minute, including short videos: 10 * ceil(duration_seconds / 60). For example, 177 seconds costs 30 credits and an opted-in 60 seconds costs 10 credits. Empty AI results and errors cost 0 credits for AI transcription. These routes remain synchronous. Allow at least 30 seconds on your client. Paid long transcription can exceed resource limits or timeouts, so successful transcription of long videos is not guaranteed. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/video_captions?url=https://www.tiktok.com/@stoolpresidente/video/7499229683859426602" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/video_captions?url=https://www.tiktok.com/@stoolpresidente/video/7499229683859426602", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/video_captions?url=https://www.tiktok.com/@stoolpresidente/video/7499229683859426602",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"id": "7499229683859426602",
"url": "https://www.tiktok.com/@stoolpresidente/video/7499229683859426602",
"transcript_with_timestamp": null,
"transcript": "WEBVTT\n\n\n00:00:00.120 --> 00:00:01.840\nAlright, pizza review time.\n\n00:00:01.841 --> 00:00:03.761\nSal's Pizza Factory. Oh,\n\n00:00:03.762 --> 00:00:05.721\nit'..."
}GET /v1/tiktok/video_plus
Video Info
Fetches detailed data for a single TikTok video by URL, including its metadata, engagement stats, and optionally its transcript/captions. Returns `aweme_detail` with `desc` (caption), `statistics` (play_count, digg_count/likes, comment_count, share_count, collect_count), `video` URLs, `author` info, and `music` info; also returns `transcript` in WEBVTT format if `get_transcript=true`. For no-watermark video URLs, use `aweme_detail.video.download_no_watermark_addr.url_list[0]` when it exists. If it is missing and `aweme_detail.video.has_watermark` is false, use `aweme_detail.video.play_addr.url_list[0]` instead. If `has_watermark` is true and `download_no_watermark_addr` is missing, TikTok did not return a no-watermark URL for that video. Also accepts photo/slideshow URLs and returns `image_post_info` when available. Availability is source-specific: a TikTok web page can be blocked in your country while this endpoint still retrieves public metadata, and a post can be missing from the profile feed while this endpoint succeeds. A `404 not_found` means the post could not be retrieved through the endpoint's available public sources; it does not by itself prove global deletion. Keep the last known campaign record and retry later with a relevant `region` rather than marking a post deleted from a single failure. Examples and troubleshooting. Native captions are opt-in via get_transcript=true and are included in the existing base endpoint price. This detail endpoint does not use AI transcription or an AI fallback; missing captions return no transcript. For AI fallback, use /v1/tiktok/video/transcript. Scrapes a public TikTok video or photo/slideshow. Availability can differ from the web page and profile feed; a not-found response alone does not prove deletion. For no-watermark video URLs, use `download_no_watermark_addr` when present, or `play_addr` when `has_watermark` is false. Availability guide.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
url required | query | string | TikTok video or photo/slideshow URL |
region | query | string | Two-letter country code passed to the primary post source. Defaults to US. Try the creator's country if a post is unavailable. This does not guarantee a matching browser/proxy country or complete retrieval; the fallback source does not receive this parameter. |
get_transcript | query | boolean | Native captions are opt-in via get_transcript=true and are included in the existing base endpoint price. This detail endpoint does not use AI transcription or an AI fallback; missing captions return no transcript. For AI fallback, use /v1/tiktok/video/transcript. |
trim | query | boolean | Set to true to get a trimmed response |
download_media | query | boolean | Set to true to download the video/images and get back permanent Supabase URLs. Costs 10 credits if media is found, 1 credit otherwise. |
cache_max_age | query | string | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). See the Caching page for details. one of: 1d, 3d, 7d, 14d, 30d |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/video_plus?url=https://www.tiktok.com/@randomspamvideos25/video/7251387037834595630" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/video_plus?url=https://www.tiktok.com/@randomspamvideos25/video/7251387037834595630", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/video_plus?url=https://www.tiktok.com/@randomspamvideos25/video/7251387037834595630",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"aweme_detail": {
"video_id": "7517114944362499342",
"desc": "You can say whatever you want about the WNBA is but it’s never boring",
"desc_language": "en",
"region": "US",
"statistics": {
"video_id": "7517114944362499342",
"collect_count": 1633,
"comment_count": 618,
"like_count": 62522,
"download_count": 190,
"forward_count": 0,
"lose_comment_count": 0,
"lose_count": 0,
"view_count": 589745,
"repost_count": 0,
"share_count": 3585,
"whatsapp_share_count": 8
},
"video": {
"cover_tsp": 140.193500922967,
"ai_dynamic_cover": {
"uri": "tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H~tplv-tiktokx-origin.image?dr=9229&refresh_token=1d205fbb&x-exp..."
],
"url_prefix": null
},
"ai_dynamic_cover_bak": {
"uri": "tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H~tplv-tiktokx-origin.image?dr=9229&refresh_token=1d205fbb&x-exp..."
],
"url_prefix": null
},
"animated_cover": {
"uri": "tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H~tplv-tiktokx-origin.image?dr=9229&refresh_token=1d205fbb&x-exp..."
],
"url_prefix": null
},
"bit_rate": [
{
"hdr_bit": "",
"hdr_type": "",
"bit_rate": 694328,
"dub_infos": null,
"fid_profile_labels": "",
"fps": 30,
"gear_name": "adapt_lower_720_2",
"is_bytevc1": 2,
"play_addr": {
"data_size": 15073438,
"file_cs": "c:0-144831-d8fd",
"file_hash": "bade4c49b717e85095bf288836f2cf41",
"height": 1280,
"uri": "v12044gd0000d192fcnog65ouluk5f60",
"url_key": "v12044gd0000d192fcnog65ouluk5f60_bytevc2_720p_694328",
"url_list": [
"https://v45.tiktokcdn-eu.com/181058a705ab5b81ac71c7ec81b7d91c/68549d47/video/tos/maliva/tos-maliva-ve-0068c799-us/oQOIKCXpeQMxlHgA9YwA8fQqQkIfj3UHkctEaC/?a=1..."
],
"url_prefix": null,
"width": 720
},
"quality_type": 14,
"video_extra": "{\"PktOffsetMap\":\"[{\\\"time\\\": 1, \\\"offset\\\": 264024}, {\\\"time\\\": 2, \\\"offset\\\": 330253}, {\\\"time\\\": 3, \\\"offset\\\": 403843}, {\\\"time\\\": 4, \\\"offset\\\": 488694},..."
}
],
"bit_rate_audio": [],
"cdn_url_expired": 0,
"cover": {
"height": 720,
"uri": "tos-useast5-p-0068-tx/oUKFS4HhaMvXICUEIc1AgN7HEs9nivBIBC4iI",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/oUKFS4HhaMvXICUEIc1AgN7HEs9nivBIBC4iI~tplv-tiktokx-cropcenter-q:300:400:q72.heic?dr=9232&refresh_toke..."
],
"url_prefix": null,
"width": 720
},
"cover_is_custom": true,
"did_profile_labels": "",
"download_addr": {
"data_size": 24637995,
"file_cs": "c:0-143697-b9bb",
"height": 720,
"uri": "v12044gd0000d192fcnog65ouluk5f60",
"url_list": [
"https://v45.tiktokcdn-eu.com/3d049ec218f82d1ad3e7e9ee12cccb39/68549d47/video/tos/maliva/tos-maliva-ve-0068c799-us/osMffQHg9IKplXhIekq8xUpGsKuYCjAqSQQEAH/?a=1..."
],
"url_prefix": null,
"width": 720
},
"download_no_watermark_addr": {
"data_size": 23315651,
"file_cs": "c:0-143697-b9bb",
"file_hash": "dc0d3f39653d5d1383f62d1c61ad9d5e",
"height": 1024,
"uri": "v12044gd0000d192fcnog65ouluk5f60",
"url_key": "v12044gd0000d192fcnog65ouluk5f60_h264_540p_1073989",
"url_list": [
"https://v45.tiktokcdn-eu.com/c0fb0c4c63ed4f5076758092137da3f5/68549d47/video/tos/maliva/tos-maliva-ve-0068c799-us/o4u9CaIEvIMFiAHihBB4ng4sXQUWSFK1E1PvI/?a=12..."
],
"url_prefix": null,
"width": 576
},
"duration": 173675,
"dynamic_cover": {
"height": 720,
"uri": "tos-useast5-p-0068-tx/oIQCgk8IAMQfKA2ewUdC8XIH9HktlgfqjEpU2F",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/oIQCgk8IAMQfKA2ewUdC8XIH9HktlgfqjEpU2F~tplv-tiktokx-origin.image?dr=9229&refresh_token=949e4dcb&x-exp..."
],
"url_prefix": null,
"width": 720
},
"has_watermark": true,
"height": 1024,
"is_bytevc1": 0,
"is_callback": true,
"is_long_video": 1,
"meta": "{\"LoudnessRange\":\"4.2\",\"LoudnessRangeEnd\":\"-15.5\",\"LoudnessRangeStart\":\"-19.7\",\"MaximumMomentaryLoudness\":\"-9.6\",\"MaximumShortTermLoudness\":\"-14\",\"Version\":\"...",
"misc_download_addrs": "{\"suffix_scene\":{\"uri\":\"v12044gd0000d192fcnog65ouluk5f60\",\"url_list\":[\"https://v45.tiktokcdn-eu.com/eb4b1ebe709b6ec8bb4b8e40c7c1d919/68549d47/video/tos/maliv...",
"need_set_token": false,
"origin_cover": {
"height": 720,
"uri": "tos-useast5-p-0068-tx/ooyQIJ3YQXAq5pBAQjeMklUKEeUk9HQk5Hf8CI",
"url_list": [
"https://p19-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/ooyQIJ3YQXAq5pBAQjeMklUKEeUk9HQk5Hf8CI~tplv-dmt-adapt-360p.heic?dr=1360&refresh_token=4649c5e4&x-expi..."
],
"url_prefix": null,
"width": 720
},
"play_addr": {
"data_size": 23315651,
"file_cs": "c:0-143697-b9bb",
"file_hash": "dc0d3f39653d5d1383f62d1c61ad9d5e",
"height": 1024,
"uri": "v12044gd0000d192fcnog65ouluk5f60",
"url_key": "v12044gd0000d192fcnog65ouluk5f60_h264_540p_1073989",
"url_list": [
"https://v45.tiktokcdn-eu.com/c0fb0c4c63ed4f5076758092137da3f5/68549d47/video/tos/maliva/tos-maliva-ve-0068c799-us/o4u9CaIEvIMFiAHihBB4ng4sXQUWSFK1E1PvI/?a=12..."
],
"url_prefix": null,
"width": 576
},
"play_addr_bytevc1": {
"data_size": 13687862,
"file_cs": "c:0-144445-e93b",
"file_hash": "2758eda4b7836458bd1d717a50e4625c",
"height": 1024,
"uri": "v12044gd0000d192fcnog65ouluk5f60",
"url_key": "v12044gd0000d192fcnog65ouluk5f60_bytevc1_540p_630504",
"url_list": [
"https://v45.tiktokcdn-eu.com/6f7ee0f58f0c58d39943fdbb31ca96b5/68549d47/video/tos/maliva/tos-maliva-ve-0068c799-us/oIekjEYsQQkaIGHHWCpXd69QIUMgqZAKlA8e2f/?a=1..."
],
"url_prefix": null,
"width": 576
},
"...": "7 more fields"
},
"author": {
"accept_private_policy": false,
"account_labels": null,
"account_region": "",
"ad_cover_url": null,
"advance_feature_item_order": null,
"advanced_feature_info": null,
"apple_account": 0,
"authority_status": 0,
"avatar_168x168": {
"height": 720,
"uri": "tos-maliva-avt-0068/7310178711609032710",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/7310178711609032710~tplv-tiktokx-cropcenter-q:168:168:q70.heic?dr=9604&idc=no1a&ps=87d6e48a&s=AWEME_DETA..."
],
"url_prefix": null,
"width": 720
},
"avatar_larger": {
"height": 720,
"uri": "tos-maliva-avt-0068/7310178711609032710",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/7310178711609032710~tplv-tiktokx-cropcenter-q:1080:1080:q70.heic?dr=9608&idc=no1a&ps=87d6e48a&s=AWEME_DE..."
],
"url_prefix": null,
"width": 720
},
"avatar_thumb": {
"height": 720,
"uri": "tos-maliva-avt-0068/7310178711609032710",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/7310178711609032710~tplv-tiktokx-cropcenter-q:100:100:q70.heic?dr=9606&idc=no1a&ps=87d6e48a&s=AWEME_DETA..."
],
"url_prefix": null,
"width": 720
},
"avatar_uri": "tos-maliva-avt-0068/7310178711609032710",
"aweme_count": 0,
"bind_phone": "",
"bold_fields": null,
"can_message_follow_status_list": [
0
],
"can_set_geofencing": null,
"cha_list": null,
"comment_filter_status": 0,
"comment_setting": 0,
"commerce_user_level": 0,
"cover_url": [],
"created_at": 0,
"custom_verify": "Account verificato",
"cv_level": "",
"...": "94 more fields"
},
"created_at": 1750214725,
"is_ad": false,
"is_eligible_for_commission": true,
"is_paid_partnership": false,
"create_time_utc": "2025-09-03T18:37:38.000Z",
"url": "https://www.tiktok.com/@branttakes/video/7545933721589910798",
"shop_product_url": "https://www.tiktok.com/shop/pdp/1729494515984797858"
},
"transcript": "WEBVTT\n\n\n00:00:00.340 --> 00:00:01.860\nAll right. W N B A. Rant.\n\n00:00:01.861 --> 00:00:02.741\nI know. It's like,\n\n00:00:02.742 --> 00:00:03.261\noh, Dave,\n\n..."
}GET /v1/tiktok/user_videos_pro
Profile Videos
Fetches videos posted by a TikTok user, sortable by latest or most popular — use this to get a creator's video feed or TikToks. Returns `aweme_list`, an array of video objects each containing `aweme_id`, `desc` (caption), `statistics` (play_count, digg_count/likes, comment_count, share_count, collect_count/saves), and `video` (download URLs, duration, cover image). Paginate with `max_cursor` from the previous response, keeping the same `region` and `sort_by` throughout a cursor chain. Known limitation: this feed is not an exhaustive inventory of a creator's public posts. TikTok's web page, single-post lookup, comments, and profile feed use different public sources and request contexts; a post may be retrievable through one and unavailable or missing through another. A missing feed item does not prove deletion, and a returned item does not guarantee browser playback in your country. Try the creator's country with a two-letter `region` code, restarting pagination when changing it, but country selection does not guarantee completeness. Repeated requests for the same page can also return different item sets. For campaign tracking, retain submitted post URLs/IDs and refresh them with `/v2/tiktok/video` rather than relying only on feed discovery. Retry a suspect page within a bounded budget and deduplicate by `aweme_id`; do not merge cursors from separate responses. Examples and troubleshooting. Scrapes posts from a TikTok profile. TikTok can omit individual posts even after full pagination; region selection does not guarantee complete coverage. Examples and troubleshooting.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
handle required | query | string | TikTok handle |
user_id | query | string | TikTok user id. Use this for faster responses. |
sort_by | query | string | What to sort by one of: latest, popular |
region | query | string | Country code passed to the profile-feed source. Defaults to US. If a profile should have videos but returns none, try another relevant two-letter country code. Changing this value does not guarantee that region-restricted posts will appear. |
include_pinned | query | boolean | Whether to include pinned posts. Defaults to true. Set to false to exclude posts marked as pinned, including with trim=true. Keep this value unchanged while paginating. Filtering can produce shorter or empty pages; follow has_more and max_cursor. Successful pages still cost 1 credit, including empty results. |
trim | query | boolean | Set to true for a trimmed down version of the response |
max_cursor | query | string | Cursor to get more videos. Get 'max_cursor' from previous response. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_videos_pro?handle=stoolpresidente" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_videos_pro?handle=stoolpresidente", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/tiktok/user_videos_pro?handle=stoolpresidente",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"videos": [
{
"video_id": "7517114944362499342",
"desc": "You can say whatever you want about the WNBA is but it’s never boring",
"desc_language": "en",
"region": "US",
"statistics": {
"video_id": "7517114944362499342",
"collect_count": 1565,
"comment_count": 587,
"like_count": 59605,
"download_count": 178,
"forward_count": 0,
"lose_comment_count": 0,
"lose_count": 0,
"view_count": 559925,
"repost_count": 0,
"share_count": 3424,
"whatsapp_share_count": 7
},
"video": {
"cover_tsp": 140.193500922967,
"ai_dynamic_cover": {
"uri": "tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H~tplv-tiktokx-origin.image?dr=9229&refresh_token=2a5a8daf&x-exp..."
],
"url_prefix": null
},
"ai_dynamic_cover_bak": {
"uri": "tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H~tplv-tiktokx-origin.image?dr=9229&refresh_token=2a5a8daf&x-exp..."
],
"url_prefix": null
},
"animated_cover": {
"uri": "tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H~tplv-tiktokx-origin.image?dr=9229&refresh_token=2a5a8daf&x-exp..."
],
"url_prefix": null
},
"big_thumbs": [
{
"duration": 173.66667,
"fext": "jpeg",
"img_num": 174,
"img_uris": [
"tos-maliva-p-0068c799-us/ogA4IiXKCF41BKBgnU9aS9ECP7zIZsMvTIivE"
],
"img_url": "",
"img_urls": [
"https://p16-sign-va.tiktokcdn.com/tos-maliva-p-0068c799-us/ogA4IiXKCF41BKBgnU9aS9ECP7zIZsMvTIivE~tplv-noop.image?x-expires=1750371666&x-signature=1vtd4zbxRXS..."
],
"img_x_len": 5,
"img_x_size": 136,
"img_y_len": 5,
"img_y_size": 240,
"interval": 1,
"uri": ""
}
],
"bit_rate": [
{
"hdr_bit": "",
"hdr_type": "",
"bit_rate": 694328,
"dub_infos": null,
"fid_profile_labels": "",
"fps": 30,
"gear_name": "adapt_lower_720_2",
"is_bytevc1": 2,
"play_addr": "{...}",
"quality_type": 14,
"video_extra": "{\"PktOffsetMap\":\"[{\\\"time\\\": 1, \\\"offset\\\": 264024}, {\\\"time\\\": 2, \\\"offset\\\": 330253}, {\\\"time\\\": 3, \\\"offset\\\": 403843}, {\\\"time\\\": 4, \\\"offset\\\": 488694},..."
}
],
"bit_rate_audio": [],
"cdn_url_expired": 0,
"cla_info": {
"caption_infos": [
"{...}"
],
"captions_type": 2,
"creator_edited_caption_id": 0,
"enable_auto_caption": 0,
"has_original_audio": 1,
"hide_original_caption": false,
"no_caption_reason": 0,
"original_language_info": {
"can_translate_realtime": false,
"can_translate_realtime_skip_translation_lang_check": true,
"first_subtitle_time": 340,
"is_burnin_caption": false,
"lang": "eng-US",
"language_code": "en",
"language_id": 2,
"original_caption_type": 1
},
"vertical_positions": null
},
"cover": {
"height": 720,
"uri": "tos-useast5-p-0068-tx/oUKFS4HhaMvXICUEIc1AgN7HEs9nivBIBC4iI",
"url_list": [
"https://p19-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/oUKFS4HhaMvXICUEIc1AgN7HEs9nivBIBC4iI~tplv-tiktokx-cropcenter-q:300:400:q72.heic?dr=9232&refresh_toke..."
],
"url_prefix": null,
"width": 720
},
"cover_is_custom": true,
"did_profile_labels": "",
"download_addr": {
"data_size": 24637995,
"file_cs": "c:0-143697-b9bb",
"height": 720,
"uri": "v12044gd0000d192fcnog65ouluk5f60",
"url_list": [
"https://v45.tiktokcdn-eu.com/a304184e3539ff8ceb2bcea1b5cd67f6/68548d52/video/tos/maliva/tos-maliva-ve-0068c799-us/osMffQHg9IKplXhIekq8xUpGsKuYCjAqSQQEAH/?a=1..."
],
"url_prefix": null,
"width": 720
},
"download_no_watermark_addr": {
"data_size": 23315651,
"file_cs": "c:0-143697-b9bb",
"file_hash": "dc0d3f39653d5d1383f62d1c61ad9d5e",
"height": 1024,
"uri": "v12044gd0000d192fcnog65ouluk5f60",
"url_key": "v12044gd0000d192fcnog65ouluk5f60_h264_540p_1073989",
"url_list": [
"https://v45.tiktokcdn-eu.com/c8fc49d58f379d7e3ea4a564a2ddbde2/68548d52/video/tos/maliva/tos-maliva-ve-0068c799-us/o4u9CaIEvIMFiAHihBB4ng4sXQUWSFK1E1PvI/?a=12..."
],
"url_prefix": null,
"width": 576
},
"duration": 173675,
"dynamic_cover": {
"height": 720,
"uri": "tos-useast5-p-0068-tx/oIQCgk8IAMQfKA2ewUdC8XIH9HktlgfqjEpU2F",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/oIQCgk8IAMQfKA2ewUdC8XIH9HktlgfqjEpU2F~tplv-tiktokx-origin.image?dr=9229&refresh_token=e20935f0&x-exp..."
],
"url_prefix": null,
"width": 720
},
"has_watermark": true,
"height": 1024,
"is_bytevc1": 0,
"is_callback": true,
"is_long_video": 1,
"meta": "{\"LoudnessRange\":\"4.2\",\"LoudnessRangeEnd\":\"-15.5\",\"LoudnessRangeStart\":\"-19.7\",\"MaximumMomentaryLoudness\":\"-9.6\",\"MaximumShortTermLoudness\":\"-14\",\"Version\":\"...",
"misc_download_addrs": "{\"suffix_scene\":{\"uri\":\"v12044gd0000d192fcnog65ouluk5f60\",\"url_list\":[\"https://v45.tiktokcdn-eu.com/6c7c8708936435dba8b7b2b12ca777ec/68548d52/video/tos/maliv...",
"need_set_token": false,
"origin_cover": {
"height": 720,
"uri": "tos-useast5-p-0068-tx/ooyQIJ3YQXAq5pBAQjeMklUKEeUk9HQk5Hf8CI",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/ooyQIJ3YQXAq5pBAQjeMklUKEeUk9HQk5Hf8CI~tplv-dmt-adapt-360p.heic?dr=1360&refresh_token=19df3a47&x-expi..."
],
"url_prefix": null,
"width": 720
},
"...": "9 more fields"
},
"author": {
"accept_private_policy": false,
"account_labels": null,
"account_region": "",
"ad_cover_url": null,
"advance_feature_item_order": null,
"advanced_feature_info": null,
"apple_account": 0,
"authority_status": 0,
"avatar_168x168": {
"height": 720,
"uri": "tos-maliva-avt-0068/7310178711609032710",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/7310178711609032710~tplv-tiktokx-cropcenter-q:168:168:q70.heic?dr=9604&idc=no1a&ps=87d6e48a&s=PUBLISH&sc..."
],
"url_prefix": null,
"width": 720
},
"avatar_300x300": {
"height": 720,
"uri": "tos-maliva-avt-0068/7310178711609032710",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/7310178711609032710~tplv-tiktokx-cropcenter-q:300:300:q70.heic?dr=9605&idc=no1a&ps=87d6e48a&s=PUBLISH&sc..."
],
"url_prefix": null,
"width": 720
},
"avatar_larger": {
"height": 720,
"uri": "tos-maliva-avt-0068/7310178711609032710",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/7310178711609032710~tplv-tiktokx-cropcenter-q:1080:1080:q70.heic?dr=9608&idc=no1a&ps=87d6e48a&s=PUBLISH&..."
],
"url_prefix": null,
"width": 720
},
"avatar_medium": {
"height": 720,
"uri": "tos-maliva-avt-0068/7310178711609032710",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/7310178711609032710~tplv-tiktokx-cropcenter-q:720:720:q70.heic?dr=9607&idc=no1a&ps=87d6e48a&s=PUBLISH&sc..."
],
"url_prefix": null,
"width": 720
},
"avatar_extra_info_list": [
{
"avatar_category": 6,
"avatar_extra_info": "{...}"
}
],
"avatar_thumb": {
"height": 720,
"uri": "tos-maliva-avt-0068/7310178711609032710",
"url_list": [
"https://p16-amd-va.tiktokcdn.com/tos-maliva-avt-0068/7310178711609032710~tplv-tiktokx-cropcenter-q:100:100:q70.heic?dr=9606&idc=no1a&ps=87d6e48a&s=PUBLISH&sc..."
],
"url_prefix": null,
"width": 720
},
"avatar_uri": "tos-maliva-avt-0068/7310178711609032710",
"aweme_count": 2135,
"bind_phone": "",
"bold_fields": null,
"can_message_follow_status_list": [
0
],
"can_set_geofencing": null,
"cha_list": null,
"comment_filter_status": 0,
"comment_setting": 0,
"commerce_user_level": 0,
"cover_url": [],
"...": "97 more fields"
},
"created_at": 1750214725,
"is_ad": false,
"is_eligible_for_commission": true,
"is_paid_partnership": false,
"create_time_utc": "2025-09-03T18:37:38.000Z",
"url": "https://www.tiktok.com/@branttakes/video/7545933721589910798",
"shop_product_url": "https://www.tiktok.com/shop/pdp/1729494515984797858"
}
],
"max_cursor": 1748286476000
}