TikTok music videos API
List public TikTok posts that reuse a specific sound, keyed by music clip id, with cursor pagination in the shared Social Fetch envelope.
GET /v1/tiktok/music/{clipId}/videos1 credit Failed requests are free
About this endpoint
GET /v1/tiktok/music/{clipId}/videos takes the numeric music clip id from a TikTok music URL (for example the trailing digits in https://www.tiktok.com/music/Title-7439295283975702544). The response returns data.clipId, a data.videos array, and data.page (hasMore, nextCursor). Each video row matches the profile-feed shape: id, caption, createdAt, url, thumbnailUrl, durationMs, pinned, isAd, engagement stats, and media download URLs. Pass optional cursor when data.page.hasMore is true.
This route has no lookupStatus. An empty data.videos array can mean no public posts use the clip, or other cases. Bill from meta.creditsCharged. For sound metadata alone use GET /v1/tiktok/songs. For a single post by URL use GET /v1/tiktok/videos. For a creator's own uploads use GET /v1/tiktok/profiles/{handle}/videos.
TikTok music videos API FAQ
How do I list TikTok videos for a music clip via API?
Call GET /v1/tiktok/music/{clipId}/videos with your Social Fetch API key (x-api-key) and the numeric music clip id in the path. Read data.videos and data.page in the JSON response. See the API docs for parameters and examples.
Where do I get the TikTok music clipId?
From a public TikTok music URL. The clipId is the numeric id at the end of paths like https://www.tiktok.com/music/Title-7439295283975702544. You can also pull it from video payloads that include music metadata when you already resolved a post.
How much does the TikTok music videos endpoint cost?
Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth. Each paginated page is a separate billed request.
How does pagination work on TikTok music videos?
When data.page.hasMore is true, pass data.page.nextCursor as the cursor query param on the next request. Keep the same clipId across pages. The cursor is opaque.
What does each music-clip video row include?
The same shape as profile feed rows: id, caption, createdAt, url, thumbnailUrl, durationMs, pinned, isAd, stats (views, likes, comments, shares, saves), and media download URLs. Optional details may carry extra TikTok-native fields that are not duplicated at the top level.
Why is data.videos empty for a clipId that looks valid?
This route has no lookupStatus. An empty array can mean no public videos use this music clip, or other cases. Do not treat an empty list as a hard "clip not found" signal without additional checks.
How is this different from song metadata, profile videos, or keyword search?
This route pages posts that reuse one music clip id. GET /v1/tiktok/songs returns metadata for one sound. GET /v1/tiktok/profiles/{handle}/videos pages a creator's feed by handle. GET /v1/tiktok/search is free-text keyword discovery. Use music videos when the sound is the join key for the post list.
Do I need TikTok OAuth to list videos for a sound?
No. You authenticate to Social Fetch with an API key. The route reads public music-clip video data; it does not act on behalf of a logged-in TikTok user.
Other TikTok endpoints
- ProfileGET /v1/tiktok/profiles/{handle}
- Profile videosGET /v1/tiktok/profiles/{handle}/videos
- Profile followersGET /v1/tiktok/profiles/{handle}/followers
- Profile followingGET /v1/tiktok/profiles/{handle}/following
- Profile regionGET /v1/tiktok/profiles/{handle}/region
- Profile audienceGET /v1/tiktok/profiles/{handle}/audience
- Profile engagementGET /v1/tiktok/profiles/{handle}/engagement
- Live streamGET /v1/tiktok/profiles/{handle}/live