SwanBluechipDefendMonthly reportsHow sureHack history
Hack history / Dataset

The crypto theft dataset

The crypto theft dataset behind this site: what a release holds, what it covers, what changed, how to keep a copy in sync, and the licences that come with it.

This releaseCoverageWhat changedKeeping a copy in syncLicences and citation

3,337 incidents since 2011; $35.26B counted as stolen in 3,121 thefts.

IN PLAIN WORDSThis is the list of every crypto robbery we know of, in files a computer can read. Each time we update it, we write down exactly what changed, so nobody has to guess.

This release 2026-11-01 13:39 UTC

FileSizeHoldssha256 (first 16)
/hacks.json2.42 MBevery incident, all public fields (rows) and the release's checks (meta)34405f2133893f04
/hacks.csv1.35 MBthe same, flat, one row per incident24693b3e320ae2ef
/data/fields.json0.01 MBthe data dictionary: type, meaning and how each field is madec3fd5b8ea0e82760
/data/changelog.json0.05 MBevery release's changes: added, merged away, changed fields78234b75ef5bf941
/data/id-aliases.json0.00 MBold id to the id that holds it now, for ids merged away64ad2817b0fffaf8
/data/controls.json0.11 MBsecurity controls per way in, and for each theft the controls that answer it9b2f548e96a98d7b

Released daily at 21:20 UTC, and within the hour when a theft of $10M or more is new or newly confirmed. Ids are stable: an id is never reused, and one merged into another incident stays resolvable through /data/id-aliases.json.

Coverage, year by source

IN PLAIN WORDSEach list starts in a different year and watches different corners. Darker squares mean that list reports more of that year.
YearIncidentsCountedAgreed $Target knownDefiLlamaSlowMistW3IGGrektack3
before 201620$507.3M95%100%1810···
20165$135.7M46%100%53···
201714$289.9M46%71%810···
201884$1.21B74%54%3183···
2019132$323.9M83%39%26132···
2020129$4.57B4%64%46123·11·
2021289$5.77B79%61%1272378960·
2022529$4.82B52%48%18531228050·
2023690$2.46B54%43%19746419962·
2024588$2.31B79%44%21841116245·
2025382$3.86B68%43%1472029348·
2026475$9.02B93%76%3253448253134

Agreed $: share of the year's counted dollars that two or more sources report with the same date and loss. Target known: share of incidents whose target a source states or DefiLlama's protocol list matches (not estimated). DeFiHackLabs, a source with a reproduced exploit for each incident, is counted but not linked. ack3 covers January to June 2026 only.

What changed 12 releases with changes

IN PLAIN WORDSWhen a number moves, this table says why: a new theft, two reports of one theft joined, or a source correcting its figure.
Release (UTC)IncidentsCountedWhy
2026-11-01 13:39-21−$74.3M21 merged into the incident they repeat; 21 with changed fields
2026-11-01 08:57+0+$016 with changed fields
2026-11-01 08:44+0−$1.23B28 with changed fields; Coinbase accused by crypto sleuth zachxbt of allowing more than $300 million per year in social engineering attacks on its customers −$300M (left the count); Arrests made in $300 million Indian crypto scam −$300M (now followup); Myanmar-based romance scam operation pulls in $100 million in less than two years −$100M (left the count)
2026-11-01 07:26+6+$5.1Madded Alchemix yvWETH user position drained via malicious unverified-contract approval $1M, Gyroscope $807K, XPlayer_Media $717K and 3 more; 129 with changed fields
2026-11-01 02:20-3−$721K3 removed (merged or dropped before ids were aliased); 1 with changed fields
2026-11-01 01:44+0−$1.19B3 with changed fields; BeautyChain −$1.00B (left the count); SmartMesh −$140M (left the count); Nesa −$50M (left the count)
2026-10-31 21:20+3+$680Kadded Troves $667K, Vara Bridge $13K, b14g
2026-10-31 17:11+2+$4Kadded VergeX $4K, Flap
2026-10-31 16:43-13−$49.9Madded Network of fake Twitter accounts impersonating crypto security firms phish panicked victims $300K, NFT collector files $6 million lawsuit against OpenSea, LooksRare, and the company behind Bored Apes for not doing more to discourage thefts $300K, Another $1 million lawsuit is filed against OpenSea for stolen apes $165K and 1 more; 17 removed (merged or dropped before ids were aliased); 98 with changed fields
2026-10-31 16:32+0+$02 with changed fields
2026-10-31 16:12+0+$02 with changed fields
2026-10-31 15:57-9+$318.5Madded DEOSBET $20K, 7Tron $2K; 11 removed (merged or dropped before ids were aliased); 241 with changed fields; Babel Finance +$224.6M (figure revised); Akutars +$34M (figure revised); Bitmarket +$28.1M (figure revised)

The full log: /data/changelog.json. Each entry lists every incident added (id, date, name, kind, loss, grade), every id merged away with the id it points to now (into), and for each changed incident the old and new value of date, name, kind, loss, grade, source count, target class and whether it is counted.

Keeping a copy in sync

IN PLAIN WORDSYou keep your own copy. Each day, read what changed and fix only those lines, instead of copying everything again.
# Python: apply the releases you have not seen yet to a local copy keyed by id
import requests
base = "https://swan-hack-tracker.pages.dev"
log = requests.get(base + "/data/changelog.json").json()
new = [x for x in log if x["released"] > last_seen]          # last_seen: the release you synced last
full = {r["id"]: r for r in requests.get(base + "/hacks.json").json()["rows"]}
for x in new:
    for m in x["removed"]:
        mine.pop(m["id"], None)                               # merged away: m["into"] holds it now
    for r in x["added"] + x["changed"]:
        mine[r["id"]] = full[r["id"]]                         # take the current row
aliases = requests.get(base + "/data/id-aliases.json").json() # resolve ids you stored before a merge
last_seen = log[-1]["released"]

The log covers releases from 2026-10-31 15:57 UTC, when ids took their current form; for anything older take the full file. One incident by id, with merged ids resolved: /api/incidents?id=<id>.

Licences and citation

SourceTerms
DefiLlamaPublic API, cited per incident
SlowMist HackedPublic list, cited per incident
Web3 Is Going GreatPublic list, cited per incident
rekt.newsLeaderboard figures and links, cited per incident
DeFiHackLabsApache 2.0; counted as a source, not linked
ack3 H1 2026CC BY 4.0: credit ack3 when you reuse
US DOJ, US Treasury OFACUS government work, public domain

Kept out of the public files: attack transactions, attacker and contract addresses, and exploit code. The merged figures, grades, classes and checks are this site's work; cite them as below.

Cite this pageSwanBluechip, "The crypto theft dataset", Crypto hack history, https://swan-hack-tracker.pages.dev/history/data/ (data as of 2026-11-01).
Download JSONDownload CSVHow sureWhat would have stopped them