How this works.

Every node in the graph is a real, on-chain NBA Top Shot Moment. Every edge connects a real Flow wallet to a Moment it actually owns. The numbers update with the platform — there is no mock data.

What you're looking at

You pick one of the six athletes. The site loads that athlete's full universe — every play that's ever been minted, every edition, every collector. The graph then renders three rings:

Where the numbers come from

The site reads the public Top Shot GraphQL API at public-api.nbatopshot.com/graphql. No login is required. We use three queries:

The big number you see — "288,890 Moments" for LeBron — is the sum of circulationCount across every edition. That's the authoritative supply, not an extrapolation.

What "Edition" means

A play is the highlight (LeBron's dunk on Friday). An edition is one specific minted version of that play at one specific tier. The same play often gets multiple editions — a Common version with 12,000 in circulation, a Rare with 999, a Legendary with 99. Each edition is its own collectible.

The spotlight feature

Click any collector node and the graph dims everything else. Now you see only that collector's Moments — what they own, what they don't. The badge at the top shows their completion: "holds 45 of 57 editions · 78.9%". Press ESC or click the badge to clear.

What's filtered

The Top Shot pack-distribution wallet (b6f2481eba4df97b) holds tens of thousands of Moments waiting to be sold to collectors. It's not a fan, it's a system account, so it's excluded from every graph and every leaderboard. Same for any other unnamed wallet holding more than 1,500 Moments of a single player — those are exchanges and treasuries, not collectors.

How fresh the data is

The data is regenerated periodically — typically within hours of any new mint. If you spot your wallet in here and your holdings are slightly off, the lag is usually a recent acquisition or sale. The numbers you see here today were ingested by the public API.

What this isn't

Back to the graph