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
- Time zone. Every date (
YYYY-MM-DD) is a Europe/Madrid calendar day. Timestamps are UTC in the formYYYY-MM-DDTHH:MM:SSZ. - Cutoff.
data_as_ofis the newest observation behind a ranking date: the data cutoff. Rankings do not reflect anything counted after it. - Units.
views,views_startandviews_gainedare counts of YouTube views from public counters;subscribersis a subscriber count;growth_pctis a percentage (100 * views_gained / views_start) rounded half away from zero to one decimal. Ordering always uses the exact ratio. - Missing values.
nullmeans unknown or unavailable, never zero. A ranking that isnull(or absent from an older schema) is unavailable, which is different from an empty list (calculated, no eligible entries). - Coverage. Rankings cover monitored channels only, not all of YouTube. Shorts are excluded from song charts; mixes are not classified separately.
- Completeness.
collection_run.verifiedistrueonly when the day's collection runs completed. An unverified date (for example a forced publication after an incomplete video collection) may be missing observations; itscollection_run.idisnulland the pages show a warning. - Methodology. How the rankings work: seven-day windows, thresholds, tie-breaking and movement.
- Freshness and retention. The site is rebuilt daily after collection. Dated snapshots are kept for the latest 5 dates listed in the manifest; edition records are kept permanently. A published snapshot or edition never changes.
Files
| Path | Contents | Changes |
|---|---|---|
data/manifest.json | Latest date, published dates and their snapshot hashes | Every build |
data/YYYY-MM-DD.json | Full ranking snapshot of one date (four charts) | Never, once published |
data/channels.json | Channels shown on the channels page, for the latest date | Every build |
data/editions/index.json | Every discovery edition with its page, file, hash and absolute URL | Every build (entries are only added) |
data/editions/YYYY-MM-DD.json | Discovery edition of one date: Breakout songs and Breakout channels (Rising channels in schema version 1) | Never, once published |
feed.xml | RSS 2.0 feed of the newest 30 editions | Every 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)
| Field | Type | Meaning |
|---|---|---|
schema_version | integer | Manifest format version. |
timezone | string | Always Europe/Madrid. |
site_url | string | Canonical site URL, ending in a slash; relative paths resolve against it. |
latest | date | Newest published ranking date; always available. |
history_days | integer | Number of consecutive dates listed in dates. |
run_id | string or null | Collection run of the latest date; null when it is unverified. |
data_id | string | First 16 hex characters of the latest snapshot's SHA-256. |
dates[] | array | Newest 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)
| Field | Type | Meaning |
|---|---|---|
schema_version | integer | Snapshot 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). |
timezone | string | Always Europe/Madrid. |
ranking_date | date | The ranking date D. |
data_as_of | UTC timestamp | Data cutoff for D. |
window_days, window | integer, object | Seven-day window: start_date = D minus window_days, end_date = D. |
collection_run | object | id (string or null) and verified (boolean); see Completeness. |
methodology | object | Parameters 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). |
coverage | object | Counts for D: channels, channels_measured, videos, videos_measured, new_uploads, excluded_shorts, negative_corrections. |
summary | object | entered (per chart, null without a comparable previous day) and biggest_climber (or null). |
new_channels | array (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. |
rankings | object | growth (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)
| Field | Type | Meaning |
|---|---|---|
edition_date, page | date, path | Ranking date and its permanent page. |
data_as_of, window_days, window, timezone | as in the snapshot | Cutoff and observation window of the date. |
collection_run | object | Copied from the snapshot; verified false marks an unverified edition. |
coverage_scope, coverage | string, object | Always monitored_channels; coverage counts copied from the snapshot. |
thresholds | object | The 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). |
source | object | snapshot_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_channels | object | available (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).