Telegram: @hashfunction_dev X: @hashfunction Email: hashfunction.dev@gmail.com
| Column | Type | Notes |
|---|---|---|
video_id | UInt64 | tiktok.com/@_/video/{video_id} |
posted_at | DateTime | UTC |
country | String | region TikTok gives the video |
language | String | un = undetermined |
type | String | video or photo |
duration_ms | UInt32 | 0 on photos |
image_count | UInt8 | photo posts |
width, height | UInt16 | pixels |
caption | String | |
hashtags, hashtag_ids | Array | lower-case, parallel arrays |
mentions | Array(UInt64) | creator_ids |
on_screen_text | Array(String) | text stickers |
sound_id | UInt64 | 0 = none |
is_ad | UInt8 | Spark Ads |
branded_content | String | paid_partnership, shop_affiliate or empty |
product_id, seller_id | UInt64 | TikTok Shop; 0 = none |
is_shop_video | UInt8 | |
is_ai_generated | UInt8, nullable | null = TikTok did not say |
not_recommended_for_fyp | UInt8, nullable | TikTok keeps it off the For You page |
sound_muted | UInt8 | audio removed for copyright |
views, likes, comments, shares, saves, downloads | UInt64 | as of stats_updated_at |
engagement_rate | Float32, nullable | (likes+comments+shares+saves) / views |
stats_updated_at | DateTime | UTC |
Older videos come from an archive: some fields are 0 or null there (size, downloads, AI flag), and duration is rounded to the second.
CC BY-NC 4.0: free for research and personal use. Commercial use, creator profiles and daily updates: datasocial.ai.