MadeOnSolMade on Sol
Pricing
Try freeGet real-time feedsSign in
MadeOnSolMade on Sol

Solana and Robinhood Chain intelligence — KOL wallet tracking, deployer intelligence, all-DEX trade streams, and a developer API. Discover, compare, and build.

Product

  • Solana Data API
  • Robinhood Chain API
  • Robinhood Chain x402
  • MCP Servers & SDKs
  • x402 for AI Agents
  • Pricing
  • Enterprise / For Businesses

Solutions

  • Trading Bots
  • Wallet Tracking
  • Copy Trading
  • Token Scanners
  • Trading Terminals
  • DEX Data
  • Smart Money
  • Token Risk
  • View all solutions

Developers

  • API Docs
  • WebSocket Streaming
  • Changelog
  • API Status
  • Latency Benchmarks
  • Data Integrity
  • Data Dictionary
  • Methodology

Resources

  • All Tools
  • Compare Tools
  • Best Trading Bots
  • Best DEXs
  • Best Wallets
  • Best Analytics
  • Best DeFi
  • Best Snipers
  • Blog
  • Blog Archive
  • Signal Scorecard
  • Tool Uptime
  • Community
  • Submit a Tool
  • Advertise

Company

  • About
  • Contact
  • Security
  • Privacy
  • Terms
  • DPA
  • Disclaimer

© 2026 MadeOnSol

MadeOnSol — eenmanszaak, Hulshout, Belgium · KBO/BTW BE 1039.535.538 (art. 56bis, no VAT charged)

Runs on our own dedicated EU servers — self-hosted data stack, own Robinhood Chain node · security

Follow us on XPowered by:constant·k — Private Solana RPC Services
SolutionsSmart Money

Solutions · Smart money

Smart-money intelligence from tracked Solana KOL and alpha wallets

The MadeOnSol smart money API returns the trades of tracked Solana KOL wallets with each trader's win rate, PnL percentile and strategy attached, alpha wallets scored from early-buyer results, the first KOL buy of every token and a 0 to 100 coordination score when several KOLs buy the same token, over REST, WebSocket channels and signed webhooks.

Read the KOL and alpha API See how the first-KOL signal backtests
Solana KOL wallets trackedActive in the live KOL feed · copy-trade rules follow these
1,142
Alpha wallets scoredSolana early buyers · bot-confidence ranked
1.70M
KOL trades capturedSolana · tracked KOL wallets · kept forever
5.36M
Weighted inputs in the coordination score
5

A raw address says nothing about whether a wallet deserves attention. Start from traders with a record, see who reached a token first, and know when several of them converge.

Free API key · plans from €43

A Free key reads the roster, profiles, PnL, both leaderboards and first touches, and the KOL feed 5 minutes delayed. Coordination, consensus and the live kol:* channels from Pro; alpha wallet profiles on Ultra.

What an address does not tell you

Four questions, four REST endpoints, each with its plan from the route gate.

  • Who is this wallet?

    GET /kol/walletsFree

    nametwitter_urlstrategy_tagtracked_since

  • Is their record any good?

    GET /kol/leaderboardFree

    win_rateprofit_factorpercentile_pnl_30dmedian_hold_minutes_30d

  • Were they first on this token?

    GET /kol/first-touchesFree

    first_kol.scout_tiertoken_age_minutesmarket_cap_usd_at_first_buy

  • Who else is buying it?

    GET /kol/coordinationPro

    kol_countexited_countcoordination_score

The problem

Every wallet on Solana is an address. Deciding which ones deserve attention means building a trader roster, a trade parser, a PnL model that survives partial sells, a record of who bought each token first, and a way to tell several strong traders converging on a token from one wallet buying twice. That is years of history before the first useful signal.

Show me

From one KOL buy to a coordination alert

Three real response shapes for one token. Field names are the routes' and the rule engine's own keys; values are illustrative and the bodies are abridged.

  1. 1 · A trade with the trader attached

    The KOL feed returns each trade with the trader's win rate, PnL percentile, strategy tag and heating-up flag, plus the token's age, deployer tier and market cap at the trade.

    GET /api/v1/kol/feed (one trade, abridged)
    // GET /api/v1/kol/feed?action=buy&min_kol_winrate=55&limit=1
    {
      "trades": [
        {
          "wallet_address": "CyaE...n5Lb",
          "kol_name": "Cented",
          "kol_strategy_tag": "scalper",
          "kol_auto_strategy_tag": "scalper",
          "kol_winrate_7d": 58.3,
          "kol_early_entry_pct_30d": 18.2,
          "kol_is_heating_up": true,
          "kol_percentile_pnl_7d": 0.93,
          "kol_percentile_winrate_7d": 0.81,
          "token_mint": "8vdc...pump",
          "token_symbol": "NEW",
          "launchpad": "pumpfun",
          "token_age_minutes": 6,
          "action": "buy",
          "sol_amount": 4.2,
          "market_cap_usd_at_trade": 31800,
          "tx_signature": "5K7j...",
          "deployer": { "wallet": "8kP4...Qe2x", "tier": "good", "bonding_rate": 0.41 },
          "deployer_tier": "good",
          "traded_at": "2026-09-25T10:02:11.000Z"
        }
      ],
      "count": 1,
      "has_more": true
    }
  2. 2 · Two more KOLs buy

    The coordination ranking groups the buys, times the convergence, marks the KOL that already net-sold and scores the cluster. 30 + 6 + 13.3 + 8.6 + 11.8 rounds to 70.

    GET /api/v1/kol/coordination (one cluster, abridged)
    // GET /api/v1/kol/coordination?period=1h&min_kols=3&window_minutes=15
    {
      "coordination": [
        {
          "token_mint": "8vdc...pump",
          "token_symbol": "NEW",
          "kol_count": 3,
          "total_buys": 4,
          "total_sells": 1,
          "net_sol_flow": 6.2,
          "signal": "accumulating",
          "avg_winrate_7d": 57.4,
          "entry_rank_avg": 21.6,
          "unique_strategies": 2,
          "strategies": ["scalper", "day_trader"],
          "first_buy_at": "2026-09-25T10:02:11.000Z",
          "last_buy_at": "2026-09-25T10:09:47.000Z",
          "time_to_consensus_sec": 456,
          "peak_kols": 3,
          "exited_count": 1,
          "holders_count": 2,
          "coordination_score": 70,
          "market_cap_usd_at_first_buy": 31800,
          "market_cap_usd": 58200,
          "kols": [
            { "name": "Cented", "wallet": "CyaE...n5Lb", "buy_sol": 4.2, "sell_sol": 0, "exited": false },
            { "name": "Jijo", "wallet": "4BdK...9sQe", "buy_sol": 2.5, "sell_sol": 0, "exited": false },
            { "name": "Orange", "wallet": "9pQz...Lm3a", "buy_sol": 1.1, "sell_sol": 1.6, "exited": true }
          ]
        }
      ],
      "period": "1h",
      "min_kols": 3,
      "window_minutes": 15,
      "score_version": "v1"
    }
  3. 3 · Your rule fires

    A rule for three KOLs inside 15 minutes fired on the third buy, before anyone sold, so the score is higher than the later ranking. Only your connections and your webhook receive it.

    kol:coordination frame (your rule fired)
    {
      "id": "kol:coordination:98765",
      "seq": 402113,
      "channel": "kol:coordination",
      "event": "kol:coordination",
      "data": {
        "signal_id": 98765,
        "rule_id": "1111...5555",
        "rule_name": "3+ KOLs in 15m",
        "fired_at": "2026-09-25T10:09:48.310Z",
        "token_mint": "8vdc...pump",
        "token_symbol": "NEW",
        "token_name": "New Token",
        "triggering_trade": {
          "wallet_address": "9pQz...Lm3a",
          "kol_name": "Orange",
          "sol_amount": 1.1,
          "tx_signature": "3Hq9...",
          "traded_at": "2026-09-25T10:09:47.000Z",
          "market_cap_usd_at_trade": 52400,
          "price_usd_at_trade": 0.0000524
        },
        "kol_count": 3,
        "exited_count": 0,
        "avg_winrate_7d": 57.4,
        "entry_rank_avg": 21.6,
        "coordination_score": 76,
        "score_version": "v1",
        "window_minutes": 15,
        "kols": [
          { "wallet": "CyaE...n5Lb", "name": "Cented" },
          { "wallet": "4BdK...9sQe", "name": "Jijo" },
          { "wallet": "9pQz...Lm3a", "name": "Orange" }
        ],
        "is_rearm": false
      },
      "ts": 1790330988310
    }

Same calls in other clients

  • TypeScriptrest.kolFeed({ min_kol_winrate: 55 })
  • TypeScriptrest.kolCoordination({ period: "1h", min_kols: 3 })
  • TypeScriptrest.firstTouches({ preset: "scout" })
  • TypeScriptrest.coordinationAlertsCreate(rule)
  • Pythonclient.kol_coordination(period="1h")
  • MCPmadeonsol_kol_coordination

Try it

Look at the traders before you write code

The KOL Tracker shows the live trades, the leaderboard and each KOL's record in the browser. A free key then reads the same roster, records and first touches over REST, with the feed 5 minutes delayed.

Open the KOL Tracker Get a free API key KOL API reference

From wallet activity to smart-money signal

What gets added between a trade and your signal

Each stage answers one question about the trader or the token and returns it as named fields. The first six run on MadeOnSol; the last one is yours.

  1. 01 · MadeOnSol

    A tracked wallet trades

    kol-tracker parses the swap of a wallet on the KOL roster into a buy or sell with SOL and token amounts and the market cap at that moment.

    kol:trades channelGET /kol/feed

    wallet_addressactionsol_amountmarket_cap_usd_at_trade
  2. 02 · MadeOnSol

    Who the trader is

    A name and X profile from the roster, a strategy tag (scalper, day_trader, swing_trader, hodler, mixed) and, for any address, KOL, alpha-wallet and bot flags.

    GET /kol/walletsGET /wallet/{address}

    kol_namekol_strategy_tagis_alpha_trackedbot_confidence
  3. 03 · MadeOnSol

    Their record

    Cost-basis realized PnL, win rate, profit factor and peer percentiles per period, plus hold times and mark-to-market on bags still held.

    GET /kol/leaderboardGET /kol/{wallet}/pnlGET /alpha/leaderboard

    kol_winrate_7dkol_percentile_pnl_7drealized_pnl_solunrealized_pnl_sol
  4. 04 · MadeOnSol

    Who was first

    The first buy of each token by any tracked KOL is stored once, with the token's age and market cap at that buy and the first KOL's scout tier (S/A/B/C).

    GET /kol/first-toucheskol:first_touches channel

    first_buy_attoken_age_minutesfirst_kol.scout_tierfirst_kol.n_first_touches_30d
  5. 05 · MadeOnSol

    Who else is in

    How many tracked KOLs bought the same token in a period, how fast they converged, how many already net-sold, in which order they entered, and a 0 to 100 score over five inputs.

    GET /kol/coordinationGET /kol/tokens/{mint}/entry-orderGET /tokens/{mint}/kol-consensus

    kol_counttime_to_consensus_secexited_countcoordination_score
  6. 06 · MadeOnSol

    Pushed on your threshold

    A coordination rule names the minimum KOLs, window, score and market cap band; each qualifying buy fires one kol:coordination event for your connections or your webhook, with a cooldown per token.

    POST /kol/coordination/alertskol:coordination channel

    min_kolswindow_minutesmin_scorecooldown_min
  7. 07 · Your product

    Your product decides

    Rank, alert, display or ignore. How much a first touch, a percentile or a score is worth to your users is your logic, not ours.

    your weightsyour thresholds

Chips are the response or event fields each stage returns. KOL endpoints · Alpha wallet endpoints

Coordination

What a coordination score is made of

Five inputs, each scaled 0 to 1, weighted to a total of 100 (score_version v1). The REST ranking scores the top 150 clusters by KOL count in the period; a coordination rule scores the token on every KOL buy inside its own window.

InputWeightWhat it measures
Density30Share of the KOLs that bought inside the densest window_minutes slice (peak_kols ÷ kol_count). A rule fire is scored inside the rule's own window, so this is 1 there.
Convergence20How many KOLs are in, saturating at 10.
Conviction20Share of those KOLs that have not net-sold. A KOL counts as exited once it sold more SOL of the token than it bought.
Quality15Average 7-day win rate of the KOLs in the cluster (50 when none is known).
Earliness15How early these KOLs usually enter tokens, from their 30-day early-entry rank (50 when unknown). It describes the traders, not this token.

An observable pattern, not a claim about intent

A high score says several tracked KOLs bought the same token close together, most have not sold, and their recent records are strong. It does not say they talked, planned it or are moving the price. Traders reacting independently to the same launch produce the same pattern.

Why exits are part of it

exited_count counts the KOLs that already sold more than they bought, so a cluster whose early buyers are leaving scores lower. A rule re-fires on the same token after its cooldown (30 minutes by default), or sooner when the score climbs 20 points; is_rearm marks that.

The datasets

What the numbers above count

All three are Solana populations, counted live when the page renders. Data dictionary · Methodology

Solana · roster

Solana KOL wallets tracked

Active roster wallets with a Solana address: the set kol-tracker follows and the only wallets that produce kol:trade events. KOL wallets traced to Robinhood Chain are counted separately and are not in this number.

GET /kol/wallets

Solana · early buyers

Alpha wallets scored

Wallets scored from their realized PnL as one of the first 20 buyers of launch-pipeline tokens, each with a bot_confidence of high, medium, low, none. A scored wallet is not a recommendation: the leaderboard keeps wallets with non-negative PnL, at least one win and 5 tokens by default, and drops high and medium bot confidence.

GET /alpha/leaderboard

Solana · trade tape

KOL trades captured

Stored trades by the tracked Solana KOL wallets, with no retention window since June 2026. The figure is the planner's row estimate, measured nightly, not an exact count.

GET /kol/feed

Compared

Smart money, wallet tracking and copy trading

Three products that all start from wallets. Wallet Tracking follows your own list, Copy Trading turns KOL trades into sized signals, and this page is about knowing which traders matter. To check any single address, scan it for free.

AspectWallet TrackingCopy TradingSmart Money
Whose walletsAddresses you choose.Tracked KOL wallets you name in a rule.The tracked KOL roster and the scored alpha wallets, maintained by MadeOnSol.
What you getSwap and transfer events for your watchlist.One sized signal per trade your rule accepts.Trades with the trader's record attached, first touches, coordination clusters and scores.
The question it answersWhat did my wallets just do?Should my bot follow this trade, and with how much?Which traders deserve attention, and where are several of them converging?

Plans

Where each capability starts

CapabilityWherePlan
Roster, profiles, PnL, leaderboardGET /kol/wallets, /kol/{wallet}, /kol/{wallet}/pnl, /kol/leaderboardFreeOpen positions on /kol/{wallet}/pnl on Ultra
KOL trades over RESTGET /kol/feedFree5 minutes delayed on Free
First touches over RESTGET /kol/first-touchesFree5 minutes delayed on Free; the first KOL's wallet address on Ultra
Alpha leaderboardGET /alpha/leaderboardFreebot_confidence and behaviour fields on Ultra
Coordination, consensus, scoutsGET /kol/coordination, /tokens/{mint}/kol-consensus, /kol/scouts/leaderboardFrom Pro
Flags for any addressGET /wallet/{address}From Pro
Live KOL trades and first toucheskol:trades channel, kol:first_touches channelFrom Pro
Coordination rulesPOST /kol/coordination/alerts, kol:coordination channelFrom ProRules per account depend on the plan
KOL trade webhookskol:trade webhook eventFrom Pro
First-touch webhook rulesPOST /kol/first-touches/subscriptionsFrom Ultra
Alpha wallet profile and linked walletsGET /alpha/{wallet}, /alpha/{wallet}/linkedUltra

Compare plans for request limits and the number of rules per plan.

Architecture

From a tracked wallet to your product

  1. 1 · Source

    Chain activity

    Transactions and program events

  2. 2 · MadeOnSol

    Data and intelligence layer

    • Tracked KOL roster and alpha scoring
    • Trader records and percentiles
    • First touches and coordination scores
  3. 3 · Delivery

    • REST API/kol/* · /alpha/*
    • WebSocket streamskol:trades · kol:first_touches · kol:coordination
    • Webhookskol:trade · kol:coordination
  4. 4 · Yours

    Your weights, thresholds and ranking

    Keys and business logic stay server-side

  5. 5 · Users

    Your smart-money product

Build outcomes

What smart-money teams build

  • Smart-money alert bots
  • KOL activity feeds with trader records
  • Trader scorecards and leaderboards
  • First-mover watchlists
  • Token pages with KOL participation

Showing MadeOnSol data to your own users requires a Business plan. See pricing

Keep going

Related

Solution

Wallet Tracking

Watch your own list of addresses.

Solution

Copy Trading

Turn a KOL trade into a sized signal for your bot.

Solution

Trading Bots

Combine KOL activity with deployer alerts and token context.

Product

KOL Tracker

Live KOL trades and the leaderboard in the browser.

Guide

Push alerts on KOL coordination

Peak density, rules and the WebSocket push.

Guide

How alpha wallets are scored

From early buyers to a filtered leaderboard.

FAQ

Questions smart-money builders ask

What is the difference between a KOL wallet and an alpha wallet?+
A KOL wallet is on MadeOnSol's tracked roster with a name and X profile; GET /kol/wallets lists it, and every trade it makes is captured. An alpha wallet is any wallet scored from its results as one of the first 20 buyers of launch-pipeline tokens, named or not, with a bot_confidence rating. A wallet can be both. The definitions and thresholds are on the methodology page.
Is smart money data the same as wallet tracking?+
No. The Wallet Tracker reports what the addresses you choose did. Smart money data starts from wallets MadeOnSol already tracks and scores, and adds their record, who bought a token first and how many tracked KOLs are converging on it. Many products use both: smart money to find the traders, the Wallet Tracker for anyone outside the roster.
Can I use my own wallet list?+
Not as KOLs: the roster and the alpha scoring are MadeOnSol's, and the API has no endpoint for adding wallets to either. For your own addresses, use Wallet Tracking to receive their swaps and transfers, and look any address up with GET /wallet/{address} for its KOL, alpha-wallet and bot flags (from Pro). Copy-trade rules can only name wallets on the roster.
What does a coordination score measure?+
What is visible on chain: how many tracked KOLs bought the same token, how densely inside the window, how many have already net-sold, their average 7-day win rate and how early they usually enter, weighted into 0 to 100 (score_version v1). It does not say the wallets acted together or intended anything. Independent traders reacting to the same launch produce the same pattern, so treat the score as one input to your own rules.
Can I receive KOL activity in real time?+
Yes, from Pro: kol:trades and kol:first_touches on the WebSocket stream, kol:trade as a signed webhook, and kol:coordination for your own coordination rules. A Free key reads the same trades and first touches over REST 5 minutes delayed. The stream frame carries the trade and the KOL's name; read the trader record from the REST endpoints and cache it per wallet.
REST or live transport?+
REST for lookups and history: the roster, records, first touches and coordination rankings. WebSocket channels or webhooks from Pro when your product has to react to a KOL trade, a first touch or a coordination rule as it happens. See pricing for each plan.
Can teams prototype first?+
Yes. A free key from the developer page reads the roster, KOL profiles, PnL, the leaderboard, the alpha leaderboard and first touches, and the KOL feed 5 minutes delayed. Coordination rankings and live channels start on Pro.

Next step

Pick the traders by their record, then let the signals come to you.

Read how each label is defined, browse the traders, then wire the records and coordination into your product.

  1. 1 · ProofMethodology Alpha wallets, bot confidence, versioned.
  2. 2 · TryOpen the KOL Tracker Live trades and records, no key.
  3. 3 · DocsKOL and alpha reference Endpoints, filters, fields.
  4. 4 · PlanCompare plans Coordination and live channels from Pro.