Tokens

Token buyer-quality score

Composite 0-100 score for the top 20 early buyers of a token. Base = avg 7d winrate of non-bot buyers with ≥3 tokens; + KOL bonus, − bundle/bot penalty. 5-minute LRU cache per mint. A mint with no captured early buyers is NOT a 404: it returns a neutral placeholder (score 50, confidence insufficient_data, signal neutral, zeroed breakdown) with note: "Insufficient buyer data" and a coverage block that says whether the mint is outside the launchpad write-gate. confidence counts only buyers whose win rate actually fed the score (breakdown.qualified_win_rate_wallets); a cohort of wallets with history but no usable win rates is insufficient_data, not high confidence. For bulk scoring use POST /tokens/batch/buyer-quality.

get/tokens/{mint}/buyer-quality

Request

  • Base URL: https://madeonsol.com/api/v1
  • URL: https://madeonsol.com/api/v1/tokens/{mint}/buyer-quality
  • Auth: HTTP bearer

Path parameters

mintstring required
Example:FfuWjhMm5LP3anZ5zq8SG4iqzYVvhM4LoyNMM957pump

Solana token mint address

Query parameters

include_balancesboolean

PRO+ (2026-10-15): add dump_cluster_held_now, the current balances of the early buyers counted in dump_cluster_count (one getTokenAccountsByOwner per member). The base response is unchanged.

Response

OK

mintstring
scorenumber

0-100 composite buyer-quality score

confidence'insufficient_data' | 'low' | 'medium' | 'high'

Confidence in the PREDICTIVE inputs: counts only buyers whose win rate fed the score (≥3 tokens of history, not bot-flagged, not zero-cost-dump dominated). insufficient_data = none did — the score is the neutral-50 default plus penalties. 1 → low, 5+ → medium, 11+ → high.

signal'positive' | 'neutral' | 'negative'
cached_atstring date-time
notestring

Present only when no early-buyer data exists for the mint — the score is then a neutral 50 placeholder ("Insufficient buyer data"); check coverage to tell 'no early buyers captured' from 'mint outside the write-gate'.

Example response

{
  "coverage": {
    "history_start": 1775984757,
    "scope": "pump.fun pipeline (pump.fun, LaunchLab/bonk, bags)",
    "size_floor": {
      "min_sol": 0.05,
      "min_stable_usd": 3.5,
      "applies_to": "buys and SOL-spending legs; SOL-receiving sells of any size are kept"
    }
  },
  "signal_stats": {
    "dump_cluster_count": {
      "summary": "dump_cluster_count=3 (k>=3): 95% of such tokens dumped vs 75% base (1.27× lift), n=349, 14d OOS"
    }
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.