TraktorAPI
Get API key

Market

The dashboard's numbers and the market filter that selects them.

GET /v1/market answers several views in one body, and each view is also a route of its own.

A read is answered from the view the public market holds for the same filter, views and page, the one the Board and the market socket read, so an answer can be a few seconds older than the request; meta.asOf says when it was built, and a view kept through a failed rebuild comes with X-Market-Stale: 1. A filter the public market would read differently (a screen between the steps it rounds to, launchpads=other without the families, a minTradeUsd of 0), a tape or wallets page over 120 rows, or a rotation page over 40 or with another withinMinutes, is built for the request instead. The exception is a GET /v1/market/wallets page of up to 500 rows over the whole market's day, the day's windowMinutes with no chains, platforms, wallets, screen, launchpads, dexSignals or stockPairs, and feeSharing left at any. Such a page can come from the day's ranking of its first 500 wallets, made at most once a minute and used only while under three minutes old, so it can be up to three minutes older than the request, and its meta.asOf says when it was ranked.

Views and units

GET /v1/meta/filters publishes each view's units under market.cost. Naming summary in views costs nothing more, since GET /v1/market serves and charges it anyway. whales has only its own route, and takes no window and no screens.

GET /v1/market

https://api.traktor.fun

Several of the board's views over one market filter, built once.

Credential
API key
REST units
The sum of the views it serves; summary is always one of them.

Also takes the market filter.

  • viewslistquery

    Views to include; summary is always added.

    Default summaryAny of: summary, tokens, series, tape, rotation, wallets

  • limitintegerquery

    Token rows, read only with tokens.

    Default 2001–1,000

  • offsetintegerquery

    Token rows to skip, read only with tokens.

    Default 00–50,000

  • sortenumquery

    Token ranking, read only with tokens.

    Default netOne of: volume, net, pressure, turnover, conviction, bought, sold, buyers, trades, avg, price, change15m, change1h, change4h, change24h, mcap, held, fomoPnl, heldPct, liquidity, liqRatio, age, fomoHolders, holderTrend, ath, graduation, holders, topTraders

  • direnumquery

    Ranking direction, read only with tokens.

    Default descOne of: asc, desc

  • tailbooleanquery

    Includes both ends of the ranking, as the flow map draws net flow; the far end holds only rows that have the ranked figure. Cannot go with offset.

    Default false

  • namedbooleanquery

    Keeps only tokens with a name.

    Default false

  • sideenumquery

    Trade side, read only with tape.

    Default allOne of: all, buy, sell

  • minTradeUsdmoneyquery

    The smallest trade in USD, read only with tape.

    from 0

  • minWalletBalanceUsdmoneyquery

    Keeps wallets holding at least this much, in USD; it must be above 0. Read only with tape or rotation.

Limits

  • Invalid keys30 a minute, per IP
  • Wallets a balance floor may select5,000 wallets, per request

Errors

invalid_parameter, unknown_parameter, duplicate_query_parameter, limit_out_of_range, window_out_of_range, screen_conflict, too_many_addresses, filter_version_unsupported, data_unavailable, market_busy, market_fold_pending, plan_forbids, filter_too_broad, missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, quota_exhausted, rate_limit_unavailable, internal_error

curl -s "https://api.traktor.fun/v1/market?views=summary,tokens&limit=1" \
  -H "Authorization: Bearer $TRAKTOR_API_KEY"
Response 200
{
  "data": {
    "summary": {
      "buyUsd": 9412224.3,
      "sellUsd": 9000106.1,
      "netUsd": 412118.2,
      "volumeUsd": 18412330.4,
      "trades": 61204,
      "tokens": 182440,
      "wallets": 2310884,
      "lastTradeAt": "2026-10-03T12:00:00.000Z"
    },
    "tokens": [
      {
        "tokenAddress": "0x2222222222222222222222222222222222222222",
        "chain": "bnb",
        "platform": "fomo",
        "ticker": "EXAMPLE",
        "logoUrl": null,
        "buyUsd": 646119.5,
        "sellUsd": 557999.2,
        "netUsd": 88120.3,
        "volumeUsd": 1204118.7,
        "trades": 2412,
        "buyers": 1120,
        "sellers": 980,
        "priceUsd": 0.0033,
        "marketCap": 4120000,
        "marketPriceUpdatedAt": "2026-10-03T12:00:00.000Z",
        "valuationSource": "pool",
        "valuationExpiresAt": "2026-10-03T12:05:00.000Z",
        "marketPriceConfirmedAt": "2026-10-03T12:00:00.000Z",
        "priceChangePct": 12.4,
        "launchpad": null,
        "launchpadIcon": null,
        "graduated": null,
        "graduationPct": null,
        "pairTokenAddress": null,
        "pairTokenTicker": null,
        "holderRewards": null,
        "dexscreenerSocialsUpdated": null,
        "dexscreenerBoosted": null,
        "communityTakeover": null,
        "leaderboardHolders": [],
        "leaderboardHolderCount": 0,
        "topTradersBought": 41,
        "topTradersHolding": 17,
        "topTradersFlow": {
          "buyUsd": 61220.4,
          "sellUsd": 18904.1,
          "buyers": 23,
          "sellers": 9,
          "holding": 17,
          "unpriced": 2,
          "apps": [
            {
              "platform": "fomo",
              "buyUsd": 48110.2
            },
            {
              "platform": "axiom",
              "buyUsd": 13110.2
            }
          ]
        },
        "fomoHolders": 312,
        "holderCount": 4118,
        "heldUsd": 402118.2,
        "heldPct": 9.8,
        "fomoPnlUsd": 12220.4,
        "holderSpark": [
          298,
          305,
          312
        ],
        "athPrice": 0.0041,
        "xToAth": 1.24,
        "liquidity": 380120.5,
        "change15m": 1.2,
        "change1h": 4.8,
        "change4h": 9.9,
        "change24h": 12.4,
        "firstSeenAt": "2026-09-28T08:14:00.000Z",
        "launchedAt": "2026-09-28T08:11:00.000Z",
        "lastTradeAt": "2026-10-03T11:59:58.000Z",
        "metadataAt": 1791028680000,
        "gmgnAt": 1791028500000,
        "spark": [
          0,
          41220.6,
          88120.3
        ]
      }
    ]
  },
  "meta": {
    "requestId": "req_01m40t5ek8b3x7r2mh5q",
    "generatedAt": "2026-10-03T12:00:04.210Z",
    "asOf": "2026-10-03T12:00:02.000Z",
    "caveats": [
      "provider_discovered_partial"
    ],
    "page": {
      "limit": 1,
      "offset": 0,
      "returned": 1,
      "total": 1412,
      "hasMore": true,
      "inflowUsd": 2841220.55,
      "outflowUsd": 2610904.12
    }
  }
}

The market filter

The market filter is a grammar apart from the flow filter, read from the query string.

  • vintegerquery

    Grammar version; send 1, or leave it out.

    One of: 1

  • chainslistquery

    Chains to include, comma-separated; empty means all. A name outside the vocabulary is refused.

    Any of: solana, robinhood, bnb, base, arc, arbitrum, ethereum, monad, hyperevm, elysium

  • platformslistquery

    Apps to include, comma-separated; empty means all. A name outside the vocabulary is refused.

    Any of: fomo, gmgn, pump, axiom, coinbase, padre, maestro, bloom, trojan, bonkbot, bankr, photon

  • walletslistquery

    Wallet addresses, EVM or Solana, to narrow every view to their own trades; left out means any, and an empty value selects no wallets.

    up to 100 items

  • windowMinutesenumquery

    The window the views summarise, in minutes.

    Default 60One of: 5, 15, 30, 60, 240, 1440

  • launchpadslistquery

    Launchpad families, as market.launchpads in GET /v1/meta/filters lists them, each optionally chain-qualified, like bnb:flap.

  • dexSignalslistquery

    DEX signals; a token with any of them matches.

    Any of: paid, boost, cto

  • feeSharingenumquery

    Whether the token's launchpad shares its fees.

    Default anyOne of: any, shared, not_shared

  • stockPairslistquery

    Stock tickers the token pairs with, or ANY-STOCK for any stock.

    up to 12 items

  • minNetmoneyquery

    Net flow at least. A negative floor keeps outflow in view rather than screening it away.

  • maxNetmoneyquery

    Net flow at most — set it negative to find only what is being distributed.

  • minVolumemoneyquery

    Traded volume at least, both sides together.

    from 0

  • minBuyersintegerquery

    Distinct buying wallets at least — breadth, where volume is only size.

    from 0

  • minSellersintegerquery

    Distinct selling wallets at least.

    from 0

  • minTradesintegerquery

    Trades at least.

    from 0

  • minRationumberquery

    Dollars bought per dollar sold — 2 means twice as much buying as selling.

    from 0

  • minChangenumberquery

    Price move across the window, at least. Negative finds what is falling.

  • maxChangenumberquery

    Price move across the window, at most.

  • minTopTradersmoneyquery

    What the top 10,000 traders by year profit bought in the window, at least. Counted over the Board's six windows alone: on any other window, or for a buy with nothing priced, a token is in no band.

    from 0

  • minMcapmoneyquery

    Market cap at least.

    from 0

  • maxMcapmoneyquery

    Market cap at most. Tokens with no cap yet are kept — a brand-new one is small by definition.

    from 0

  • minLiqmoneyquery

    Pool depth at least — what the token can absorb before price moves.

    from 0

  • maxLiqmoneyquery

    Pool depth at most.

    from 0

  • minLiqPctnumberquery

    Depth as a share of market cap — how much of the cap there is real money behind.

    from 0

  • minHoldersintegerquery

    Wallets holding the token on chain, at least, as its data provider last counted them; a token nobody counted is in no band.

    from 0

  • minFomoHoldersintegerquery

    Wallets on fomo still holding a position.

    from 0

  • minHeldPctnumberquery

    Share of circulating supply sitting in fomo wallets — how much of the token the crowd here owns.

    from 0

  • minAthnumberquery

    Multiple back to the all-time high, at least — headroom above the current price.

    from 0

  • maxAthnumberquery

    Multiple back to the high, at most — near its own top.

    from 0

  • maxAgestringquery

    Younger than, in hours since the token launched on chain, or first traded on our tape where that came first or no launch is dated. Takes hours above zero, or a duration such as 30m, 4h or 3d.

  • minAgestringquery

    Older than, in hours since the token launched on chain, or first traded on our tape where that came first or no launch is dated. Takes hours above zero, or a duration such as 30m, 4h or 3d.

  • minCurvenumberquery

    Bonding-curve progress, at least, in percent; a token that has graduated counts as 101.

    from 0

  • maxCurvenumberquery

    Bonding-curve progress, at most, in percent; 100 keeps only tokens still on their curve.

    from 0

  • A windowMinutes outside the windows listed is 400 window_out_of_range, with the windows in details.allowed. summary, tokens and series read minute buckets and serve every window on every plan. tape, rotation and wallets read trades, so a window longer than the plan's history is 403 plan_forbids, with details.maxHistoryMinutes, details.given and the details.views that read trades.

  • A name outside the vocabulary in chains or platforms is 400 invalid_parameter, with details.parameter and details.value. Neither has a singular spelling here: chain is 400 unknown_parameter.

  • A query parameter given twice, a filter key or a route key such as limit, is 400 duplicate_query_parameter, refused before any key is read.

  • A route refuses by name a key it does not read: 400 unknown_parameter, with details.parameter, details.route and details.accepts, the keys it reads. GET /v1/market reads the keys of the views it serves, so a token board key (limit, offset, sort, dir, tail or named) sent without views=tokens is unknown_parameter too, with details.requires.

  • A floor above its own ceiling, such as minMcap over maxMcap, is 400 screen_conflict.

  • Beside the families market.launchpads lists, launchpads takes other for a launchpad outside them and unknown for a token with none. No view lists a token with none unless it is a stock an issuer verifies, so unknown selects only those, and no view lists a major, such as a stablecoin or a wrapped or bridged coin, whatever its tag; tape and rotation drop the other trades and pairs after reading their page, so a page can come back short. A member that names a chain, as bnb:flap, applies on that chain alone and replaces the members without one there; every other chain reads those. Send only members that name a chain and every other chain matches nothing.

  • In stockPairs, NVDA matches a token quoted in any issuer's verified NVDA contract, or in a quote token whose own symbol is NVDA. ANY-STOCK matches only a quote contract an issuer has verified on that chain; a stock-like symbol alone never qualifies for it. GET /v1/meta/filters lists the issuer registries behind the verified contracts under market.coverage.stockRegistrySources, each with its own status, so one registry's outage reads as partial coverage, not as missing stocks.

  • dexSignals keeps a token carrying any of the signals it names: paid, a paid DEX profile and social update; boost, DEX boost spend; cto, a reported community takeover. GET /v1/meta/filters lists them with their labels under market.dexSignals.

  • A money key takes exact dollars: 300 is $300, and k, m or b scales it.

  • A screen leaves out a token whose value it reads was never measured, and only a maxMcap sent without a minMcap keeps one: a token with no market cap yet is small. A token row's liquidity of null is unread, so minLiq, maxLiq and minLiqPct drop it, and minLiqPct, liquidity as a percent of the market cap, also drops a token with no market cap or with either at zero. minAth and maxAth screen the multiple from the price back to the token's recorded high before the rounding a token row's xToAth shows, except that a token at or above its high counts as 1 or less where xToAth is null; a token with no recorded high or no price, or either at zero, is in no band.

  • minWalletBalanceUsd is resolved to a set of wallets before any view runs, and a floor that selects more wallets than the limit on the view's block is 422 filter_too_broad, with details.limit, details.parameter and, when the refusal counted them, details.matched: raise the floor.

Pages and meta

The token board is the only paged view, on GET /v1/market/tokens and on GET /v1/market with views=tokens. It ranks by net flow, the most bought first, unless sort and dir say otherwise. Its meta.page holds limit, offset, returned, total and hasMore, and two totals over every token the ranking took in, not the page alone: inflowUsd, the net flow into the tokens that took money in, and outflowUsd, out of those that lost it. The Board's flow map is sort=net&tail=1: the limit largest inflows and the limit largest outflows, with those two totals, which size its two panes. The far end of a tail=1 read holds only rows that have the figure it ranks by, so where fewer rows have it the answer is shorter than twice the limit. Each page is read from its own view of the board, so a row can move between one page and the next; the largest limit takes the most rows from one ranking. A flag takes 0, 1, true or false, tail=1 goes with an offset of zero only, and GET /v1/meta/filters lists the sort keys under market.ranking.

The views that read trades add meta.retention. Every view's meta.caveats qualify the chains and apps its filter selects, whales taking its chains alone, and a minTradeUsd adds usd_amount_nullable. Two look wider: coverage_unread whatever the filter selects, and data_stale for a stale pair on the filter's chains, whatever its app. Each is listed in Caveats. Coinbase Wallet's and Bankr's trades are read with known gaps, so a filter that takes in either app on a chain where it is tracked, as the default filter does, answers with provider_discovered_partial, and that pair's coverageNote in GET /v1/alert-capabilities says what is missed. Inside summary, the tokens and wallets counts take in every token and wallet the index knows, and lastTradeAt is the latest block time in the whole index, whatever the filter selects; every other figure there is the filter's. Those three are read at most a second before the build while the database answers within a tenth of a second, and up to thirty seconds before it while it is slower, so lastTradeAt can trail the newest trade by that much.

Fields and clocks

  • meta.asOf dates the body: when its view was built, or, where a day's rotation or wallets come from the board the server keeps of them, the older of the two.

  • A token row dates its enrichment apart from meta.asOf, in Unix milliseconds: metadataAt and gmgnAt for its two data providers' last answers. Its launchedAt is an ISO time, when the token was created on chain by one data provider's record, else another's, and null where neither dated it; firstSeenAt is its first trade on our tape, and minAge and maxAge count from the earlier of the two.

  • minCurve and maxCurve screen the bonding curve's progress in percent, a graduated token counting as 101: maxCurve=100 keeps tokens still on their curve, minCurve=101 graduated ones, and a token whose progress nobody measured is in no band.

  • A token row's lastTradeAt is an ISO time, the newest trade we recorded for the token, by any app we track whatever platforms selects or as a verified swap on a pool we capture, as of the row's build, and null where we have recorded none.

  • liquidity is the USD the market pool itself holds, read on chain while the token trades or is viewed, and null where no on-chain reader covers the market.

  • A token row's holderCount is every wallet holding the token on chain, as one data provider last counted them, else another's last count, the number the token page's header shows, and null where neither counted; sort=holders ranks by it, and minHolders keeps tokens whose holderCount is at least that many, a token neither provider counted in no band.

  • A token row's fomoHolders, heldUsd and heldPct, and a tape row's fomoHolders, measure the fomo wallets Traktor indexes, and are null, not zero, in a view whose platforms leave fomo out. heldPct is those wallets' observed positions as a share of the token's whole supply, a data provider's total where the stored supply is a provider's float, and is also null where that supply is unknown or the share would pass 100%.

  • In tokens, and in GET /v1/stocks, a token row's topTradersBought counts the top 10,000 traders by realized year who bought the token on our tape over the last day, and topTradersHolding those of them whose last trade of it was a buy, whatever the window; both are null while unmeasured. Beside them, topTradersFlow is what those traders did in the token over the request's window: buyUsd and sellUsd (what was priced; null for a side they traded with nothing priced), buyers and sellers, holding (the window's buyers whose last trade of it was a buy), unpriced (their trades with no price, either way; above zero, a side summed beside it may be partly priced), and apps, their priced buys app by app, the most first, through every app whatever platforms selects. It is null while unmeasured; a token none of them traded in the window carries zeros and no apps.

  • minTopTraders keeps tokens whose topTradersFlow.buyUsd is at least that many dollars: a token none of the top traders bought passes minTopTraders=0 and no higher, and one whose flow is null or whose buys carried no price is in no band. Until the server holds the top traders' count, as for a while after it starts, a read with minTopTraders is 503 data_unavailable, as a view still warming up is.

valuationSource says where a row's price and market cap come from: pool for a price observed on chain, swap for the token's last measured swap on its market pool, shown until a later pool reading replaces it and so with no valuationExpiresAt, held for our own pool reading observed after that swap and shown past its freshness, with no valuationExpiresAt (the token's quote and detail date it by marketPriceObservedAt; a row's marketPriceUpdatedAt still moves with its quote's dollar rate, so it understates the reading's age), or null for none. dexscreener, gmgn and codex remain in the schema but no longer appear: no provider's quote prices a token. marketPriceUpdatedAt dates the valuation's input, marketPriceConfirmedAt the confirmed chain head a pool price was read at, null for an unconfirmed observation, and valuationExpiresAt when the valuation stops being served. GET /v1/meta/filters classes each field under market.provenance and lists every source a field can come from under market.provenanceSources.

Every minute of the window has a series point, at zero when nothing traded. A chain where no app of ours is captured, today elysium, reads null in every point, never 0: until 2026-11-08 every chain field was a number, so a client that sums them treats null as unmeasured. Its minute counts minutes since the Unix epoch, and the chain fields and the platforms fields each sum to the minute's net flow as the apps routed it: a Solana token row's netUsd also takes out its exitUsd, which the series does not, so the series over the window can sum to more than the tokens' net.

When a read fails

Three refusals mean the read could not run at that moment, and each is worth retrying:

  • 503 data_unavailable: the data behind the view is still warming up or failed to build; details.reason says which. Retry after Retry-After.

  • 503 market_busy: the server is already holding as many reads waiting on a build, or running as many builds for requests of their own, as it allows. A request identical to one in flight joins it instead. Retry shortly.

  • 503 market_fold_pending: a committed batch of trades is still being folded into the view. Retry shortly, backing off if it persists.

Every refusal of the query, from a repeated key to plan_forbids, comes before admission and carries no X-Traktor-Cost. One raised once the read has started, filter_too_broad or the three above, gives its units back: X-Traktor-Cost: 0 (Limit headers).

The views

GET /v1/market/summary

https://api.traktor.fun

The window's buys, sells, net flow, volume and trades, with how many tokens and wallets the index knows and the newest trade. A side whose every trade went unpriced is null, as is the net beside it, and the volume when nothing was priced. On Solana the net also takes out the direct exits its tokens rows take out, the ones a row's exitUsd names; under wallets, or where those were not read, it is buys less sells.

Credential
API key
REST units
1 unit

Also takes the market filter.

Limits

  • Invalid keys30 a minute, per IP

Errors

invalid_parameter, unknown_parameter, duplicate_query_parameter, window_out_of_range, screen_conflict, too_many_addresses, filter_version_unsupported, data_unavailable, market_busy, market_fold_pending, missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, quota_exhausted, rate_limit_unavailable, internal_error

curl -s "https://api.traktor.fun/v1/market/summary" \
  -H "Authorization: Bearer $TRAKTOR_API_KEY"
Response 200
{
  "data": {
    "buyUsd": 9412224.3,
    "sellUsd": 9000106.1,
    "netUsd": 412118.2,
    "volumeUsd": 18412330.4,
    "trades": 61204,
    "tokens": 182440,
    "wallets": 2310884,
    "lastTradeAt": "2026-10-03T12:00:00.000Z"
  },
  "meta": {
    "requestId": "req_01m40t5ek8b3x7r2mh5q",
    "generatedAt": "2026-10-03T12:00:04.210Z",
    "asOf": "2026-10-03T12:00:02.000Z",
    "caveats": [
      "provider_discovered_partial"
    ]
  }
}

GET /v1/market/tokens

https://api.traktor.fun

The board's token rows, ranked and paged by offset. A row's buyUsd or sellUsd is null where that side traded and none of its trades was priced, its netUsd beside it, and its volumeUsd where no trade was; such a figure ranks last either way and clears no screen. Beside a null netUsd the row's spark is empty. A Solana row's netUsd and spark also take out exitUsd, what the apps' own buyers sold on no app's route in the window: null where those were not read and under wallets, whose rows take none out, and absent on other chains. A token whose fee sharing sends every creator fee to OTC desks' rewards wallet adds otcDesk: true; the field is absent otherwise.

Credential
API key
REST units
3 units

Also takes the market filter.

  • limitintegerquery

    Rows to return.

    Default 2001–1,000

  • offsetintegerquery

    Rows to skip.

    Default 00–50,000

  • sortenumquery

    The ranking.

    Default netOne of: volume, net, pressure, turnover, conviction, bought, sold, buyers, trades, avg, price, change15m, change1h, change4h, change24h, mcap, held, fomoPnl, heldPct, liquidity, liqRatio, age, fomoHolders, holderTrend, ath, graduation, holders, topTraders

  • direnumquery

    Ranking direction.

    Default descOne of: asc, desc

  • tailbooleanquery

    Includes both ends of the ranking, as the flow map draws net flow; the far end holds only rows that have the ranked figure. Cannot go with offset.

    Default false

  • namedbooleanquery

    Keeps only tokens with a name.

    Default false

Limits

  • Invalid keys30 a minute, per IP

Errors

invalid_parameter, unknown_parameter, duplicate_query_parameter, limit_out_of_range, window_out_of_range, screen_conflict, too_many_addresses, filter_version_unsupported, data_unavailable, market_busy, market_fold_pending, missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, quota_exhausted, rate_limit_unavailable, internal_error

curl -s "https://api.traktor.fun/v1/market/tokens?limit=1" \
  -H "Authorization: Bearer $TRAKTOR_API_KEY"
Response 200
{
  "data": [
    {
      "tokenAddress": "0x2222222222222222222222222222222222222222",
      "chain": "bnb",
      "platform": "fomo",
      "ticker": "EXAMPLE",
      "logoUrl": null,
      "buyUsd": 646119.5,
      "sellUsd": 557999.2,
      "netUsd": 88120.3,
      "volumeUsd": 1204118.7,
      "trades": 2412,
      "buyers": 1120,
      "sellers": 980,
      "priceUsd": 0.0033,
      "marketCap": 4120000,
      "marketPriceUpdatedAt": "2026-10-03T12:00:00.000Z",
      "valuationSource": "pool",
      "valuationExpiresAt": "2026-10-03T12:05:00.000Z",
      "marketPriceConfirmedAt": "2026-10-03T12:00:00.000Z",
      "priceChangePct": 12.4,
      "launchpad": null,
      "launchpadIcon": null,
      "graduated": null,
      "graduationPct": null,
      "pairTokenAddress": null,
      "pairTokenTicker": null,
      "holderRewards": null,
      "dexscreenerSocialsUpdated": null,
      "dexscreenerBoosted": null,
      "communityTakeover": null,
      "leaderboardHolders": [],
      "leaderboardHolderCount": 0,
      "topTradersBought": 41,
      "topTradersHolding": 17,
      "topTradersFlow": {
        "buyUsd": 61220.4,
        "sellUsd": 18904.1,
        "buyers": 23,
        "sellers": 9,
        "holding": 17,
        "unpriced": 2,
        "apps": [
          {
            "platform": "fomo",
            "buyUsd": 48110.2
          },
          {
            "platform": "axiom",
            "buyUsd": 13110.2
          }
        ]
      },
      "fomoHolders": 312,
      "holderCount": 4118,
      "heldUsd": 402118.2,
      "heldPct": 9.8,
      "fomoPnlUsd": 12220.4,
      "holderSpark": [
        298,
        305,
        312
      ],
      "athPrice": 0.0041,
      "xToAth": 1.24,
      "liquidity": 380120.5,
      "change15m": 1.2,
      "change1h": 4.8,
      "change4h": 9.9,
      "change24h": 12.4,
      "firstSeenAt": "2026-09-28T08:14:00.000Z",
      "launchedAt": "2026-09-28T08:11:00.000Z",
      "lastTradeAt": "2026-10-03T11:59:58.000Z",
      "metadataAt": 1791028680000,
      "gmgnAt": 1791028500000,
      "spark": [
        0,
        41220.6,
        88120.3
      ]
    }
  ],
  "meta": {
    "requestId": "req_01m40t5ek8b3x7r2mh5q",
    "generatedAt": "2026-10-03T12:00:04.210Z",
    "asOf": "2026-10-03T12:00:02.000Z",
    "caveats": [
      "provider_discovered_partial"
    ],
    "page": {
      "limit": 1,
      "offset": 0,
      "returned": 1,
      "total": 1412,
      "hasMore": true,
      "inflowUsd": 2841220.55,
      "outflowUsd": 2610904.12
    }
  }
}

GET /v1/market/series

https://api.traktor.fun

Net flow per minute across the window: minute, a field per chain, volume, unpricedBuys and unpricedSells, the trades each side that carried no dollar figure and so are left out of the minute's dollars (a floor), and platforms with a field per app. A chain where no app of ours is captured reads null, never 0.

Credential
API key
REST units
2 units

Also takes the market filter.

Limits

  • Invalid keys30 a minute, per IP

Errors

invalid_parameter, unknown_parameter, duplicate_query_parameter, window_out_of_range, screen_conflict, too_many_addresses, filter_version_unsupported, data_unavailable, market_busy, market_fold_pending, missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, quota_exhausted, rate_limit_unavailable, internal_error

curl -s "https://api.traktor.fun/v1/market/series" \
  -H "Authorization: Bearer $TRAKTOR_API_KEY"
Response 200
{
  "data": [
    {
      "minute": 29850479,
      "solana": 0,
      "robinhood": 1204.2,
      "bnb": 41220.1,
      "base": 18002.4,
      "arc": 0,
      "arbitrum": 0,
      "ethereum": 0,
      "monad": 0,
      "hyperevm": 0,
      "elysium": null,
      "volume": 412330.4,
      "unpricedBuys": 2,
      "unpricedSells": 0,
      "platforms": {
        "fomo": 30118.9,
        "gmgn": 22480.4,
        "pump": 0,
        "axiom": 6623.2,
        "coinbase": 1204.2,
        "padre": 0,
        "maestro": 0,
        "bloom": 0,
        "trojan": 0,
        "bonkbot": 0,
        "bankr": 0,
        "photon": 0
      }
    }
  ],
  "meta": {
    "requestId": "req_01m40t5ek8b3x7r2mh5q",
    "generatedAt": "2026-10-03T12:00:04.210Z",
    "asOf": "2026-10-03T12:00:02.000Z",
    "caveats": [
      "provider_discovered_partial"
    ]
  }
}

GET /v1/market/tape

https://api.traktor.fun

The window's newest trades, each with its token's ticker, the market cap now and at the trade, its token's net flow over the window, every wallet's even under wallets, and the app that routed it; a named wallet adds who it is and, where it was measured, its realized profit over the last year with that year's win rate, and a marked one its KOL or smart-money marks. A trade in a token whose fee sharing sends every creator fee to OTC desks' rewards wallet adds otcDesk: true; the field is absent otherwise.

Credential
API key
REST units
2 units

Also takes the market filter.

  • sideenumquery

    Trade side.

    Default allOne of: all, buy, sell

  • minTradeUsdmoneyquery

    The smallest trade in USD.

    from 0

  • minWalletBalanceUsdmoneyquery

    Keeps wallets holding at least this much, in USD; it must be above 0.

  • limitintegerquery

    Rows to return.

    Default 1201–500

Limits

  • Invalid keys30 a minute, per IP
  • Wallets a balance floor may select5,000 wallets, per request

Errors

invalid_parameter, unknown_parameter, duplicate_query_parameter, limit_out_of_range, window_out_of_range, screen_conflict, too_many_addresses, filter_version_unsupported, data_unavailable, market_busy, market_fold_pending, plan_forbids, filter_too_broad, missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, quota_exhausted, rate_limit_unavailable, internal_error

curl -s "https://api.traktor.fun/v1/market/tape" \
  -H "Authorization: Bearer $TRAKTOR_API_KEY"
Response 200
{
  "data": [
    {
      "id": "bnb:0x7f3a9c1e5d2b4a6f8e0c1d3b5a7f9e2c4d6b8a0f1e3c5d7b9a2f4e6c8d0b1a3c:0",
      "chain": "bnb",
      "platform": "fomo",
      "ts": "2026-10-03T12:00:00.000Z",
      "wallet": "0x1111111111111111111111111111111111111111",
      "tokenAddress": "0x2222222222222222222222222222222222222222",
      "ticker": "EXAMPLE",
      "logoUrl": null,
      "side": "buy",
      "usdAmount": 412.5,
      "tokenAmount": 125000,
      "marketCap": 4120000,
      "marketCapAtTrade": 4120000,
      "fomoHolders": 312,
      "netUsd": 88120.3,
      "launchpad": null,
      "launchpadIcon": null,
      "pairTokenAddress": null,
      "pairTokenTicker": null,
      "holderRewards": null,
      "dexscreenerSocialsUpdated": null,
      "dexscreenerBoosted": null,
      "communityTakeover": null,
      "handle": "example",
      "displayName": "Example",
      "avatarUrl": "https://example.com/avatars/example.png",
      "x": "example_x",
      "realizedYearUsd": 48210.6,
      "winRateYear": 0.58,
      "marks": [
        "kol"
      ]
    }
  ],
  "meta": {
    "requestId": "req_01m40t5ek8b3x7r2mh5q",
    "generatedAt": "2026-10-03T12:00:04.210Z",
    "asOf": "2026-10-03T12:00:04.210Z",
    "caveats": [
      "provider_discovered_partial"
    ],
    "retention": {
      "horizonHours": 24,
      "floorAt": "2026-10-02T12:00:04.210Z",
      "truncated": false
    }
  }
}

GET /v1/market/rotation

https://api.traktor.fun

Which tokens wallets sold to buy which, summed from the sell-then-buy links the indexer pairs at capture.

Credential
API key
REST units
5 units

Also takes the market filter.

  • minWalletBalanceUsdmoneyquery

    Keeps wallets holding at least this much, in USD; it must be above 0.

  • limitintegerquery

    Rows to return.

    Default 401–200

  • withinMinutesintegerquery

    How soon after a sell the next buy must land.

    Default 301–240

Limits

  • Invalid keys30 a minute, per IP
  • Wallets a balance floor may select5,000 wallets, per request

Errors

invalid_parameter, unknown_parameter, duplicate_query_parameter, limit_out_of_range, window_out_of_range, screen_conflict, too_many_addresses, filter_version_unsupported, data_unavailable, market_busy, market_fold_pending, plan_forbids, filter_too_broad, missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, quota_exhausted, rate_limit_unavailable, internal_error

curl -s "https://api.traktor.fun/v1/market/rotation" \
  -H "Authorization: Bearer $TRAKTOR_API_KEY"
Response 200
{
  "data": [
    {
      "platform": "fomo",
      "from": "0x2222222222222222222222222222222222222222",
      "fromTicker": "EXAMPLE",
      "to": "0x3333333333333333333333333333333333333333",
      "toTicker": "OTHER",
      "usd": 61220.4,
      "wallets": 14,
      "chain": "bnb"
    }
  ],
  "meta": {
    "requestId": "req_01m40t5ek8b3x7r2mh5q",
    "generatedAt": "2026-10-03T12:00:04.210Z",
    "asOf": "2026-10-03T12:00:04.210Z",
    "caveats": [
      "provider_discovered_partial"
    ],
    "retention": {
      "horizonHours": 24,
      "floorAt": "2026-10-02T12:00:04.210Z",
      "truncated": false
    }
  }
}

GET /v1/market/wallets

https://api.traktor.fun

The wallet board: each wallet's buys, sells, net flow and trades in the window, its name and KOL or smart-money marks where a source knows them, and an imported outside opinion where one knows the wallet.

Credential
API key
REST units
3 units

Also takes the market filter.

  • limitintegerquery

    Rows to return.

    Default 1201–500

Limits

  • Invalid keys30 a minute, per IP

Errors

invalid_parameter, unknown_parameter, duplicate_query_parameter, limit_out_of_range, window_out_of_range, screen_conflict, too_many_addresses, filter_version_unsupported, data_unavailable, market_busy, market_fold_pending, plan_forbids, missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, quota_exhausted, rate_limit_unavailable, internal_error

curl -s "https://api.traktor.fun/v1/market/wallets" \
  -H "Authorization: Bearer $TRAKTOR_API_KEY"
Response 200
{
  "data": [
    {
      "wallet": "0x1111111111111111111111111111111111111111",
      "handle": "example",
      "avatarUrl": "https://example.com/avatars/example.png",
      "balanceUsd": null,
      "buyUsd": 120400.2,
      "sellUsd": 98002.7,
      "netUsd": 22397.5,
      "volumeUsd": 218402.9,
      "trades": 61,
      "tokens": 9,
      "lastTradeAt": "2026-10-03T11:58:12.000Z",
      "cieloPnl30dUsd": null,
      "cieloRoi30dPct": null,
      "cieloWinratePct": null,
      "marks": [
        "kol"
      ]
    }
  ],
  "meta": {
    "requestId": "req_01m40t5ek8b3x7r2mh5q",
    "generatedAt": "2026-10-03T12:00:04.210Z",
    "asOf": "2026-10-03T12:00:04.210Z",
    "caveats": [
      "provider_discovered_partial"
    ],
    "retention": {
      "horizonHours": 24,
      "floorAt": "2026-10-02T12:00:04.210Z",
      "truncated": false
    }
  }
}

GET /v1/market/whales

https://api.traktor.fun

Wallets holding at least a balance floor, by holdings rather than by window. meta.asOf is when the positions were read, which can be up to five minutes before the request.

Credential
API key
REST units
3 units
  • vintegerquery

    Grammar version; send 1, or leave it out.

    One of: 1

  • chainslistquery

    Chains to include, comma-separated; empty means all.

    Any of: solana, robinhood, bnb, base, arc, arbitrum, ethereum, monad, hyperevm, elysium

  • minWalletBalanceUsdmoneyrequiredquery

    Keeps wallets holding at least this much, in USD; it must be above 0.

  • limitintegerquery

    Rows to return.

    Default 1201–500

Limits

  • Invalid keys30 a minute, per IP
  • Wallets a balance floor may select5,000 wallets, per request

Errors

invalid_parameter, unknown_parameter, duplicate_query_parameter, limit_out_of_range, filter_version_unsupported, filter_too_broad, missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, quota_exhausted, rate_limit_unavailable, internal_error

curl -s "https://api.traktor.fun/v1/market/whales?minWalletBalanceUsd=50k" \
  -H "Authorization: Bearer $TRAKTOR_API_KEY"
Response 200
{
  "data": [
    {
      "wallet": "0x1111111111111111111111111111111111111111",
      "chain": "bnb",
      "balanceUsd": 1204330.1,
      "tokens": 3,
      "top": [
        {
          "ticker": "EXAMPLE",
          "tokenAddress": "0x2222222222222222222222222222222222222222",
          "usd": 802118.4
        }
      ],
      "lastTradeAt": "2026-10-03T11:40:00.000Z"
    }
  ],
  "meta": {
    "requestId": "req_01m40t5ek8b3x7r2mh5q",
    "generatedAt": "2026-10-03T12:00:04.210Z",
    "asOf": "2026-10-03T12:00:04.210Z",
    "caveats": [
      "provider_discovered_partial"
    ]
  }
}
    Market · Traktor API