Pass a TikTok sound clipId and get music_info back as JSON, with title, author, album and duration. A second endpoint lists the TikTok videos that use the same sound, so you can see how a sound spreads without scrolling the app. Both endpoints take the same clip_id and your API key header, and each successful call is billed on its own, so you can track a handful of sounds or build a larger dataset step by step.
| Endpoint | What it returns | Credits/call | USD/call (Freelance plan) |
|---|---|---|---|
/v1/tiktok/song | Get Song Details | 1 | $0.0017 |
/v1/tiktok/song_videos | TikToks using Song | 1 | $0.0017 |
/v1/tiktok/songGet Song Details 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
clip_id | string | yes | This is a little confusing because this isn't songId like you'd think. It is the clipId. I guess because you can clip different portions of a song 🤷♂️ |
Sample response (trimmed):
{
"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",
/v1/tiktok/song_videosTikToks using Song 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
clip_id | string | no | This is clipId. Can be found on a url like so: https://www.tiktok.com/music/That%27s-Who-I-Praise-7370375686554782506, where 7370375686554782506 is the clipId |
next_cursor | number | no | The cursor to get the next page of results. |
curl -H "X-Scapi-Key: $SCAPI_KEY" "https://api.scrapall.bipsport.com/scapi/v1/tiktok/song"import os, requests
r = requests.get("https://api.scrapall.bipsport.com/scapi/v1/tiktok/song",
headers={"X-Scapi-Key": os.environ["SCAPI_KEY"]})
print(r.json())The ID TikTok uses for a sound or song. Pass it as clip_id to both endpoints. You can usually find it in the music data of a TikTok video you already collected or in the sound page URL.
A music_info object with title, author, album, duration and other documented fields for that sound, so you can label and group the sounds you track.
Call the song videos endpoint with clip_id. It returns aweme_list, an array of video objects; pass the cursor as next_cursor to load the next page and keep going while a cursor comes back.
These endpoints work per sound. You need a clipId, for example from a video you already collected. Call them on a schedule for the sounds you care about to see which ones keep growing.
No. You only send clip_id and your API key header. There is no TikTok login, cookie or app session involved.
Open the Buy page, pick the Freelance plan and pay in USDT on TRC20 or ERC20. The key is shown once, right after the payment is confirmed on-chain.
The cost table on this page lists credits per call for each endpoint. The Freelance plan is $45 for 27,000 credits per 30 days.
Full reference: all tiktok endpoints.