TikTok

22 endpoints.

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

NameInTypeDescription
url requiredquerystringPublic TikTok collection URL
next_cursorquerystringCursor 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/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

NameInTypeDescription
room_id requiredquerystringTikTok live room id. Get this from `/v1/tiktok/user/live` in `liveRoomUserInfo.roomId` or `liveRoom.id` when the user is live.
user_id requiredquerystringTikTok 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

NameInTypeDescription
handlequerystringTikTok handle. You can pass handle or user_id.
user_idquerystringTikTok user id.
cache_max_agequerystringIf 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

NameInTypeDescription
handle requiredquerystringTikTok 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

NameInTypeDescription
hashtag requiredquerystringHashtag to search for (without #)
regionquerystringRegion 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.
trimquerybooleanSet to true to get a trimmed response
next_cursorquerynumberCursor 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

NameInTypeDescription
query requiredquerystringKeyword to search for
date_postedquerystringTime Frame
one of: yesterday, this-week, this-month, last-3-months, last-6-months, all-time
sort_byquerystringSort by
one of: relevance, most-liked, date-posted
regionquerystringNote, 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
trimquerybooleanSet to true to get a trimmed response
next_cursorquerynumberCursor 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

NameInTypeDescription
query requiredquerystringSearch query to get suggestions for
regionquerystringRegion 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

NameInTypeDescription
query requiredquerystringKeyword to search for
publish_timequerystringTime Frame TikTok was posted
one of: yesterday, this-week, this-month, last-3-months, last-6-months, all-time
sort_byquerystringSort by
one of: relevance, most-liked, date-posted
regionquerystringNote, 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_cursorquerynumberCursor 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

NameInTypeDescription
query requiredquerystringSearch query for users
trimquerybooleanSet to true to get a trimmed response
next_cursorquerynumberCursor 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

NameInTypeDescription
clip_id requiredquerystringThis 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

NameInTypeDescription
clip_idquerystringThis 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_cursorquerynumberThe 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

NameInTypeDescription
handle requiredquerystringTikTok 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

NameInTypeDescription
handlequerystringTikTok handle
user_idquerystringUser id. Use this for faster response times.
trimquerybooleanSet to true to get a trimmed response
min_timequerynumberUsed 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

NameInTypeDescription
handle requiredquerystringTikTok handle
trimquerybooleanSet to true to get a trimmed response
min_timequerynumberUsed 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

NameInTypeDescription
handle requiredquerystringTikTok 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

NameInTypeDescription
comment_id requiredquerystringTikTok comment ID. This is the cid from the comments endpoint.
url requiredquerystringTikTok video URL. This is the url from the comments endpoint.
next_cursorquerynumberCursor 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

NameInTypeDescription
url requiredquerystringTikTok video URL
trimquerybooleanSet to true to get a trimmed response
next_cursorquerynumberCursor 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

NameInTypeDescription
url requiredquerystringTikTok video URL
languagequerystringLanguage of the transcript. 2 letter language code, ie 'en', 'es', 'fr', 'de', 'it', 'ja', 'ko', 'zh'
allow_long_transcriptionquerybooleanPaid 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_fallbackquerystringSet 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

NameInTypeDescription
url requiredquerystringTikTok video or photo/slideshow URL
regionquerystringTwo-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_transcriptquerybooleanNative 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.
trimquerybooleanSet to true to get a trimmed response
download_mediaquerybooleanSet 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_agequerystringIf 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

NameInTypeDescription
handle requiredquerystringTikTok handle
user_idquerystringTikTok user id. Use this for faster responses.
sort_byquerystringWhat to sort by
one of: latest, popular
regionquerystringCountry 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_pinnedquerybooleanWhether 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.
trimquerybooleanSet to true for a trimmed down version of the response
max_cursorquerystringCursor 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
}