{% extends "base.html" %} {% block title %} Dataset {% endblock title %} {% block content %}

Dataset Backups

About this dataset

This site tracks and publishes open Twitch and Kick drop campaign data.

Campaign metadata in the downloadable datasets and public JSON API is released under CC0 so you can reuse it freely. The underlying source data is scraped from Twitch/Kick APIs and pages, so we do not control the upstream content and cannot guarantee upstream accuracy or permanence. Linked third-party images, logos, and trademarks may remain subject to separate rights.

Note that some drops has missing or incomplete data due to Twitch API limitations.

Reward campaign data is sourced from SunkwiBOT/twitch-drops-api. Raw JSON exports are available in the repository: drops.json and rewards.json.

Need a special format for your workflow or research pipeline? Contact me via GitHub issues and describe what you need.

Kick JSON API

Fully imported Kick campaigns are also available through the public, paginated Kick campaign JSON API. Responses include campaign dates, game and organization metadata, rewards, and the complete channel list stored for each campaign.

Use page and page_size for pagination. Filter by Kick category ID with game, or by the computed campaign state with status=active, status=upcoming, or status=expired. Page numbers and page sizes have a minimum of 1, and the maximum page size is 500.

{
  "total": 1,
  "page": 1,
  "page_size": 100,
  "items": [{
    "kick_id": "...",
    "name": "...",
    "status": "active",
    "starts_at": "2026-07-01T00:00:00Z",
    "ends_at": "2026-08-01T00:00:00Z",
    "category": { "kick_id": 123, "name": "..." },
    "organization": { "kick_id": "...", "name": "..." },
    "channels": [],
    "rewards": [{ "name": "...", "required_minutes_watched": 30 }]
  }]
}

Timestamps use ISO 8601 in UTC and may be null when the source lacks a date. Campaigns with incomplete dates have the computed status unknown and are not returned by a status filter. Each item includes every stored channel and raw reward without RSS truncation or reward-name merging. Consumers can stop pagination when items is empty or when page * page_size >= total.

An empty channels list means that no channel restriction data is stored. It does not, by itself, guarantee that a campaign is available on every channel.

{% if datasets %} {% for dataset in datasets %} {% endfor %}
Name Size Updated
{{ dataset.name }} {{ dataset.size }}

Found {{ dataset_count }} datasets.

{% else %}

No dataset backups found.

{% endif %}
{% endblock content %}