I run a small data feed that watches exchange airdrop announcements. Not because airdrops pay my rent, but because they are a clean window into where exchanges spend their marketing budget. This week the numbers told a story I did not expect, and the story is mostly about concentration.
the snapshot I pulled
The feed refreshed at 2026-09-03 16:25 UTC. Here is what it saw across 54 tracked campaigns:
- 3 campaigns marked active
- 8 marked ended
- 43 marked unknown
- 52 of 54 came from Binance (that is 96.3 percent), the other 2 from Bybit
So one exchange accounts for almost the entire surface area. If Binance changes how it publishes announcements, the radar goes quiet overnight. That is a real risk, not a footnote.
how the scoring works
I score each campaign on four parts: exchange weight (Binance 30, OKX 25, Bybit 20), type weight (25, 20, or 18), freshness (25 within 7 days, 15 within 30, 5 older), and a flat 10 for being active. Ended items get multiplied by 0.4. The top of the list this run:
- Binance USD1 airdrop extension, score 85, active, dated 2026-09-04
- Bybit Wednesday airdrop with a 120,000 dollar prize pool, score 73
The 85 breaks down as Binance weight 30, airdrop activity 20, fresh within 7 days 25, and active 10. Simple arithmetic, no magic.
the part you can actually run
Both feeds are live and return 200. Pull them straight from the data API:
curl -s https://agentdatum.com/api/v1/d/airdrop-score \
| python3 -c 'import sys,json; d=json.load(sys.stdin); r=d["raw"]; print("tracked:", r["scored_total"]); print("top:", r["high_priority"][0]["score"], r["high_priority"][0]["title"])'
You get:
tracked: 54
top: 85 Extension to the USD1 Airdrop Campaign (2026-09-04)
The radar feed, which carries the active or ended split, lives one path over:
curl -s https://agentdatum.com/api/v1/d/airdrop-radar \
| python3 -c 'import sys,json; d=json.load(sys.stdin); r=d["raw"]; print("total:", r["total"], "active:", r["active"], "ended:", r["ended"], "unknown:", r["unknown"])'
the honest part
A few things in this data will mislead you if you take the numbers at face value.
First, the 43 unknown entries are a data quality gap, not a dead zone. Binance listing pages do not cleanly expose whether a campaign is live, so the scraper marks most of them unknown. Reading "unknown" as "bad opportunity" is wrong. It just means the status field was not there.
Second, the score ranks marketing prominence, not profit. An 85 means the campaign is current and pushed by a large exchange. It says nothing about whether you will earn a cent. I have stopped treating a high score as a buy or join signal.
Third, the two endpoints disagree on what "active" means. The radar reports 3 active by a strict definition, while the score list marks several more as active (the USD1 extension, the Bybit Wednesday drop, a Bybit new user giveaway). If you sort only by the score number, a finished campaign that keeps a high base after the 0.4 penalty can still outrank a weak live one. The sort order lies a little.
Fourth, and this is the big one, the feed is 96 percent Binance. That is by construction, because Binance publishes the most structured announcement data. The diversity is low, and a single source change takes the whole radar dark.
what I do with it now
I use the score to filter, not to decide. When a campaign clears 80 and the status is genuinely active, I read the actual terms before doing anything. The number gets me to the door. It does not tell me what is behind it.
If you want to see the full set of endpoints and how they are structured, the catalog is published here: https://agentdatum.com/.well-known/ai-catalog.json
The feed covers a lot of markets, but it covers each one shallowly. For airdrops specifically, that trade is fine, because the question is usually "is this real and current," and a timestamp plus a source weight answers most of it.
This post was written with AI assistance for drafting and editing.
Top comments (0)