WorkspaceDataset

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

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.

Videos with a usable figure at each day
DayVideos with a usable figure
Day 799,230
Day 1494,531
Day 2193,949
Day 3094,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.
Identifiers
ColumnTypeMeaningSource and derivationEmpty
video_idstringYouTube video ID. The video is at youtube.com/watch?v=<video_id>.YouTube API videos.list id.0%
channel_idstringYouTube channel ID of the uploader.YouTube API videos.list snippet.channelId.0%
channel_titlestringThe channel's display name.YouTube API channels.list snippet.title, as first collected.0%
Video
ColumnTypeMeaningSource and derivationEmpty
published_attimestamp (UTC)When the video was published.YouTube API videos.list snippet.publishedAt.0%
titlestringVideo title.YouTube API videos.list snippet.title, as first collected. See title_changed.0%
tagsstringUploader's tags, separated by |. Empty when the video has none.YouTube API videos.list snippet.tags, joined with |.0%
category_idstringYouTube category number.YouTube API videos.list snippet.categoryId.0%
category_namestringYouTube 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_secondsnumberLength in seconds. Empty when YouTube reports no usable duration.YouTube API videos.list contentDetails.duration, converted from ISO 8601.3.6%
is_shortbooleanWhether 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_verticalbooleanWhether 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_broadcastbooleanWhether the video is a live broadcast (YouTube reports its duration as zero).Computed by us contentDetails.duration equals P0D.0%
definitionstringhd or sd.YouTube API videos.list contentDetails.definition.0%
captionbooleanWhether the uploader added captions.YouTube API videos.list contentDetails.caption.0%
made_for_kidsbooleanWhether the video is marked as made for kids.YouTube API videos.list status.madeForKids.0%
default_audio_languagestringSpoken language the uploader set, as a language code. Often empty.YouTube API videos.list snippet.defaultAudioLanguage.6.7%
default_languagestringLanguage of the title and description the uploader set, as a language code.YouTube API videos.list snippet.defaultLanguage.0%
description_lengthintegerNumber 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_categoriesstringThe channel's topics, as Wikipedia URLs separated by |.YouTube API channels.list topicDetails.topicCategories.0.6%
Channel when the video was published
ColumnTypeMeaningSource and derivationEmpty
ch_subs_at_publishintegerChannel subscribers.Our collection From our channel snapshot taken at or most recently before published_at.0%
ch_views_at_publishintegerChannel total views.Our collection Same snapshot as ch_subs_at_publish.0%
ch_videos_at_publishintegerNumber of videos on the channel.Our collection Same snapshot as ch_subs_at_publish.0%
channel_age_days_at_publishnumberDays between the channel's creation and the video's publication.Computed by us published_at minus channels.list snippet.publishedAt.0%
ch_stats_as_oftimestamp (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%
Day 7
ColumnTypeMeaningSource and derivationEmpty
d7_viewsintegerTotal views at day 7.Our collection From our poll nearest to 168 hours after published_at.30.4%
d7_likesintegerTotal likes at day 7. Empty when likes are hidden.Our collection Same poll as d7_views.31.7%
d7_commentsintegerTotal comments at day 7. Empty when comments are off.Our collection Same poll as d7_views.31.2%
d7_hours_offnumberHow 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%
Day 14
ColumnTypeMeaningSource and derivationEmpty
d14_viewsintegerTotal views at day 14.Our collection From our poll nearest to 336 hours after published_at.33.7%
d14_likesintegerTotal likes at day 14. Empty when likes are hidden.Our collection Same poll as d14_views.34.9%
d14_commentsintegerTotal comments at day 14. Empty when comments are off.Our collection Same poll as d14_views.34.5%
d14_hours_offnumberHow 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%
Day 21
ColumnTypeMeaningSource and derivationEmpty
d21_viewsintegerTotal views at day 21.Our collection From our poll nearest to 504 hours after published_at.34.1%
d21_likesintegerTotal likes at day 21. Empty when likes are hidden.Our collection Same poll as d21_views.35.2%
d21_commentsintegerTotal comments at day 21. Empty when comments are off.Our collection Same poll as d21_views.35%
d21_hours_offnumberHow 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%
Day 30
ColumnTypeMeaningSource and derivationEmpty
d30_viewsintegerTotal views at day 30.Our collection From our poll nearest to 720 hours after published_at.34%
d30_likesintegerTotal likes at day 30. Empty when likes are hidden.Our collection Same poll as d30_views.35%
d30_commentsintegerTotal comments at day 30. Empty when comments are off.Our collection Same poll as d30_views.34.9%
d30_hours_offnumberHow 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%
Edits after publishing
ColumnTypeMeaningSource and derivationEmpty
title_changedbooleanWhether a later poll saw a different title from the one in this file.Our collection Compared on every poll.0%
description_changedbooleanWhether 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) ≤ 12 and dN_views present.
  • 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_at plus 5 hours 30 minutes.
  • Tag count: the number of |-separated entries in tags.
  • Thumbnail: https://i.ytimg.com/vi/<video_id>/hqdefault.jpg.
  • Rows we modelled: not a live broadcast, and duration_seconds present.

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_changed marks 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.