degentape

API reference

The trades of labelled traders on fomo.family and pump.fun as they land, their PnL, positions and trades, and the theses they post on coins. Read-only JSON over HTTPS, plus one live stream.

Base URL
https://degentape.com/v1
Auth
Authorization: Bearer <key>
Format
JSON; times in Unix seconds unless a field says otherwise

Quickstart

  1. Take the free credits or pick a plan on Pricing.
  2. Create a key in the dashboard. It is shown once.
  3. Open the live feed. Each fill arrives as one line of JSON.

Authentication

Every call except /v1/plans takes an API key. Send it as a Bearer token; an x-api-key header or an api_key query parameter work too. Keys start with dtk_, are shown once when you create them, and can be revoked at any time in the dashboard.

Header
Authorization: Bearer dtk_••••••••••••••••••••••••••••••••

Credits and limits

Each call spends credits: a fill delivered costs 1, lookups cost what the table says. Plan credits are spent first and reset when the 30 days end; extra credits (top-ups, the trial) never expire. Top-ups add credits to a running plan.

RequestCredits

Your plan sets how many requests a second you can make (with two seconds of burst) and how many live streams you can hold open at once. Every answer carries x-credits-used and x-credits-remaining.

Response headers
x-credits-used: 5
x-credits-remaining: 999995

Errors

Errors are JSON with an error message. A refused call is never charged.

400A parameter is wrong; the message names it.
401No key, or the key is not valid or was revoked.
402Not enough credits for this call; credits_needed says how many.
404Unknown trader, token or endpoint.
429Over your plan’s requests a second or open streams. Wait for retry-after.
502The fomo.family data source did not answer. Try again shortly.
402
{
  "error": "Not enough credits (this call costs 25). Pick a plan, or top up the one you have, at https://degentape.com/developers",
  "credits_needed": 25
}

Naming traders

Name a trader by handle (case doesn’t matter, a leading @ is fine) or by the ref a fill carries (w_…), which also covers the few traders without a handle. Trader endpoints and the traders filter cover the traders we track live, over 40,000 on fomo.family and pump.fun; the leaderboard ranks every fomo.family trader. When a handle exists on both apps, add platform=fomo or platform=pump.

Examples
/v1/traders/cosby
/v1/traders/@Cosby
/v1/traders/w_A9HdYqHdZg4lB7dr9VpqWBSLX7XZXzC7Cfb5rpDy1ueY
/v1/traders/cosby?platform=fomo

Live feed

GET/v1/feed

Fills as they land, as Server-Sent Events. Most arrive within two seconds of their block; about one in ten Solana fills takes up to a minute. You pay per fill delivered, nothing for the connection.

Query

tradersHandles or refs, comma-separated, up to 500. All tracked traders when left out.
chainsrobinhood, solana, bsc, base, arc, comma-separated.
sidebuy or sell.
min_usdOnly fills at least this size in USD.
first_buy1: only a trader’s first buy of a token.
kindsall adds airdrops and transfers; swaps only by default.
unverified1 adds cross-chain deliveries we cannot attribute to a trade.
includewallets adds the trader’s wallets and the transaction to each fill, at 5 credits a fill.
sinceA fill id to resume from; the Last-Event-ID header does the same. Up to the last 2,000 fills.

Events

helloFirst, once: your plan and when it ends (plan_ends, a unix time; null without one), your credits and the price of a fill.
fillOne per fill, with its id as the event id. The data is a fill.
noticeYour plan ends within three days, or has just ended: a reminder with plan_ends. The stream stays open.
errorOut of credits, or your client fell a megabyte behind. The stream closes after it.
: pingA comment every 15 seconds that keeps the connection open.

Can’t hold a stream? Poll /v1/fills?after=<last id> instead, at the same price per fill.

Request
curl -N "https://degentape.com/v1/feed?chains=solana&min_usd=250" \
  -H "Authorization: Bearer $DEGENTAPE_KEY"
Stream
retry: 3000
event: hello
data: {"plan":"pro","plan_ends":1794651311,"credits":981204,"cost_per_fill":1,"traders":"all"}

id: 16776508
event: fill
data: {"id":16776508,"ts":1791822953,"chain":"solana","side":"buy","kind":"swap","usd":500,"price":0.0000295669,"mcap":29569.12,"amount":16910746.07,"first_buy":true,"verified":true,"token":{"address":"DGdmHacFYkfrazHYtFEPtAbRnSru8db5cNyQkgY6QsQV","symbol":"ZKINU","name":"ZERO KNOWLEDGE INU"},"trader":{"handle":"ErnestoCheGuevara","name":null,"followers":410,"platform":"fomo","ref":"w_jYWoDD7pYvjGh8LS-ix2E4qVcM9kL7iYom3RWuV4k_Ap"}}

: ping

Fills

GET/v1/fills

Recent fills, newest first, with the same filters as the feed. Page back with before, or poll for new fills with after. A call costs at least 1 credit, even when nothing new came in.

Query

afterFills newer than this id, oldest first. Reaches back about four days.
beforeFills older than this id, newest first. Not with after.
limit1 to 100, default 100.
filterstraders, chains, side, min_usd, first_buy, kinds, unverified, include, as on the feed.

next holds the cursor for the following call. unknown_traders lists names that matched no one; truncated says the page stopped because credits ran out.

Request
curl "https://degentape.com/v1/fills?after=16776436&limit=50" \
  -H "Authorization: Bearer $DEGENTAPE_KEY"
Response
{
  "rows": [
    {
      "id": 16776437,
      "ts": 1791823968,
      "chain": "solana",
      "side": "buy",
      "kind": "swap",
      "usd": 63.02,
      "price": 0.00000884454,
      "mcap": null,
      "amount": 7125653.23,
      "first_buy": true,
      "verified": true,
      "token": { "address": "CCziFRbFVuDm5DFhebBprNSFhJ83D3n53VCBCp2hWtVK", "symbol": "HI", "name": "Hire Inu" },
      "trader": { "handle": "Enzo111", "name": null, "followers": 418, "platform": "fomo", "ref": "w_1DKmiujmzgzG4cwRfbc_pOVvgSq5nkD7u5J6xUCAmM34" }
    }
  ],
  "next": { "after": 16776437 }
}

The fill object

idIncreasing; use it as a cursor.
tsBlock time, Unix seconds.
chainrobinhood, solana, bsc, base or arc.
side, kindbuy or sell; swap unless you asked for kinds=all.
usd, price, mcapSize and token price in USD, and the market cap at the fill (null when unknown).
amountTokens bought or sold.
first_buyThe trader’s first buy of this token.
verifiedFalse only for cross-chain deliveries we cannot attribute (with unverified=1).
tokenaddress, symbol, name.
traderhandle, name, followers, platform (fomo or pump) and ref.
tx, trader.wallet, trader.solanaOnly with include=wallets.

Trader

GET/v1/traders/{handle}

A trader’s identity, what the tape saw them do (the last 30 days and all time, with realized PnL), and for fomo.family traders their full PnL from fomo.family’s own order flow.

Query

platformfomo or pump, when a handle exists on both.
Request
curl "https://degentape.com/v1/traders/unipcs" \
  -H "Authorization: Bearer $DEGENTAPE_KEY"
Responsetrimmed
{
  "trader": { "handle": "unipcs", "name": "Unipcs", "followers": 781005, "platform": "fomo", "profile_url": "https://fomo.family/profile/unipcs", "ref": "w_LPDtnXY1yeijvdLknhkXnRLaubOFwm3WPDZpsnDl4QmI" },
  "tape": {
    "last_fill_ts": 1791824785,
    "d30": { "fills": 8645, "buys": 7936, "sells": 709, "volume_usd": 1145268.79, "last_ts": 1791824785 },
    "all_time": { "tokens": 3018, "open_positions": 2698, "realized_usd": -305719.4, "buys": 1453, "sells": 34 }
  },
  "fomo": {
    "handle": "unipcs",
    "confidence": "high",
    "pnl": {
      "buy_usd": 2315091.72,
      "sell_usd": 2768336.25,
      "realized_usd": -347009.64,
      "unrealized_usd": -633073.71,
      "total_pnl_usd": -915286.42,
      "roi_total": -0.395,
      "n_buys": 1238,
      "n_sells": 819,
      "n_tokens": 1115,
      "first_ts": "2026-05-20T02:53:28.000Z",
      "last_ts": "2026-10-12T15:51:47.000Z"
    }
  }
}

Trader fills

GET/v1/traders/{handle}/fills

One trader’s fills on the tape, newest first. The same paging and filters as /v1/fills.

Request
curl "https://degentape.com/v1/traders/unipcs/fills?side=buy&limit=20" \
  -H "Authorization: Bearer $DEGENTAPE_KEY"

Positions

GET/v1/traders/{handle}/positions

A fomo.family trader’s positions across chains, valued at current prices, with realized and unrealized PnL and the totals.

Query

statusall (default), open or closed.
sortvalue (default), cost, pnl, realized or recent.
limit, offsetUp to 50 a page (default 25); next_offset gives the next page, up to an offset of 1,000.
Request
curl "https://degentape.com/v1/traders/unipcs/positions?status=open&limit=25" \
  -H "Authorization: Bearer $DEGENTAPE_KEY"
Responsetrimmed
{
  "trader": { "handle": "unipcs", "platform": "fomo", "ref": "w_LPDtnXY1yeijvdLknhkXnRLaubOFwm3WPDZpsnDl4QmI" },
  "status": "open",
  "total": 5668,
  "next_offset": 25,
  "totals": { "positions": 6004, "open": 5668, "closed": 336, "value_usd": 905919.01, "unrealized_usd": -633073.71, "realized_usd": -347009.64 },
  "rows": [
    {
      "chain": "solana",
      "address": "Dz9mQ9NzkBcCsuGPFJ3r1bS4wgqKMHBPiVuniW8Mbonk",
      "symbol": "USELESS",
      "status": "open",
      "units": 3031437.95,
      "cost_open_usd": 165298.24,
      "value_usd": 545052.54,
      "unrealized_usd": 379514.63,
      "realized_usd": 0,
      "n_buys": 13,
      "n_sells": 0,
      "first_ts": "2026-06-06T10:59:09.000Z",
      "last_ts": "2026-10-09T12:40:49.000Z",
      "mark": { "price_usd": 0.1798, "src": "dexscreener", "stale": false }
    }
  ]
}

Trades

GET/v1/traders/{handle}/trades

A fomo.family trader’s trades on every chain, newest first. Times here are ISO 8601.

Query

beforeThe next_before cursor from the previous page.
limitUp to 50 a page, default 25.
Request
curl "https://degentape.com/v1/traders/unipcs/trades?limit=25" \
  -H "Authorization: Bearer $DEGENTAPE_KEY"
Responsetrimmed
{
  "trader": { "handle": "unipcs", "platform": "fomo", "ref": "w_LPDtnXY1yeijvdLknhkXnRLaubOFwm3WPDZpsnDl4QmI" },
  "next_before": "1791820307477405.40.409",
  "rows": [
    {
      "ts": "2026-10-12T15:51:47.000Z",
      "chain": "ethereum",
      "address": "0x5bfa254a671399ff61806eb0aa1d28a474ce9248",
      "side": "buy",
      "venue": "relay_fill",
      "gross_usd": 118.71,
      "net_usd": 118.71,
      "fee_usd": 0,
      "price_usd": null
    }
  ]
}

Wallets

GET/v1/traders/{handle}/wallets

The wallets we know a trader by, EVM and Solana. Wallets are sold one trader at a time; everything else names traders by handle.

Request
curl "https://degentape.com/v1/traders/cosby/wallets" \
  -H "Authorization: Bearer $DEGENTAPE_KEY"
Responseillustrative
{
  "trader": { "handle": "cosby", "platform": "fomo", "ref": "w_A9HdYqHdZg4lB7dr9VpqWBSLX7XZXzC7Cfb5rpDy1ueY" },
  "wallets": { "evm": ["0x…"], "solana": ["…"] }
}

Leaderboard

GET/v1/leaderboard

Every fomo.family trader, ranked: 50 a page. Use a row’s handle or ref with the trader endpoints.

Query

periodall (default), 30d, 7d or 24h.
sortpnl (default), roi, capital, return, unrealized, best, volume, winrate, trades, followers or last.
dirdesc (default) or asc.
pageFrom 1, up to 100.
qSearch by handle.
Request
curl "https://degentape.com/v1/leaderboard?period=7d&sort=pnl" \
  -H "Authorization: Bearer $DEGENTAPE_KEY"
Responsetrimmed
{
  "period": "7d",
  "sort": "pnl",
  "total": 80085,
  "next_offset": 50,
  "rows": [
    {
      "n": 1,
      "handle": "cosby",
      "ref": "w_A9HdYqHdZg4lB7dr9VpqWBSLX7XZXzC7Cfb5rpDy1ueY",
      "followers": 39554,
      "pnl_usd": 657154.6,
      "unrealized_usd": -547888.31,
      "total_pnl_usd": 782555.09,
      "capital_usd": 638502.71,
      "return_pct": 122.56,
      "volume_usd": 908732.98,
      "trades": 113,
      "last_ts": "2026-10-11T21:32:17.000Z"
    }
  ]
}

Hot tokens

GET/v1/tokens/hot

The ten tokens tracked traders are buying right now, scored by buyers, size and reach. Refreshed every 15 seconds.

Request
curl "https://degentape.com/v1/tokens/hot" \
  -H "Authorization: Bearer $DEGENTAPE_KEY"
Responsetrimmed
{
  "rows": [
    {
      "chain": "robinhood",
      "token": "0x94641b97010608c3827fb058074889f19868ff33",
      "symbol": "VRAX",
      "mcap": 1778130,
      "change24": 413,
      "buyers": 48,
      "sellers": 19,
      "buy_usd": 57422.14,
      "sell_usd": 15199.04,
      "reach": 41195,
      "top_buyer_followers": 22945,
      "last_ts": 1791826076,
      "score": 0.904
    }
  ]
}

Token

GET/v1/tokens/{address}

A token’s market data, what tracked traders did on it, and their latest fills. A token the tape has not seen answers 404.

Request
curl "https://degentape.com/v1/tokens/0x94641b97010608c3827fb058074889f19868ff33" \
  -H "Authorization: Bearer $DEGENTAPE_KEY"
Responsetrimmed
{
  "token": { "chain": "robinhood", "mint": "0x94641b97010608c3827fb058074889f19868ff33", "symbol": "VRAX", "name": "Commander Vrax", "mcap": 1778130, "liquidity": 108364.75, "change24": 413 },
  "tracked": { "traders": 2045, "fills": 13532, "buys": 8403, "sells": 5129, "volume": 7187086.05, "first_ts": 1790724562, "last_ts": 1791826076 },
  "fills": [
    { "id": 16776476, "ts": 1791826080, "chain": "robinhood", "side": "buy", "usd": 46.48, "mcap": 1778000, "first_buy": false,
      "trader": { "handle": "iCakii", "followers": 222, "platform": "pump", "ref": "w_eqSu8a3WYa79u4RR50AC2nYJRif9X4vIAQnDVDbASour" } }
  ]
}

Theses

GET/v1/tokens/{address}/theses

The theses and callouts traders posted on a token, on fomo.family and pump.fun, each with the author’s position and how it is doing, plus a summary when there is one. Most coins have none; the list is then empty.

Request
curl "https://degentape.com/v1/tokens/0x1bd0d654e44a78d9b20dcf09fa61100013c07777/theses" \
  -H "Authorization: Bearer $DEGENTAPE_KEY"
Responsetrimmed
{
  "token": { "chain": "bsc", "mint": "0x1bd0d654e44a78d9b20dcf09fa61100013c07777", "symbol": "尤栗", "name": "Yuri", "mcap": 61885 },
  "summary": null,
  "theses": [
    {
      "platform": "fomo",
      "author": { "handle": "lats", "name": "lats", "followers": null, "ref": null },
      "text": "…this is the OG that’s going to run regardless, due to the same reasoning why it initially ran to 1m in the first place…",
      "created_at": 1791793127,
      "mcap": 152032.47,
      "likes": 6,
      "replies": 0,
      "position": { "usd": 1176.29, "entry_price": 0.000174, "pnl_usd": -316.91, "pnl_pct": -21.22, "closed": false, "source": "fomo" },
      "updates": []
    }
  ]
}

Token scan

POST/v1/scans

The report degentape.com/scan shows: how a token launched, bundles, sniper fleets, wallet farms and clusters, with a verdict and a score. Solana, BNB Chain, Ethereum and Robinhood Chain; the chain is found from the address.

Most scans take a few seconds. The call waits up to 25 for the report (200); a longer one answers 202 with the scan’s id to fetch below. A scan that fails answers 502 and gives its credits back. One scan at a time per account.

Your account’s own report of a token from the last max_age seconds comes back again for free, marked "reused": true.

Wallets are never named after their trader in a report. The traders the scan recognised are listed apart in report.known_traders, by handle; a trader’s wallets are under Wallets.

Body

addressThe token’s address. Required.
chainsolana, bnb, ethereum or robinhood. Found from the address when left out.
max_ageSeconds; default 300. 0 always runs a new scan.
waitSeconds to wait for the report, 0 to 25; default 25.

The fields can also go in the query string.

GET/v1/scans/{id}

A scan you started: its status (queued, running, done or failed) and, once done, its report. wait (0 to 25 seconds) holds the answer until it is done.

Request
curl -X POST "https://degentape.com/v1/scans"   -H "Authorization: Bearer $DEGENTAPE_KEY"   -H "Content-Type: application/json"   -d '{"address": "FCVohFrokwz6rELLNgnQT426RbRjXQMy4RY6zrUjpump"}'
Responsetrimmed
{
  "scan": {
    "id": "5b0e7c2a-3d41-4f7e-9a1c-0e6f2b8d4a17",
    "address": "FCVohFrokwz6rELLNgnQT426RbRjXQMy4RY6zrUjpump",
    "chain": "solana",
    "status": "done",
    "created_at": 1791906180,
    "completed_at": 1791906186,
    "report": {
      "token": { "symbol": "OSPREY", "name": "Osprey" },
      "verdict": "Sniper swarm at launch, no creator bundle",
      "launchVerdict": "Sniper swarm at launch, no creator bundle",
      "score": 25,
      "bundlePct": 46.28,
      "clusterPct": 19.23,
      "flags": [
        { "level": "red", "text": "cluster bought 19.2% of supply in the creation slot", "pts": 20 }
      ],
      "known_traders": [
        { "handle": "example", "name": "example", "followers": 1200, "platform": "fomo" }
      ]
    }
  }
}

Account

GET/v1/account

Your plan, credits left and limits, for the key you call with.

Response
{
  "plan": { "id": "pro", "name": "Pro", "usd": 49, "credits": 1000000, "period_start": 1791826075, "period_end": 1794418075 },
  "expired_plan": null,
  "credits": { "plan_left": 981204, "extra": 10000, "total": 991204 },
  "limits": { "plan": "pro", "rps": 15, "streams": 5 },
  "trial": { "used": true, "credits": 10000 },
  "key": "3e8fe057-e986-4871-ab7f-ba85e8538ac8"
}

Plans

GET/v1/plans

The price list: plans, the trial, top-ups and every endpoint’s cost. No key needed.

GET/v1/openapi.json

This API as an OpenAPI 3.1 document, for code generators and agents; /v1/schema answers the same. No key needed.

Request
curl "https://degentape.com/v1/plans"

Questions or a bigger plan? DM @0xbraindeds on X.