Open data
The ViewCastLK dataset
Sri Lankan YouTube videos with their channel's figures at the moment of publishing and their views, likes and comments at days 7, 14, 21 and 30. Every column is described below, with where it came from.
- Videos
- 142,651
- Sri Lankan channels
- 2,590
- Columns
- 42
- Published
- 2 July 2026 to 1 October 2026
sha256 820ef676cd057315…CSV (gzip)viewcastlk_dataset_20261001.csv.gz27.6 MBsha256 32e90119ed01334a…01
Collection
Where the data comes from
Every video published by a tracked Sri Lankan channel was picked up within hours of going live, then polled four times a day through the YouTube Data API until day 30. Channels count as Sri Lankan when their YouTube profile declares Sri Lanka as their country.
The channel figures in each row are the ones from just before the video was published, so the table can be used to predict a video's views from what was known at the time without the result leaking in.
02
Labels
Reading the day-7 to day-30 columns
Day N is the poll nearest to exactly N × 24 hours after the video was published. Polls drift and collection sometimes paused, so each day carries dN_hours_off: how far that poll was from the mark. Use a day's figures only when it is within ±12 hours and dN_views is present.
| Day | Videos with a usable figure |
|---|---|
| Day 7 | 99,230 |
| Day 14 | 94,531 |
| Day 21 | 93,949 |
| Day 30 | 94,213 |
03
Data dictionary
Every column
- YouTube API returned by the YouTube Data API, stored as it came.
- Our collection observed by our own polling, four times a day.
- Computed by us derived by us from other fields, by the rule shown.
| Column | Type | Meaning | Source and derivation | Empty |
|---|---|---|---|---|
video_id | string | YouTube video ID. The video is at youtube.com/watch?v=<video_id>. | YouTube API videos.list id. | 0% |
channel_id | string | YouTube channel ID of the uploader. | YouTube API videos.list snippet.channelId. | 0% |
channel_title | string | The channel's display name. | YouTube API channels.list snippet.title, as first collected. | 0% |
| Column | Type | Meaning | Source and derivation | Empty |
|---|---|---|---|---|
published_at | timestamp (UTC) | When the video was published. | YouTube API videos.list snippet.publishedAt. | 0% |
title | string | Video title. | YouTube API videos.list snippet.title, as first collected. See title_changed. | 0% |
tags | string | Uploader's tags, separated by |. Empty when the video has none. | YouTube API videos.list snippet.tags, joined with |. | 0% |
category_id | string | YouTube category number. | YouTube API videos.list snippet.categoryId. | 0% |
category_name | string | YouTube category name. | Computed by us Looked up from YouTube's category list for Sri Lanka. That list leaves out category 29, which we fill in as Nonprofits & Activism. | 0% |
duration_seconds | number | Length in seconds. Empty when YouTube reports no usable duration. | YouTube API videos.list contentDetails.duration, converted from ISO 8601. | 3.6% |
is_short | boolean | Whether the video is a YouTube Short. | Computed by us The API has no Shorts flag. True when the player is vertical or square and the video is at most 180 seconds. Where the player shape is unknown (is_vertical empty), true when the video is at most 60 seconds. | 0% |
is_vertical | boolean | Whether the video player is taller than or as tall as it is wide. Empty when the shape could not be read. | Our collection Embed width and height from YouTube's oEmbed endpoint. | 2.8% |
is_live_broadcast | boolean | Whether the video is a live broadcast (YouTube reports its duration as zero). | Computed by us contentDetails.duration equals P0D. | 0% |
definition | string | hd or sd. | YouTube API videos.list contentDetails.definition. | 0% |
caption | boolean | Whether the uploader added captions. | YouTube API videos.list contentDetails.caption. | 0% |
made_for_kids | boolean | Whether the video is marked as made for kids. | YouTube API videos.list status.madeForKids. | 0% |
default_audio_language | string | Spoken language the uploader set, as a language code. Often empty. | YouTube API videos.list snippet.defaultAudioLanguage. | 6.7% |
default_language | string | Language of the title and description the uploader set, as a language code. | YouTube API videos.list snippet.defaultLanguage. | 0% |
description_length | integer | Number of characters in the description. 0 when there is none. | Computed by us Length of videos.list snippet.description. The description itself is not included. | 0% |
topic_categories | string | The channel's topics, as Wikipedia URLs separated by |. | YouTube API channels.list topicDetails.topicCategories. | 0.6% |
| Column | Type | Meaning | Source and derivation | Empty |
|---|---|---|---|---|
ch_subs_at_publish | integer | Channel subscribers. | Our collection From our channel snapshot taken at or most recently before published_at. | 0% |
ch_views_at_publish | integer | Channel total views. | Our collection Same snapshot as ch_subs_at_publish. | 0% |
ch_videos_at_publish | integer | Number of videos on the channel. | Our collection Same snapshot as ch_subs_at_publish. | 0% |
channel_age_days_at_publish | number | Days between the channel's creation and the video's publication. | Computed by us published_at minus channels.list snippet.publishedAt. | 0% |
ch_stats_as_of | timestamp (UTC) | When the channel snapshot above was taken. | Our collection If it is after published_at, no snapshot predated the video and the earliest one was used instead, so the channel figures include some growth after publication. | 0% |
| Column | Type | Meaning | Source and derivation | Empty |
|---|---|---|---|---|
d7_views | integer | Total views at day 7. | Our collection From our poll nearest to 168 hours after published_at. | 30.4% |
d7_likes | integer | Total likes at day 7. Empty when likes are hidden. | Our collection Same poll as d7_views. | 31.7% |
d7_comments | integer | Total comments at day 7. Empty when comments are off. | Our collection Same poll as d7_views. | 31.2% |
d7_hours_off | number | How far that poll was from the exact day-7 mark, in hours. Positive means after the mark. | Computed by us Poll time minus (published_at + 168 hours). Use the day-7 figures only when this is within ±12 and d7_views is present. | 30.4% |
| Column | Type | Meaning | Source and derivation | Empty |
|---|---|---|---|---|
d14_views | integer | Total views at day 14. | Our collection From our poll nearest to 336 hours after published_at. | 33.7% |
d14_likes | integer | Total likes at day 14. Empty when likes are hidden. | Our collection Same poll as d14_views. | 34.9% |
d14_comments | integer | Total comments at day 14. Empty when comments are off. | Our collection Same poll as d14_views. | 34.5% |
d14_hours_off | number | How far that poll was from the exact day-14 mark, in hours. Positive means after the mark. | Computed by us Poll time minus (published_at + 336 hours). Use the day-14 figures only when this is within ±12 and d14_views is present. | 33.7% |
| Column | Type | Meaning | Source and derivation | Empty |
|---|---|---|---|---|
d21_views | integer | Total views at day 21. | Our collection From our poll nearest to 504 hours after published_at. | 34.1% |
d21_likes | integer | Total likes at day 21. Empty when likes are hidden. | Our collection Same poll as d21_views. | 35.2% |
d21_comments | integer | Total comments at day 21. Empty when comments are off. | Our collection Same poll as d21_views. | 35% |
d21_hours_off | number | How far that poll was from the exact day-21 mark, in hours. Positive means after the mark. | Computed by us Poll time minus (published_at + 504 hours). Use the day-21 figures only when this is within ±12 and d21_views is present. | 34.1% |
| Column | Type | Meaning | Source and derivation | Empty |
|---|---|---|---|---|
d30_views | integer | Total views at day 30. | Our collection From our poll nearest to 720 hours after published_at. | 34% |
d30_likes | integer | Total likes at day 30. Empty when likes are hidden. | Our collection Same poll as d30_views. | 35% |
d30_comments | integer | Total comments at day 30. Empty when comments are off. | Our collection Same poll as d30_views. | 34.9% |
d30_hours_off | number | How far that poll was from the exact day-30 mark, in hours. Positive means after the mark. | Computed by us Poll time minus (published_at + 720 hours). Use the day-30 figures only when this is within ±12 and d30_views is present. | 34% |
| Column | Type | Meaning | Source and derivation | Empty |
|---|---|---|---|---|
title_changed | boolean | Whether a later poll saw a different title from the one in this file. | Our collection Compared on every poll. | 0% |
description_changed | boolean | Whether a later poll saw a different description. | Our collection Compared by fingerprint on every poll. | 0% |
04
Left out
Columns you can rebuild
Anything that can be recomputed exactly from the columns above was left out. To get it back:
- Usable label:
abs(dN_hours_off) ≤ 12anddN_viewspresent. - Channel figures recorded after publishing:
ch_stats_as_of > published_at. No snapshot predated these videos, so the earliest one was used. - Sri Lanka time:
published_atplus 5 hours 30 minutes. - Tag count: the number of
|-separated entries intags. - Thumbnail:
https://i.ytimg.com/vi/<video_id>/hqdefault.jpg. - Rows we modelled: not a live broadcast, and
duration_secondspresent.
05
Caveats
Before you use it
- View counts are worldwide. YouTube does not say how many came from Sri Lanka.
- A Shorts view is counted every time a Short starts or replays, a looser count than for regular videos, so the two are not directly comparable.
- It covers three months, so festivals and other seasonal effects are not represented.
- Titles and channel names are as first collected.
title_changedmarks videos whose title was later edited. - Likes are empty when the uploader hides them, and comments when they are turned off.
06
Citation
Using the dataset
Our columns and labels are released under CC BY 4.0. Titles, tags and other uploaded text belong to their creators. Please cite it as:
Ahamed M.J.S., Ahamed M.U.A. and Ahmedh M.R.R. ViewCastLK: Sri Lankan YouTube viewership dataset, release dataset-2026-10-01. University of Moratuwa, 2026.
Release built 2 October 2026.