tiktok.videos
entity · one row = one video, latest stats
Videos with caption, hashtags, sound, ad / branded / shop / AI flags and engagement.
- Coverage: Not every TikTok video: the videos of tracked creators (and later the top videos of moving sounds). creator_priority shows coverage.
- Refresh: Hourly, changed months only; stats at most ~6 h old while a video is being tracked.
- Sorted by
country, posted_at, video_id. Filters on the leading columns are fastest.
Example
Section titled “Example”SELECT *FROM tiktok.videosLIMIT 100Columns
Section titled “Columns”| Column | Type | Description |
|---|---|---|
video_id |
UInt64 |
|
creator_id |
UInt64 |
|
posted_at |
DateTime |
|
country |
LowCardinality(String) |
|
language |
LowCardinality(String) |
‘un’ = undetermined |
type |
LowCardinality(String) |
‘video’ | ‘photo’ |
duration_ms |
UInt32 |
0 on photos |
image_count |
UInt8 |
photos only |
width |
UInt16 |
|
height |
UInt16 |
|
caption |
String |
|
hashtags |
Array(String) |
|
hashtag_ids |
Array(UInt64) |
parallel to hashtags |
mentions |
Array(UInt64) |
creator_ids |
on_screen_text |
Array(String) |
|
sound_id |
UInt64 |
|
is_ad |
UInt8 |
paid promotion (Spark Ads) |
branded_content |
LowCardinality(String) |
‘’ | ‘paid_partnership’ | ‘shop_affiliate’ |
product_id |
UInt64 |
0 = none seen |
is_shop_video |
UInt8 |
|
seller_id |
UInt64 |
|
is_ai_generated |
Nullable(UInt8) |
NULL = TikTok did not say |
not_recommended |
Nullable(UInt8) |
|
sound_muted |
UInt8 |
audio removed for copyright |
views |
UInt64 |
|
likes |
UInt64 |
|
comments |
UInt64 |
|
shares |
UInt64 |
|
saves |
UInt64 |
|
downloads |
UInt64 |
|
engagement_rate |
Nullable(Float32) |
(likes + comments + shares + saves) / views; NULL when views = 0. |
creator_priority |
UInt8 |
the creator’s priority now |
stats_updated_at |
DateTime |
when these stats were read |
refreshed_at |
DateTime |