Skip to content

tiktok.sounds

entity · one row = one sound

Every sound seen on a video: title, artist, owner, originality, commercial rights, TikTok matching, Spotify/Apple ids, video count.

  • Coverage: Target ~1.5B sounds. ~26% of licensed commercial tracks never resolve and have no video count (is_retired).
  • Refresh: After each daily sound pass; at most ~1 day old.
  • Sorted by sound_id. Filters on the leading columns are fastest.
SELECT *
FROM tiktok.sounds
LIMIT 100
Column Type Description
sound_id UInt64
title String
artist String
album String
created_at DateTime
duration_s UInt16 SECONDS (videos are ms)
language LowCardinality(String) ‘English’, ‘non_vocal’, …
owner_creator_id UInt64 original sounds only
owner_username String
owner_nickname String
is_original UInt8 made on TikTok by a creator
is_official UInt8 is_pgc: a label/distributor upload
is_commercial UInt8 cleared for business use
is_commercial_strict UInt8
has_custom_title UInt8 TikTok’s own “the creator gave it a name” signal for originals. The strongest artist-discovery filter measured (median 28k videos vs 1).
has_vocals Nullable(UInt8) NULL = TikTok did not say
has_strong_beat UInt8
has_lyrics UInt8
theme_tags Array(LowCardinality(String))
matched_type LowCardinality(String) How TikTok matched the audio: ‘not_found’ | ‘fingerprint’ | ‘pgc’. For finding UNDISCOVERED artists, a match is a NEGATIVE signal.
matched_song_title String
matched_song_artist String
spotify_id String dsp platform 3
apple_music_id String dsp platform 1
origin_video_id UInt64 the video an original was lifted from
sim_group_id UInt64 TikTok’s “same audio” cluster; use it to avoid double counting re-uploads
loudness_lufs Nullable(Float32) NULL = not measured
cover_uri String
play_url String unsigned mp3, does not expire
video_count UInt32 videos using it (TikTok’s user_count)
video_count_date Date when that was read
priority UInt8 1 = video_count > 3 (daily), else 2
is_retired UInt8 never resolves in bulk (3 misses)
first_seen DateTime
refreshed_at DateTime