TikTok sound API · 100 free credits

The videos that use
your sound.

Send a TikTok sound ID and page through the videos made with it, with views, likes, comments and the creator on every one. Built for labels, artist teams and music tools that track how a song spreads.

Credits per page
1
Per 1,000 pages
$0.18
Failed calls
Free
curl -X POST https://scrapingbot.io/api/v1/tiktok \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "endpoint": "/music/posts",
    "params": { "music_id": "7682907287056337667" }
  }'
200 OK · 1.91 s · 1 credit
{
  "success": true,
  "data": {
    "videos": [{
      "video_id": "7682907275505224982",
      "title": "luna eterna #lofihouse #electronicmusic …",
      "play_count": 353558,
      "digg_count": 53947,
      "comment_count": 741,
      "create_time": 1788816252,
      "author": { "unique_id": "aetherrr.flp" }
    }, …],
    "cursor": 12,
    "hasMore": 1
  },
  "statusCode": 200,
  "creditsUsed": 1
}
How it works

From a sound ID to a spreadsheet of videos.

01

Take the sound ID

It is the number at the end of the sound’s TikTok page. The full page URL works too.

02

Call /music/posts

You get a page of videos using the sound, each with its creator and counts, plus a cursor.

03

Follow the cursor

Send the cursor back until hasMore: 0. Key your rows on video_id so re-runs never duplicate.

Every video using a sound, in one dictionary
import requests

API = "https://scrapingbot.io/api/v1/tiktok"
HEADERS = {"x-api-key": "YOUR_API_KEY"}

params = {"music_id": "7682907287056337667", "cursor": 0}
videos = {}

while True:
    body = {"endpoint": "/music/posts", "params": params}
    data = requests.post(API, headers=HEADERS, json=body).json()["data"]

    for v in data["videos"]:
        videos[v["video_id"]] = {
            "creator": v["author"]["unique_id"],
            "views": v["play_count"],
            "likes": v["digg_count"],
            "posted": v["create_time"],
        }

    if not data["hasMore"]:  # only hasMore: 0 ends the list
        break
    params["cursor"] = data["cursor"]

print(len(videos), "videos use this sound")
Who uses it

Made for people who follow songs.

The same two endpoints power very different jobs.

Labels and distributors

Check every release each morning: how many videos use it, which ones are taking off and where a song is starting to move.

/music/info/music/posts

Artist marketing

Find the creators who already used a song, sort them by views and reach out to the ones whose videos worked.

/music/posts/user/info

Music analytics tools

Feed your own dashboards and reports with sound-level data, without running scrapers or managing TikTok sessions.

/music/posts

Campaign reporting

Show a client every video made with their song during a campaign, with views and likes, from one scheduled script.

/music/posts
Billing

You pay for answers, not attempts.

A TikTok call costs 1 credit, and only when it succeeds. Every endpoint costs the same.

  • Failed calls are refundedErrors and timeouts are credited back automatically, and requests with missing or invalid parameters are never charged.
  • 100 free credits to startThat covers 100 TikTok calls on the free plan. No credit card needed to sign up.
  • See the cost of every callEach response carries a creditsUsed field, and your dashboard logs every request with its status, duration and credits.
  • One balance for every APIThe same credits work for website scraping, TikTok, Instagram, Google, Amazon and ChatGPT. Paid plans refresh them every billing cycle.

Every successful TikTok call

1credit

Free to start
100 calls
from 100 free credits
Failed calls
0 credits
refunded automatically

Questions, answered

Where do I find a sound ID?

Open the sound on TikTok: the number at the end of its page URL (tiktok.com/music/name-<id>) is the sound ID. You can also send the whole sound page URL as url instead of music_id.

What do I get for each video?

The video ID, caption, view, like and comment counts, posting time, a video link and the creator’s handle, ID and nickname. /music/info adds the sound’s title, author, duration and how many videos use it.

How do I get all the videos, not just the first page?

Each response includes a cursor. Send it back with the next request and keep going while hasMore is set. Pages typically hold around 10 videos and sizes vary, so stop on hasMore: 0, not on page size.

Can I track a song every day?

Yes. Run the same walk on a schedule and store results by video_id: new videos and changing view counts show you how a song is spreading. Each page is one call.

What does it cost?

1 credit per successful page. On the Starter plan ($49.99 for 275,000 credits) that is about $0.18 per 1,000 pages. Failed calls are refunded, and new accounts get 100 free credits with no card.

Do I need a TikTok account or cookies?

No. You only send your ScrapingBot API key. There is no TikTok login, cookie or headless browser to manage.

Is this only public data?

Yes. The API returns what TikTok shows publicly for a sound and its videos. Private accounts and private videos are not included.

Your first 100 pages are free.

Create an account and the playground opens with this call filled in. No credit card required.