Tokens API
Bundler and sniper holding size, over time
How much of the token the bundler and sniper cohorts hold, and how many wallets carry each tag, snapshotted over time; an absolute token amount, not a percentage of supply. Solana only.
GET
/api/external/token-analysis/cohort-history/{chain}/{mint}Chains
- Solana SOL
Request
Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.
curl -H "x-dex-data-key: $DEXDATA_API_KEY" \ "https://api.dexdata.io/api/external/token-analysis/cohort-history/SOL/<mint>?interval=1m&from=<from>&to=<to>"
| Parameter | Description |
|---|---|
intervalquery · string · required | Snapshot spacing: minute, hour or day buckets.1m1h1d |
fromquery · integer · required | Window start, Unix SECONDS. Inclusive. |
toquery · integer · required | Window end, Unix SECONDS. Inclusive. At most 100 points fit in one request PER COHORT, and the ceiling is PER INTERVAL: roughly 100 days at 1d, 4.2 at 1h, 0.07 (100 minutes) at 1m. A wider window returns 400 naming the real ceiling for the interval asked for, rather than a silently truncated series — split a longer read into multiple calls. |
chainpath · string · required | Solana only; every other chain returns 400. No other wired source keeps a tagged-cohort holdings history. |
mintpath · string · required | The token mint address. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type |
|---|---|
interval | string |
bundler | object |
bundler.points | object[] |
bundler.points[].at | number |
bundler.points[].holderCount | integer | null |
bundler.points[].holdingAmount | number | null |
bundler.change | object |
bundler.change.fromAt | number | null |
bundler.change.fromHoldingAmount | number | null |
bundler.change.toAt | number | null |
bundler.change.toHoldingAmount | number | null |
bundler.change.changeAmount | number | null |
bundler.change.changePct | number | null |
sniper | object |
sniper.points | object[] |
sniper.points[].at | number |
sniper.points[].holderCount | integer | null |
sniper.points[].holdingAmount | number | null |
sniper.change | object |
sniper.change.fromAt | number | null |
sniper.change.fromHoldingAmount | number | null |
sniper.change.toAt | number | null |
sniper.change.toHoldingAmount | number | null |
sniper.change.changeAmount | number | null |
sniper.change.changePct | number | null |
Start building with DexData today
Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.
Get a free API key