TikTok Song Details API
TikTok sound metadata — usageCount, artists[{id,secUid,handle}], audio{bpm,loudness,beats}, commerce rights (1 credit; 2 via the fallback path).
Paste a TikTok music/sound URL and get the sound as clean JSON. id is the music id from the URL, kept as a string end to end — never a JS number (19-digit TikTok ids sit past Number.MAX_SAFE_INTEGER and silently round). title, author, artistId/authorSecUid, artists[{id,uid,secUid,handle,displayName,verified,avatarUrl}] (null when unknown — never [] meaning “we know there are none”; a name-only artist is lifted from author when TikTok ships no uid). durationSeconds, coverUrl (canonical cover art; size variants live under raw.cover), playUrl, mediaUrlsExpireAt. playUrl on this surface is typically unsigned (no x-expires, no hex path stamp) and does not expire — mediaUrlsExpireAt stays null then, which is correct; when coverUrl carries x-expires (~48h) the field is that stamp. usageCount (videos using the sound) with usageCountIsApproximate (true on display-rounded totals; null when usageCount is null — never false about a missing count). createdAt, isExplicit/hasLyrics when present, and isOriginalSound. The differentiator: audio{bpm,loudnessLufs,amplitudePeak,beats,strongBeatUrl} — TikTok's own audio analysis when exposed (this is not a play URL). Commerce: isCommerceMusic, hasCommerceRight, commercialRightType decoded to none/commercial/licensed. Label tracks add matchedSong and musicReleaseInfo. Every 200 ships source (native/extended) and timings. Resilience: a transient TikTok mobile-API blip is retried in-request before the fallback path runs, and if the extended row comes back as a mostly-null shell (title but no author, cover or usage count) the native path is tried once more after the fallback's natural delay — so a 40s wait no longer ends in a shell of nulls. Pair with Music Posts to list videos on the sound. 1 credit when served natively; 2 credits when served via the fallback path (source: extended, may take longer) — in the last 30 days 38 of 43 calls were served that way and billed 2.
Request
- Base URL: https://api.captapi.com
- URL: https://api.captapi.com/v1/tiktok/song-details
- Auth: one of:
- HTTP bearer
- API key in header X-API-Key
Query parameters
TikTok music/sound URL, e.g. https://tiktok.com/music/name-ID. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble.
Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh.
Response
Success. The data object for this endpoint.
Changes
No recorded changes to this operation across all 3 revisions of this API.