Public data · no login, no JavaScript needed

Nightcore Tracker

Public data guide

Where Nightcore Tracker's public data lives and what it means: the manifest, dated ranking snapshots, discovery editions, channels and the RSS feed, with field meanings, units, null handling, time zone, cutoff, coverage and completeness status.

Everything below is plain JSON or XML served next to the pages, generated once a day from public YouTube counters. Only these minimized public fields are published; the tracker's database, credentials and private endpoints are never exposed. Relative paths resolve against the site URL https://tracker.nightcore.com/, which the manifest also names.

Conventions

Files

PathContentsChanges
data/manifest.jsonLatest date, published dates and their snapshot hashesEvery build
data/YYYY-MM-DD.jsonFull ranking snapshot of one date (four charts)Never, once published
data/channels.jsonChannels shown on the channels page, for the latest dateEvery build
data/editions/index.jsonEvery discovery edition with its page, file, hash and absolute URLEvery build (entries are only added)
data/editions/YYYY-MM-DD.jsonDiscovery edition of one date: Breakout songs and Breakout channels (Rising channels in schema version 1)Never, once published
feed.xmlRSS 2.0 feed of the newest 30 editionsEvery build

Each human-readable edition lives at editions/YYYY-MM-DD.html; discover.html always shows the latest one.

data/manifest.json (schema_version 1)

FieldTypeMeaning
schema_versionintegerManifest format version.
timezonestringAlways Europe/Madrid.
site_urlstringCanonical site URL, ending in a slash; relative paths resolve against it.
latestdateNewest published ranking date; always available.
history_daysintegerNumber of consecutive dates listed in dates.
run_idstring or nullCollection run of the latest date; null when it is unverified.
data_idstringFirst 16 hex characters of the latest snapshot's SHA-256.
dates[]arrayNewest first. Available dates have date, available: true, file and sha256; unavailable ones have date, available: false and reason (no_data, insufficient_history or collection_unverified).

data/YYYY-MM-DD.json (schema_version 3)

FieldTypeMeaning
schema_versionintegerSnapshot format version: 3. Older snapshots stay valid and are never rewritten: 1 (three charts, before Rising channels existed) and 2 (Rising channels instead of Breakout channels, and Breakout songs ranked by seven-day growth with breakout_min_start_views, breakout_min_views_gained, rising_channels_min_start_views and rising_channels_metric in methodology).
timezonestringAlways Europe/Madrid.
ranking_datedateThe ranking date D.
data_as_ofUTC timestampData cutoff for D.
window_days, windowinteger, objectSeven-day window: start_date = D minus window_days, end_date = D.
collection_runobjectid (string or null) and verified (boolean); see Completeness.
methodologyobjectParameters and metric identifiers used for D: breakout_metric (views_vs_channel_norm), breakout_min_views, breakout_min_lift, breakout_smoothing_views, breakout_launch_days, breakout_per_channel, breakout_channels_metric (young_channel_gain_x_growth), breakout_channel_max_age_days, breakout_channel_min_start_views, channel_metric, content_scope, tolerance_hours and max_window_shift_hours (a window off by more than tolerance_hours but at most max_window_shift_hours from seven days is scaled to a seven-day rate).
coverageobjectCounts for D: channels, channels_measured, videos, videos_measured, new_uploads, excluded_shorts, negative_corrections.
summaryobjectentered (per chart, null without a comparable previous day) and biggest_climber (or null).
new_channelsarray (optional)Up to 10 monitored channels ordered by YouTube creation timestamp descending, then public channel ID. Fields: rank, channel_id, name, url, avatar_url (or null), youtube_created_at (UTC). No view, subscriber or observation-history threshold. Missing creation dates and dates after D are excluded. Absent in older immutable snapshots; an empty list means no eligible channels. Creation dates are shown in UTC. The homepage New channels list is refreshed independently from current database metadata on every build and does not change with the ranking date; snapshot entries describe historical metadata only.
rankingsobjectgrowth (Breakout songs), breakout_channels (Breakout channels; null when no channel week can be formed), songs (Top songs) and channels (Top channels): ranked lists of at most 10 entries.

Song entries: rank, video_id, title, channel_id, channel_name, url, thumbnail_url, published_on (date or null), views (end counter), views_start, views_gained, growth_pct (null only with a zero baseline), observed_start and observed_end (UTC or null), movement (kind: up, down, same, new_upload, entry or unavailable; previous_rank). Channel entries: rank, channel_id, name, url, avatar_url (or null), views, views_start, views_gained, growth_pct, subscribers (on D, or null), observed_start, observed_end and movement. Channel figures use the channel's total YouTube view counter, which also counts Shorts and uploads that are not monitored.

Breakout songs (growth) add: phase (launch, in the first breakout_launch_days days after upload, or catalog), age_days (days since upload), measured_views (a launch's views so far; a catalog song's seven-day gain with every daily gain capped at three times the median daily gain), expected_views (what the song's own channel usually gets: for a launch, the upper quartile of the views at the same age of its last ten uploads; for a catalog song, the larger of the channel's usual week for songs of its age and 0.85 times the song's own previous week), above_expected_pct (100 * ((measured_views + A) / (expected_views + A) - 1) with A = breakout_smoothing_views, rounded like growth_pct) and score (the ranking order, descending, then video_id). views_start, views_gained, growth_pct and observed_start are null for a launch without a seven-day baseline. At most breakout_per_channel songs per channel. Breakout channels add first_upload_on (the channel's first monitored long-form upload, at most breakout_channel_max_age_days before D) and top_song (video_id, title, url, thumbnail_url and views_gained of its song with the most views gained in the window, or null); they are ordered by views_gained squared divided by views_start, that is the square root of views gained times growth, then views_gained and channel_id.

data/channels.json (schema_version 2)

snapshot_date (the manifest's latest date), timezone, collection_run, selection (metric, limit per aquarium, activity_window_days) and two groups, active and inactive, each with eligible_count and channels (channel_id, name, url, avatar_url or null, views, views_date, subscribers or null), ordered by views and then channel_id. A channel is inactive when every stored upload has a known publication date older than activity_window_days before snapshot_date; every other monitored channel is active, and no channel is in both groups. Active channels use the counters observed on snapshot_date (views_date equals it); inactive channels are only collected weekly, so they use their newest counters on or before it, and views_date says which day the views are from. It always describes the latest date only.

data/editions/YYYY-MM-DD.json (schema_version 2)

FieldTypeMeaning
edition_date, pagedate, pathRanking date and its permanent page.
data_as_of, window_days, window, timezoneas in the snapshotCutoff and observation window of the date.
collection_runobjectCopied from the snapshot; verified false marks an unverified edition.
coverage_scope, coveragestring, objectAlways monitored_channels; coverage counts copied from the snapshot.
thresholdsobjectThe snapshot's breakout_min_views, breakout_min_lift, breakout_smoothing_views, breakout_launch_days, breakout_per_channel, breakout_channel_max_age_days and breakout_channel_min_start_views. Schema version 1 records instead have breakout_min_start_views, breakout_min_views_gained and rising_channels_min_start_views (null for snapshot version 1 sources).
sourceobjectsnapshot_file, snapshot_sha256 and snapshot_schema_version of the snapshot it was projected from. The snapshot file leaves the site after the history window; its hash still identifies it.
breakout_songs, breakout_channelsobjectavailable (boolean), reason (null, not_in_snapshot or no_observations) and entries (null when unavailable). Entries copy the snapshot's values and order: rank, video_id, title, channel_id, channel_name, url, channel_url, views_start, views, views_gained, growth_pct, observed_start, observed_end, phase, age_days, measured_views, expected_views and above_expected_pct for songs; rank, channel_id, name, url, views_start, views, views_gained, growth_pct, subscribers, observed_start, observed_end, first_upload_on and top_song for channels. Schema version 1 records (from snapshot versions 1 and 2) have rising_channels instead of breakout_channels, and no phase, age_days, measured_views, expected_views, above_expected_pct, first_upload_on or top_song.

data/editions/index.json (schema_version 1): timezone, site_url, latest and editions (newest first; date, file, page, absolute url, sha256 of the file and verified).

created by ESR