CoolFace
Datasetpublic

khursanirevo/tiktok-videos-sea

TikTok Videos Southeast Asia (MY / TH / ID / SG) Country-filtered subset of kuben-developer/tiktok-videos-4b: every row whose country field is MY (Malaysia), TH (Thailand), ID (Indonesia) or SG (Singapore). Extracted 2026-09-07 from all 27 source parquet files; schema unchanged. Sizes (verified against the uploaded files) Config Country Rows Distinct content_id Ads (is_ad=1) With caption my Malaysia 11,729,283 11,729,283 967,782 9,787,874 th Thailand… See the full description on the dataset page: https://huggingface.co/datasets/khursanirevo/tiktok-videos-sea.

sourceHugging Faceotherupdated 21d agoView on Hugging Face
0likes223downloads
Dataset Card

TikTok Videos Southeast Asia (MY / TH / ID / SG)

Country-filtered subset of kuben-developer/tiktok-videos-4b: every row whose country field is MY (Malaysia), TH (Thailand), ID (Indonesia) or SG (Singapore). Extracted 2026-09-07 from all 27 source parquet files; schema unchanged.

Sizes (verified against the uploaded files)

ConfigCountryRowsDistinct `content_id`Ads (`is_ad=1`)With caption
myMalaysia11,729,28311,729,283967,7829,787,874
thThailand17,358,99217,358,9921,110,84214,737,787
idIndonesia63,388,32363,388,3233,240,85951,567,161
sgSingapore2,735,4582,735,458120,1332,301,750
Total95,212,056

Columns

Identical to the source dataset. One row per video.

ColumnTypeDescription
content_iduint64TikTok's video ID. Unique across the dataset
create_timedatetimeWhen the video was posted
descstringThe caption, as written by the creator
mentionslist[uint64]Account IDs tagged in the video
durationuint16Length in seconds
is_videouint81 = video, 0 = photo post
music_iduint64Join key across videos using the same sound
music_titlestringTitle of the sound
viewsuint64View count at crawl time
likesuint64Like count at crawl time
commentsuint64Comment count at crawl time
sharesuint64Share count at crawl time
savesuint64Save count at crawl time
countrystringTwo-letter country code (TikTok's own label)
languagestringLanguage code (TikTok's own label)
is_aduint81 = sponsored content

Usage

python
from datasets import load_dataset

# one country at a time
ds = load_dataset("khursanirevo/tiktok-videos-sea", "id", split="train")

# or query locally with DuckDB across all countries
import duckdb
duckdb.sql("""
  SELECT country, count(*) AS videos, sum(views) AS plays
  FROM read_parquet('**/*.parquet')
  GROUP BY 1 ORDER BY plays DESC
""").show()

Engagement counts are a single snapshot, not a time series — normalize by video age (create_time vs the Aug/Sep 2025 crawl window) before comparing videos. Rows are grouped by creator in the source; shuffle before training.

Known limitations

  • —country and language are TikTok's own inferred labels; the source card states they are wrong often enough that they must not be treated as ground truth.
  • —No creator ID, no media URLs.
  • —The source is a sample of 27 of 32 storage partitions, not a full census.

Licence and responsible use

Released for research and educational use, same as the source.

Captions are written by real people and this dataset is personal data under GDPR, the UK GDPR and CCPA regardless of the fact that it was publicly posted. If you are in a jurisdiction those apply to, that obligation is yours the moment you download it. Do not use this to identify, profile, target or contact individuals.

Collection was contrary to TikTok's terms of service. This dataset is not affiliated with, endorsed by, or connected to TikTok or ByteDance, nor with the creators whose public posts are included.

If you are named in this data and want your rows removed, open a discussion on this repository.

Attribution

Filtered from kuben-developer/tiktok-videos-4b (4.5B rows, ~289 GB). Extraction script: extract_sea.py in this project — DuckDB read_parquet over the source's HTTPS parquet URLs with predicate pushdown on country, one zstd parquet per country.