LurkAPI
Docs · Song

Song

A TikTok sound: title, artist, album, length, cover, audio URL and how many videos use it.

1 credit per callFresh within 1 hourMCP tool: tiktok_song
GEThttps://api.lurkapi.com/v1/tiktok/song

Example responseView as markdown

When to use this

Use it to size up a sound before you build content on it: videoCount is how many posts use it. original: true means a creator's original sound rather than a released track, and is_commerce_music is TikTok's flag for sounds cleared for commercial use (the ones business accounts can pick). Get the id from any video's music.id, or pass the sound's tiktok.com/music/… URL.

Unknown and removed sounds return 404 not_found.

Parameters

All parameters go in the query string.

ParameterDescription
clipId
stringrequired
The sound's id, e.g. 7433619007506761744, or its URL (https://www.tiktok.com/music/…-<id>). Every video carries it as music.id.
Example
7433619007506761744

Example request

Replace YOUR_API_KEY with your key, or set LURKAPI_KEY for the code. Get a free key.

Language

Example response

A real response from this endpoint, captured from the live API and trimmed to a couple of items. Strings over 96 characters (mostly signed media URLs) are cut short and end in ….

Show the example response (1 KB)
{
  "success": true,
  "credits_remaining": 99955,
  "credits_charged": 1,
  "id": "7433619007506761744",
  "url": "https://www.tiktok.com/music/Morning-Brew-Jazz-7433619007506761744",
  "title": "Morning Brew Jazz",
  "authorName": "NonLeo",
  "album": "Morning Brew Jazz",
  "original": false,
  "duration": 265,
  "cover": "https://p16-common.tiktokcdn-us.com/tos-alisg-v-2774/oAJSAyArAD0EpAPixgA…",
  "playUrl": "https://sf16.tiktokcdn-us.com/obj/tos-alisg-ve-2774/ocKlBfzUWiBoMThA1QzwiAapIOsMBFDSsAAEcS",
  "videoCount": 31300,
  "isCopyrighted": false,
  "is_commerce_music": true,
  "author": null
}

Response fields

Every field of a successful response. [] marks a list: a[].b is the b of each item in a. nullable fields can be null; optional fields can be missing.

Show all 21 fields
FieldTypeDescription
successtrueAlways true here; errors have success: false.
credits_remainingnumberYour balance after this call. On anonymous playground calls: free tries left today.
credits_chargednumberCredits this call cost; 0 on free endpoints. On anonymous playground calls: tries used (1).
idstringSound id.
urlstringThe sound's page on tiktok.com.
titlestringSound title, e.g. original sound or the track name.
authorNamestringnullableArtist, or the creator's display name for original sounds.
albumstringnullableAlbum of a released track; null for original sounds and when TikTok doesn't say.
originalbooleanAn original sound a creator made, rather than a released track.
durationnumbernullableLength in seconds (for tracks, the clip TikTok offers); null if unknown.
coverstringnullableCover art URL (may expire after a few days); null if TikTok has none.
playUrlstringnullableAudio URL (may expire after a few hours); null if TikTok has none.
videoCountnumberPosts using this sound.
isCopyrightedbooleanTikTok marks the sound as copyrighted.
is_commerce_musicbooleanTikTok's commercial-use flag: cleared for business accounts and ads.
authorobjectnullableThe TikTok account behind the sound: its creator for original sounds, the artist's account for tracks; null if none.
author.idstringNumeric user id.
author.uniqueIdstringUsername (handle), without @.
author.nicknamestringDisplay name.
author.secUidstringTikTok's long, stable user id.
author.avatarThumbstringnullableSmall avatar URL (expires after a few days); null if TikTok has none.

Caching and freshness

Responses are cached for up to 1 hour, so a repeat call within that window can return the same data. It still costs 1 credit.

Errors

Errors return { success: false, error, code, docs } with the HTTP status below. Validation errors, 401/402/429 rejections and 5xx failures are free; not_found is charged (how charging works). All error codes.

StatusCodeMeaning
401missing_api_keyNo API key. Send it in the x-api-key header.
401invalid_api_keyThe key is unknown or was revoked.
402insufficient_creditsNot enough credits for this call. Buy a pack or wait for tomorrow's top-up.
404not_foundThe endpoint, or the thing you asked for (ad, post, subreddit), doesn't exist. Charged when the platform was checked.
405method_not_allowedEndpoints take GET with query params.
429rate_limitedToo many calls at once. Wait for the retry-after seconds, then retry.
500internal_errorSomething broke on our side. Retry; 5xx errors are free.
502upstream_errorThe platform didn't give a usable answer. Retry; 5xx errors are free.
503upstream_busyAll our connections to the platform are busy. Retry in a few seconds; 5xx errors are free.
504upstream_timeoutThe platform took over 30 seconds to answer. Retry; timeouts are free.

Use it in Claude

Once LurkAPI is connected to Claude, this endpoint is the tiktok_song tool. Ask in plain English, for example:

Ask Claude
Use LurkAPI's tiktok_song with clipId "7433619007506761744" and summarize what you find.

Claude calls tiktok_song with arguments like these, and each call costs 1 credit:

Tool arguments
{
  "clipId": "7433619007506761744"
}

Tool results skip nulls and empty lists to save tokens.