Public market and search
Reading market resources and searching tokens over plain HTTP.
Both routes answer anyone, from any origin and with no key, within the limits on their endpoint blocks.
GET /v1/public/market
One market resource's committed view, the same body Traktor's own pages read.
- Credential
- None
resourceenumrequiredqueryWhich resource to read.
One of:
flow,tape,marketSwaps,token,quote,tokenHolders,tokenSwapTraders,tokenSignals,tokenTrades,tokenTopBuys,tokenTopTraders,tokenPoolSwaps,tokenCandles,saved,stocks,feed,assets,perps,perpMarket,perpTraders,perpAccount,traderDirectory,traderFlows,trader,traderPortfolio,poolquerystringqueryThe resource's parameters as one URL-encoded query string.
Resources
| Resource | Keys | Example query | What it answers |
|---|---|---|---|
flow | the market keys, views, view, limit, sort, dir, tail, named, offset, minPnl, minWinRate, marks, namedOnly | chain=bnb&platform=fomo&window=240&views=tokens&sort=mcap&limit=40 | The board's combined views over a market query. |
tape | the market keys, minPnl, minWinRate, marks, namedOnly | chain=bnb&platform=gmgn&side=buy&minTrade=500 | The newest tracked-app trades by arrival, at most 120, with no summary. |
marketSwaps | chain, address, platform, scope, window, limit | scope=market&chain=base&address=0x4444444444444444444444444444444444444444 | Executions in a token's pools by every app, or only the tracked apps. |
token | chain, address, interval | chain=bnb&address=0x2222222222222222222222222222222222222222&interval=5m | One token's detail and candles. |
quote | chain, address | chain=bnb&address=0x2222222222222222222222222222222222222222 | One token's current valuation; a Solana mint keeps its case. |
tokenHolders | chain, address | chain=bnb&address=0x2222222222222222222222222222222222222222 | One token's holder list. |
tokenSwapTraders | chain, address | chain=bnb&address=0x2222222222222222222222222222222222222222 | What each trader in one token's newest swaps did in the token, as a data provider counts its swaps, keyed by wallet. |
tokenSignals | chain, address | chain=bnb&address=0x2222222222222222222222222222222222222222 | One token's signals. |
tokenTrades | chain, address | chain=bnb&address=0x2222222222222222222222222222222222222222 | One token's newest tracked-app swaps by block time, each field null when never measured; platform is traktor for a swap the tape booked as fomo's from a wallet Traktor made for one of its accounts. |
tokenTopBuys | chain, address, side | chain=bnb&address=0x2222222222222222222222222222222222222222&side=all | What the top 10,000 traders by year profit, the top traders' flow's widest tier, bought or sold of one token over the tape's day, newest first: each trader's buys and sells a minute, the side not read null, the dollars null where none was priced and the tokens null where their rows were not read, with each trader's realized week, month and year as measured, a week or month unmeasured null, and every wallet the directory lists for them. |
tokenTopTraders | chain, address, window, offset | chain=bnb&address=0x2222222222222222222222222222222222222222&window=60 | Who among the same top 10,000 traders traded one token over one of the board's windows: each one's priced dollars each way, trades, unpriced trades, apps, last trade, whether their last trade of it over the day was a buy, every wallet the directory lists for them and their PnL in the token where a data provider has answered for each of their wallets, the most bought first, 50 named a page from offset and the rest past it counted; and every one of them added up as the board row's topTradersFlow, with each app's buyers; and others, every other wallet's buys over the same minutes added up the same way, null where the server's held trades don't reach back over the window, after its syncs spoiled two reads of them running, or when the read fails. A trader nobody names has a null name, never their address as one. |
tokenPoolSwaps | chain, address | chain=bnb&address=0x2222222222222222222222222222222222222222 | One token's swaps on its market pool from the every-swap feed, newest first: the post-swap dollar price the chart's live candle rolls from (swaps), and the pool's newest swaps priced or not, each with its transaction and the wallet that made it where the chain proves one (listed); feed is none where the feed does not cover the pool. |
tokenCandles | chain, address, interval, limit, before | chain=bnb&address=0x2222222222222222222222222222222222222222&interval=5m | One token's price candles; before, in Unix seconds, pages back. |
saved | tokens, window | tokens=bnb:0x2222222222222222222222222222222222222222&window=60 | A watchlist's rows. |
stocks | the market keys, rank, stock, offset, sort, dir | rank=volume | Stock-paired tokens grouped by their stock. |
feed | the market keys, since, limit, types, tiers | limit=50 | The signal feed. |
assets | none | The verified stock registry. | |
perps | views, limit, window, rank, coin, minVolume, minOi, minLev, funding, side, minTrade, delisted | views=markets&limit=50 | The perps board; refused with invalid_query while the service runs without perps. |
perpMarket | coin, window | coin=BTC&window=60 | One perp market; refused with invalid_query while the service runs without perps. |
perpTraders | sort, dir, vaults, minValue, minVolume, offset, limit | sort=pnlWeek&limit=50 | The top 1,000 perps accounts by 30-day perps profit among those the tape has seen trade $50,000 in a day, screened, sorted and paged: each one's rank among the users and subaccounts, its perps profit and volume over a day, a week, 30 days and all time as last scored, its account value, its largest position and how many it holds while it is followed, its win rate once its fills are read, and its page code (code, null until its next score writes one), a figure not measured null. A vault has no rank and keeps its documented name, and no other account is named. Refused with invalid_query while the service runs without perps. |
perpAccount | code | code=Ab3dEf6hIj9k | One ranked perps account's page, found by the code its row on perpTraders carries, never by an address: its rank, its perps profit and volume over the four windows as last scored, its account value, every position it holds while it is followed, its win rate once read, and the fills our tape saw it take over the last day as the aggressor, by hour, by market and by minute, the newest 100 minutes. A code no ranked account carries answers missing, and what it took is null until the day's takers are all counted. Refused with invalid_query while the service runs without perps. |
traderDirectory | sort, dir, chain, platform, window, q, side, minVolume, minTrades, minHoldings, minPnl, minWinRate, minAvgTrade, minActiveHours, launchpad, dex, fees, pair, minMcap, maxMcap, minLiq, maxLiq, minLiqPct, minHolders, minFomoHolders, minHeldPct, minAth, maxAth, maxAge, minAge, minCurve, maxCurve, offset, limit | sort=pnl&limit=50 | The traders directory, screened and paged. With any of the Board's token filters, only traders with a year measured who traded a passing token in the window are listed, their window, day and active hours counted in those tokens alone, their year, holdings and dates the account's. |
traderFlows | top, window, chain, platform, side, offset, launchpad, dex, fees, pair, minMcap, maxMcap, minLiq, maxLiq, minLiqPct, minHolders, minFomoHolders, minHeldPct, minAth, maxAth, maxAge, minAge, minCurve, maxCurve | top=10000&window=60 | What the traders directory's best by year profit bought and sold over the window, token by token: the busiest 48, and the 10 bought and the 10 sold the most by net, each with its market on the Board's day, and how many they netted each way. With side, a page of 20 of that side by net instead. Lists only the tokens the Board's day lists, and takes the Board's token filters. |
trader | wallet | wallet=0x1111111111111111111111111111111111111111 | One wallet's profile. |
traderPortfolio | wallet | wallet=0x1111111111111111111111111111111111111111 | The trader page's read of one wallet and its fomo account's wallet of the other kind, from a data provider: their performance, holdings, newest trades and every token they traded, with the account. |
pool | chain, token | chain=bnb&token=0x55d398326f99059ff775485246999027b3197955 | One token's pool depth: state: "ok" with the deepest readable pool's price ranges, price and caps, or state: "error" and a code. |
The market keys: window, chain, platform, wallets, launchpad, dex, fees, pair, side, minTrade, minBalance, minNet, maxNet, minVolume, minBuyers, minSellers, minTrades, minRatio, minChange, maxChange, minTopTraders, minMcap, maxMcap, minLiq, maxLiq, minLiqPct, minHolders, minFomoHolders, minHeldPct, minAth, maxAth, maxAge, minAge, minCurve, maxCurve.
flow bounds:
viewslistqueryViews to build, comma-separated;
allbuilds every one. Sendviewsorview, not both.Default
allAny of:all,summary,tokens,series,tape,rotation,walletsviewlistqueryThe same as
views; send one of the two.Any of:
all,summary,tokens,series,tape,rotation,walletslimitintegerqueryToken rows, read only with
tokensorall; with nolimit, a read gets 100 whenviewsis left out, is exactlyallor namestokens, and no default limit when it listsallbeside other views withouttokens.Default
1001–1,000sortenumqueryToken ranking, read only with
tokensorall.Default
volumeOne 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,topTradersdirenumqueryRanking direction, read only with
tokensorall.Default
descOne of:asc,desctailbooleanqueryIncludes both ends of the ranking, as
1,0,trueorfalse; the far end holds only rows that have the ranked figure, and it cannot go withoffset.Default
falsenamedbooleanqueryKeeps only tokens with a name, as
1,0,trueorfalse.Default
falseoffsetintegerqueryToken rows to skip before the page of
limitrows, read only withtokensorall; it cannot go withtail, and wherelimithas no default, as withalllisted beside other views withouttokens, it needs alimitsent with it.Default
00–100,000minPnlnumberqueryKeeps trades by wallets that realized at least this over the last year, in USD, which may be negative; a wallet with no year measured within the day never clears it. Only with
views=tape, and it narrows the tape alone.-1,000,000,000,000–1,000,000,000,000
minWinRatenumberqueryKeeps trades by wallets whose win rate over the last year is at least this, in percent; a wallet with none measured never clears it, even at 0. Only with
views=tape, and it narrows the tape alone.0–100
markslistqueryKeeps trades by wallets a source labels with any of these. Only with
views=tape, and it narrows the tape alone.Any of:
kol,smart_moneynamedOnlybooleanqueryKeeps trades by wallets some source names, as
1,0,trueorfalse. Only withviews=tape, and it narrows the tape alone.Default
false
tape bounds:
minPnlnumberqueryKeeps trades by wallets that realized at least this over the last year, in USD, which may be negative; a wallet with no year measured within the day never clears it.
-1,000,000,000,000–1,000,000,000,000
minWinRatenumberqueryKeeps trades by wallets whose win rate over the last year is at least this, in percent; a wallet with none measured never clears it, even at 0.
0–100
markslistqueryKeeps trades by wallets a source labels with any of these.
Any of:
kol,smart_moneynamedOnlybooleanqueryKeeps trades by wallets some source names, as
1,0,trueorfalse.Default
false
marketSwaps bounds:
chainlistqueryChains to read, comma-separated; empty means every chain it covers, all but ethereum, monad, hyperevm and elysium. A chain it does not cover is refused, and a token
addressneeds exactly one chain.Any of:
solana,robinhood,bnb,base,arc,arbitrumaddressaddressqueryNarrows to one token's pools; needs exactly one
chain, and a Solana mint keeps its case.platformlistqueryTracked apps to keep, comma-separated; needs
scope=tracked-apps.Any of:
fomo,gmgn,pump,axiom,coinbase,padre,maestro,bloom,trojan,bonkbot,bankr,photonscopeenumqueryEvery app's swaps, or only the tracked apps';
platformneedstracked-apps.Default
marketOne of:market,tracked-appswindowintegerqueryHow far back, in minutes; reaches past the board's windows.
Default
601–10,080limitintegerquerySwaps to return.
Default
1201–120
token bounds:
chainenumrequiredqueryThe token's chain.
One of:
solana,base,bnb,robinhood,arc,arbitrum,ethereumaddressaddressrequiredqueryThe token's contract address; a Solana mint keeps its case.
intervalenumqueryCandle width.
Default
5mOne of:1m,5m,15m,1h,4h,12h,1d
quote bounds:
chainenumrequiredqueryThe token's chain.
One of:
solana,base,bnb,robinhood,arc,arbitrum,ethereumaddressaddressrequiredqueryThe token's contract address; a Solana mint keeps its case.
tokenHolders bounds:
chainenumrequiredqueryThe token's chain.
One of:
solana,base,bnb,robinhood,arc,arbitrum,ethereumaddressaddressrequiredqueryThe token's contract address; a Solana mint keeps its case.
tokenSwapTraders bounds:
chainenumrequiredqueryThe token's chain.
One of:
solana,base,bnb,robinhood,arc,arbitrum,ethereumaddressaddressrequiredqueryThe token's contract address; a Solana mint keeps its case.
tokenSignals bounds:
chainenumrequiredqueryThe token's chain.
One of:
solana,base,bnb,robinhood,arc,arbitrum,ethereumaddressaddressrequiredqueryThe token's contract address; a Solana mint keeps its case.
tokenTrades bounds:
chainenumrequiredqueryThe token's chain.
One of:
solana,base,bnb,robinhood,arc,arbitrum,ethereumaddressaddressrequiredqueryThe token's contract address; a Solana mint keeps its case.
tokenTopBuys bounds:
chainenumrequiredqueryThe token's chain.
One of:
solana,base,bnb,robinhood,arc,arbitrum,ethereumaddressaddressrequiredqueryThe token's contract address; a Solana mint keeps its case.
sideenumqueryThe buys, the sells or both; with none named, the buys, and
sellsis null.Default
buyOne of:buy,sell,all
tokenTopTraders bounds:
chainenumrequiredqueryThe token's chain.
One of:
solana,base,bnb,robinhood,arc,arbitrum,ethereumaddressaddressrequiredqueryThe token's contract address; a Solana mint keeps its case.
windowenumqueryThe window, in minutes: one of the board's.
Default
60One of:5,15,30,60,240,1440offsetintegerqueryTraders to skip before the page, a multiple of 50.
Default
00–9,950
tokenPoolSwaps bounds:
chainenumrequiredqueryThe token's chain.
One of:
solana,base,bnb,robinhood,arc,arbitrum,ethereumaddressaddressrequiredqueryThe token's contract address; a Solana mint keeps its case.
tokenCandles bounds:
chainenumrequiredqueryThe token's chain.
One of:
solana,base,bnb,robinhood,arc,arbitrum,ethereumaddressaddressrequiredqueryThe token's contract address; a Solana mint keeps its case.
intervalenumqueryCandle width.
Default
5mOne of:1m,5m,15m,1h,4h,12h,1dlimitintegerqueryCandles to return.
Default
3001–1,000beforeintegerqueryOnly candles before this Unix time, in seconds.
from 1
saved bounds:
tokenslistquerySaved tokens as
chain:address, comma-separated, on solana, base, bnb, robinhood, arc or ethereum; an empty list is an empty watchlist.up to 200 items
windowenumqueryHow far back, in minutes; one of the dashboard's.
Default
60One of:5,15,30,60,240,1440
stocks bounds:
rankenumqueryHow the stock groups rank.
Default
volumeOne of:volume,net,mcapstockstringqueryNarrows to one stock group:
ticker:AAPL, oraddress:<chain>:<token>on any chain the stock registry reads, a0x…contract or a Solana mint.offsetintegerqueryRows to skip inside the stock group; needs
stock.Default
00–100,000sortenumqueryOrders each stock group's tokens, before
offset; without it they followrank.One 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,topTradersdirenumqueryDirection of
sort.Default
descOne of:asc,desc
feed bounds:
sincestringqueryThe
cursora previous read returned, an ISO 8601 time: only signals that landed after it, at most 72 hours back. When more landed thanlimit, the page holds the earliest and its cursor leads to the rest; signals stored together stay on one page, pastlimitif they must, though a batch of more than 1,000 keeps only its first 1,000. The most recent arrive on a later read, usually within a few seconds. A read withoutsincecan hand back a cursor a few seconds behind its newest signal, so the next read may repeat those.limitintegerquerySignals to return.
Default
1501–400typeslistquerySignal types to keep, comma-separated; empty keeps every type. They are kept among the same newest 1,000 stored signals the header's filter reads, before
limit, andstatus.leftOutsays whether they left out one the filter kept. A name outside the vocabulary is ignored.Any of:
net_in,net_out,vol_spike,buyers,buy_pressure,sell_pressure,dip_buy,rotation,whale_buy,whale_sell,top_buy,top_sell,kol_buy,smart_buy,dev_buy,dev_sell,insider_buy,smart_cluster,top_cluster,top_exit,top_early,top_net,holders_up,holder_surge,holder_exodus,supply_share,holder_growth,mcap_up,pump,dump,ath,pump_fade,new_token,graduation,revival,dex_paid,dex_boost,cto,liq_add,liq_pulltierslistqueryTiers to keep, comma-separated; empty keeps every tier. Kept as
typesis.Any of:
1,2,3
perps bounds:
viewslistrequiredqueryViews to build, comma-separated; there is no default.
Any of:
markets,hot,tape,oi,funding,flow,traderslimitintegerqueryMarket rows to return.
Default
4001–400windowintegerqueryHow far back, in minutes, from 1 to 1,440; read as the longest of 5, 15, 30, 60, 240 and 1,440 that fits, or 5 below it.
Default
601–1,440rankenumqueryHow the markets rank;
oiChangeis the size of the window's open-interest change either way.Default
volumeOne of:volume,oi,oiChange,funding,change,netcoinlistqueryCoins to include, comma-separated; empty means every market. A coin as the venue writes it, like
BTCorkPEPE, which is case-sensitive.up to 64 items
minVolumenumberqueryKeeps markets with at least this much 24-hour volume, in USD; 0 is no floor.
0–1,000,000,000,000,000
minOinumberqueryKeeps markets with at least this much open interest, in USD; 0 is no floor.
0–1,000,000,000,000,000
minLevnumberqueryKeeps markets whose top leverage is at least this; 0 is no floor.
0–1,000,000,000,000,000
fundingenumqueryKeeps markets by who pays funding:
longsabove the floor of 0.01% every eight hours (about 11% a year) most markets sit on,shortsbelow zero,extremeat 50% a year or more either way. A rate nobody read passes none of them.Default
anyOne of:any,longs,shorts,extremesideenumqueryWhich side of the tape the trade panels show.
Default
allOne of:all,buy,sellminTradenumberqueryThe tape's smallest trade, in USD; 0 is no floor.
0–1,000,000,000,000,000
delistedenumquery1includes delisted markets, which still trade down.Default
0One of:0,1
perpMarket bounds:
coinstringrequiredqueryA coin as the venue writes it, like
BTCorkPEPE, which is case-sensitive.windowintegerqueryHow far back, in minutes, from 1 to 1,440; read as the longest of 5, 15, 30, 60, 240 and 1,440 that fits, or 5 below it.
Default
601–1,440
perpTraders bounds:
sortenumqueryThe ranking: by rank, by a window's perps profit or volume, or by account value; an account whose figure is unmeasured comes last either way.
Default
rankOne of:rank,pnlDay,pnlWeek,pnlMonth,pnlAllTime,volumeDay,volumeWeek,volumeMonth,volumeAllTime,accountValuedirenumqueryRanking direction:
descputs the largest first, and forrankthe first rank.Default
descOne of:desc,ascvaultsenumqueryLeaves vaults out, lists them beside the other accounts, or lists them alone.
Default
excludeOne of:exclude,include,onlyminValuenumberqueryKeeps accounts worth at least this, in USD; an account whose value is unmeasured never clears it, even at 0.
0–1,000,000,000,000,000
minVolumenumberqueryKeeps accounts that traded at least this much in perps over 30 days, in USD; an account whose volume is unmeasured never clears it, even at 0.
0–1,000,000,000,000,000
offsetintegerqueryAccounts to skip before the page.
Default
00–1,000limitintegerqueryAccounts to return.
Default
1001–200
perpAccount bounds:
codestringrequiredqueryThe account's page code: twelve letters and digits, from its
perpTradersrow.
traderDirectory bounds:
sortenumqueryThe ranking.
Default
volumeOne of:volume,net,bought,sold,buyShare,trades,avgTrade,holdings,pnl,pnlMonth,pnlWeek,winRate,active,recent,firstSeen,rankdirenumqueryRanking direction.
Default
descOne of:desc,ascchainlistqueryChains to read, comma-separated, or
all; a name outside the vocabulary is refused.Default
allAny of:all,solana,robinhood,bnb,base,arc,arbitrum,ethereum,monad,hyperevm,elysiumplatformlistqueryTrading apps to read, comma-separated, or
all; a name outside the vocabulary is refused. Naming some apps keeps only traders with a trade through one of them in the last 24 hours, counts the window on those apps alone, gives the last trade they made and no first trade, and leaves the year and holdings every app's.Default
allAny of:all,fomo,gmgn,pump,axiom,coinbase,padre,maestro,bloom,trojan,bonkbot,bankr,photonwindowenumqueryThe window the flow is measured over, in minutes.
Default
1440One of:5,15,30,60,240,1440qstringquerySearches handles, names and addresses, ignoring case; the first 100 characters are read.
up to 100 characters; longer text is cut
sideenumqueryKeeps traders who bought more than they sold, or sold more than they bought; a trader whose net is unmeasured, as beside a side that traded with none of its trades priced, clears neither
buyingnorselling.Default
allOne of:all,buying,sellingminVolumenumberqueryKeeps traders with at least this much volume in the window, in USD; a trader none of whose trades in the window was priced clears only 0, which is no floor, and a trader whose day went unread clears none.
0–1,000,000,000,000
minTradesintegerqueryKeeps traders with at least this many trades in the window; 0 is no floor, though a trader whose day went unread clears none.
0–1,000,000
minHoldingsnumberqueryKeeps traders whose wallets hold at least this much now, in USD; a trader whose holdings are unread or hold nothing valued never clears it.
0–1,000,000,000,000
minPnlnumberqueryKeeps traders who realized at least this over the last year on every chain, in USD, which may be negative; a trader with no year measured never clears it.
-1,000,000,000,000–1,000,000,000,000
minWinRatenumberqueryKeeps traders whose win rate over the last year is at least this, in percent; a trader with none measured never clears it.
0–100
minAvgTradenumberqueryKeeps traders whose average trade is at least this, in USD; a trader with no trades in the window, or none of them priced, never clears it.
0–1,000,000,000,000
minActiveHoursintegerqueryKeeps traders active in at least this many of the last 24 hours; 0 is no floor, though a trader whose day went unread clears none.
0–24
launchpadlistqueryLaunchpad families, as
market.launchpadsinGET /v1/meta/filterslists them, each optionally chain-qualified, likebnb:flap; a bareotherorunknownis dropped and never narrows the list, thoughbnb:otheris kept, and a name outside the catalogue is ignored.dexlistqueryDEX signals; a token with any of them matches, and a name outside the vocabulary is ignored.
Any of:
paid,boost,ctofeesenumqueryWhether the token's launchpad shares its fees.
Default
anyOne of:any,shared,not_sharedpairlistqueryStock tickers the token pairs with, or
ANY-STOCKfor any stock.up to 12 items
minMcapnumberqueryMarket cap at least. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
maxMcapnumberqueryMarket cap at most. Tokens with no cap yet are kept — a brand-new one is small by definition. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minLiqnumberqueryPool depth at least — what the token can absorb before price moves. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
maxLiqnumberqueryPool depth at most. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minLiqPctnumberqueryDepth as a share of market cap — how much of the cap there is real money behind. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minHoldersnumberqueryWallets holding the token on chain, at least, as its data provider last counted them; a token nobody counted is in no band. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minFomoHoldersnumberqueryWallets on fomo still holding a position. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minHeldPctnumberqueryShare of circulating supply sitting in fomo wallets — how much of the token the crowd here owns. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minAthnumberqueryMultiple back to the all-time high, at least — headroom above the current price. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
maxAthnumberqueryMultiple back to the high, at most — near its own top. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
maxAgenumberqueryYounger than, in hours since the token launched on chain, or first traded on our tape where that came first or no launch is dated. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minAgenumberqueryOlder than, in hours since the token launched on chain, or first traded on our tape where that came first or no launch is dated. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minCurvenumberqueryBonding-curve progress, at least, in percent; a token that has graduated counts as 101. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
maxCurvenumberqueryBonding-curve progress, at most, in percent; 100 keeps only tokens still on their curve. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
offsetintegerqueryTraders to skip.
Default
00–5,000limitintegerqueryTraders to return; 0 reads as the default, 100.
Default
1000–200
traderFlows bounds:
topenumqueryHow many traders: the first of the directory's
pnlranking on the chains and apps asked for, among those with a year measured.Default
10000One of:100,500,1000,5000,10000windowenumqueryThe window, in minutes.
Default
60One of:5,15,30,60,240,1440chainlistqueryChains to rank and count on, comma-separated, or
all; a name outside the vocabulary is refused.Default
allAny of:all,solana,robinhood,bnb,base,arc,arbitrum,ethereum,monad,hyperevm,elysiumplatformlistqueryTrading apps to rank and count on, comma-separated, or
all; a name outside the vocabulary is refused. Naming some apps ranks only traders with a trade through one of them in the last 24 hours, as the directory does.Default
allAny of:all,fomo,gmgn,pump,axiom,coinbase,padre,maestro,bloom,trojan,bonkbot,bankr,photonsideenumqueryReads a page of one side in place of the map: the tokens netted
boughtorsold, the most first; a token whose net is unmeasured is on neither.One of:
bought,soldoffsetintegerqueryWhere the side's page starts; only with
side. Each page is the next 20, read as the answer is, so a token near a page's edge can show on both or neither.Default
00–100,000launchpadlistqueryLaunchpad families, as
market.launchpadsinGET /v1/meta/filterslists them, each optionally chain-qualified, likebnb:flap; a bareotherorunknownis dropped and never narrows the list, thoughbnb:otheris kept, and a name outside the catalogue is ignored.dexlistqueryDEX signals; a token with any of them matches, and a name outside the vocabulary is ignored.
Any of:
paid,boost,ctofeesenumqueryWhether the token's launchpad shares its fees.
Default
anyOne of:any,shared,not_sharedpairlistqueryStock tickers the token pairs with, or
ANY-STOCKfor any stock.up to 12 items
minMcapnumberqueryMarket cap at least. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
maxMcapnumberqueryMarket cap at most. Tokens with no cap yet are kept — a brand-new one is small by definition. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minLiqnumberqueryPool depth at least — what the token can absorb before price moves. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
maxLiqnumberqueryPool depth at most. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minLiqPctnumberqueryDepth as a share of market cap — how much of the cap there is real money behind. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minHoldersnumberqueryWallets holding the token on chain, at least, as its data provider last counted them; a token nobody counted is in no band. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minFomoHoldersnumberqueryWallets on fomo still holding a position. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minHeldPctnumberqueryShare of circulating supply sitting in fomo wallets — how much of the token the crowd here owns. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minAthnumberqueryMultiple back to the all-time high, at least — headroom above the current price. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
maxAthnumberqueryMultiple back to the high, at most — near its own top. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
maxAgenumberqueryYounger than, in hours since the token launched on chain, or first traded on our tape where that came first or no launch is dated. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minAgenumberqueryOlder than, in hours since the token launched on chain, or first traded on our tape where that came first or no launch is dated. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
minCurvenumberqueryBonding-curve progress, at least, in percent; a token that has graduated counts as 101. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
maxCurvenumberqueryBonding-curve progress, at most, in percent; 100 keeps only tokens still on their curve. A plain number, read exactly, on the Board's day, where a token it does not list yet is left out.
0–1,000,000,000,000,000
trader bounds:
walletaddressrequiredqueryThe wallet's address; a Solana wallet keeps its case.
traderPortfolio bounds:
walletaddressrequiredqueryThe wallet's address; a Solana wallet keeps its case.
pool bounds:
chainenumqueryThe token's chain.
Default
robinhoodOne of:robinhood,bnbtokenaddressrequiredqueryThe token's EVM address.
Limits
- Requests120 a minute, per IP
- Reads waiting on a build64 at once, per server process
- Reads waiting on a build8 at once, per IP
- Reads with a sign-in, once enforced, every /v1/public/ route together1,000 a minute by default, per account
Errors
invalid_query, method_not_allowed, rate_limited, sign_in_required, sign_in_unavailable, stream_capacity, market_unavailable, market_warming, market_fold_pending, filter_too_broad, server_draining
curl -s "https://api.traktor.fun/v1/public/market?resource=tokenTrades&query=chain%3Dbase%26address%3D0x4444444444444444444444444444444444444444"const response = await fetch("https://api.traktor.fun/v1/public/market?resource=tokenTrades&query=chain%3Dbase%26address%3D0x4444444444444444444444444444444444444444");
const body = await response.json();import requests
response = requests.get(
"https://api.traktor.fun/v1/public/market",
params={"resource": "tokenTrades", "query": "chain=base&address=0x4444444444444444444444444444444444444444"},
)
print(response.json()){
"chain": "base",
"address": "0x4444444444444444444444444444444444444444",
"trades": [
{
"id": "base:0x5555555555555555555555555555555555555555555555555555555555555555:0",
"timestamp": "2026-10-03T12:00:00.000Z",
"side": "buy",
"platform": "fomo",
"usdAmount": 250.4,
"priceUsd": 0.00041
}
]
}The answer is the resource's JSON itself, with no
{ data, meta }envelope. A key the resource does not take, a key given twice, or a parameter besidesresourceandqueryis400 invalid_query.The market keys read names leniently: a chain or app the vocabulary lacks is ignored, so
chain=polygonanswers for every chain andchain=bnb,polygonforbnbalone, where the metered routes refuse both. Every otherchainkey, onmarketSwaps,pool, the token resources and the trader resources, refuses a name it does not know.A resource's own keys are bounded on the block, under its name; the market keys are listed there by name alone. Their amounts are plain numbers, so
minMcap=150kis400 invalid_query. Every screen is answered for exactly the number you send, so the rows, totals and nodes are the screen's own and there is no surplus to drop.filter.screensin aflowortapebody echoes the values served.marketSwapsreaches further back than the board's windows.tapetakesminPnl,minWinRate,marksandnamedOnlyto keep the trades of wallets by their own year, the marks a source gives them and whether any source names them. A wallet with no reading clears no floor, and each row of a tape so screened carrieswalletYear, the figures it passed on.flowtakes them only withviews=tape, and they narrow its tape alone. A server that has not yet loaded the wallets' figures answers503 market_warming.Each
taperow carriesnetUsd, its token's net flow over the window, the hour where a market tape names none, as an unscreenedtokensrow sums it over the same apps: the market's figure, every wallet's, even underwallets. It is absent, never zero, where the server has not yet loaded the window's minute buckets, andnull, as its token's row serves it, where a side of that token's flow traded with none of its trades priced.tape, under a launchpad, stock-pair, DEX-signal or fee screen, or a screen on who traded that holds more than 10,000 wallets, fails rather than answer a short list when too many candidates would have to be read.A
minBalancefloor that selects more than 5,000 wallets is422 filter_too_broad, over HTTP and as the socket'sunavailablecode, as the metered routes refuse it: raise the floor. A view already built under a floor that later crosses the limit is served stale instead, as after any failed rebuild.In
marketSwaps, each hop of a route is its own execution, so it never totals a user's trade.tokenTradesmarks a swap from a block not yet confirmedunconfirmed: true. Once the block is confirmed the swap is listed without the mark, or dropped if the block was replaced. A confirming swap can be missing for one update before it is listed again, so a missing swap alone does not mean its block was replaced.tokenTopBuysanswers503 market_warmingwhile the server ranks no trader with a measured year or holds none of their trades, never an empty list. A trader'sweekandmontharenullwhere they have not been measured, and until the server's first read of them, made once an answer names the trader, lands. A buy'stokensandpriceUsdarenullwhere its rows don't count its buys, and until the server's first read of them, made once an answer names the buy, lands. Each trader carrieswallets, every wallet the directory lists for them, in the directory's order.tokenTopTradersanswers503 market_warmingastokenTopBuysdoes, never an empty list. Itssummaryis the board row'stopTradersFlowfor the samewindow, with each app's buyers;tradersnames 50 at a time, the most bought first:offset, a multiple of 50 up to 9,950, starts the page there, every page carries the wholesummary, andmorecounts the traders past the page.othersis every other wallet that bought the token over the same minutes, from the trades the answering server holds:buyUsd(nullwhere none of their buys was priced),buyers(wallets, so one person's two wallets are two),unpricedbuys, andapps, each app's priced dollars and the wallets that made a priced buy there. It isnullwhile that server's trades don't reach back over the window, when its syncs interrupted two reads of them running, or when the read fails, never an empty window. A trader nobody names has anullname; every trader, named or not, carrieswalletsastokenTopBuysdoes. A trader'scoinis their year in the token:avgEntryUsdandavgExitUsd(dollars a token each way),realizedUsd, andheldBoughtTokensandcostUsdto value what they still hold at your price (bothnullwhere it can't be costed); it is absent until a data provider has answered for each of their wallets.A failed
poolread is still a200, withstate: "error", itscodeand a sentence for a person, so readstate.pool_not_foundmeans the pool directory knows no pool for the token yet,pool_unreadablethat none of its pools could be charted, or that the token's own price is refused (a honeypot's, or a cap its pool can't carry), andupstream_failedthat the pool directory or the chain failed or ran out of time, or that the server had spent its directory requests for the minute: a read no socket shares, an HTTP poll's, has 10 of them a minute on each server, within the 50 a minute every server spends together, 20 of it left to open pages. Where the token page withholds the token's cap, or the holders' census would withhold the cap the pool's own price makes, the read is stillstate: "ok", withsupply,marketCap,floorMcapandceilMcapnull.An answer carries
X-Market-Revision, the answering server's count of the view's changes, which another server, or the same one later, numbers afresh, so compareETags across answers, never revisions.X-Market-Cursoris the change notification its build started from, andAgethe view's age in seconds.x-market-stale: 1means the last rebuild failed and you got the view built before it, which no cache may keep.A fresh answer carries a weak
ETag, a digest of its bytes: send it back asIf-None-Match, and any server holding the same bytes answers304. Some bodies carry the answering server's own clock or reads, such asgeneratedAtin atokenbody orsources[].fetchedAtin anassetsone: no other server holds those bytes, so only the server that answered can answer304, and only until a rebuild changes them.No
Access-Control-Expose-Headersnames those headers, so a script on another origin reads the body but not them.An error comes in the shorter envelope,
codeandmessagealone. A price here is not an executable quote. To keep a view current, subscribe to it on the market stream instead of polling.
GET /v1/public/search
Tokens matching a ticker, a stock's company name or a contract address, at most 8 of them.
- Credential
- None
qstringrequiredqueryA ticker, the start of a stock's company name, a contract address or mint, or the start of an EVM address.
up to 64
Limits
- Searches60 a minute, per IP
- Token directory lookups10 a minute, per IP
- Searches building16 at once, per server process
- Reads with a sign-in, once enforced, every /v1/public/ route together1,000 a minute by default, per account
Errors
invalid_query, method_not_allowed, rate_limited, sign_in_required, sign_in_unavailable, data_unavailable
curl -s "https://api.traktor.fun/v1/public/search?q=EXAMPLE"const response = await fetch("https://api.traktor.fun/v1/public/search?q=EXAMPLE");
const body = await response.json();import requests
response = requests.get(
"https://api.traktor.fun/v1/public/search",
params={"q": "EXAMPLE"},
)
print(response.json()){
"query": {
"kind": "ticker",
"text": "EXAMPLE"
},
"tokens": [
{
"chain": "bnb",
"address": "0x2222222222222222222222222222222222222222",
"ticker": "EXAMPLE",
"name": "Example",
"logoUrl": null,
"marketCap": 4120000,
"valuationSource": "pool",
"marketPriceUpdatedAt": "2026-10-03T11:59:58.000Z",
"marketPriceConfirmedAt": "2026-10-03T11:59:58.000Z",
"valuationExpiresAt": "2026-10-03T12:04:58.000Z",
"liquidity": 380120.5,
"metadataAt": "2026-10-03T11:58:00.000Z",
"lastTradeAt": "2026-10-03T12:00:00.000Z",
"launchpad": "flap"
}
],
"external": null,
"asOf": "2026-10-03T12:00:01.000Z"
}q is a full contract or Solana mint, which finds the token on every chain the index holds it on; 0x and six or more hex digits, which finds the contracts that start with them; or a ticker or its start, in any case. A ticker also finds a tokenized stock by its underlying ticker in full (bCOIN by COIN), or, from three characters, by the start of that ticker or of the company's name (tesla, coinbase glob). A ticker or a contract's start leaves out a major, such as a stablecoin or a wrapped or bridged coin, and a token no launchpad we know made, save a stock an issuer verifies, while its full contract still finds either. That rule runs over a bounded read of the closest matches, so a ticker or a contract's start that many such tokens share can come back short. A token's own name is not searched, and a query with anything but one q is 400 invalid_query. Each row dates its market cap as a board row does (Fields and clocks), but its metadataAt is an ISO time where a board row's is Unix milliseconds. Its launchpad is the launchpad the index names for the token, as a board row's is, and null where it names none, never a guess.
Only a full contract or mint the index does not hold is asked of an outside token directory, and that answer comes back apart, under external, with no market cap: its tokens is empty when the directory did not know the address, and null when it could not be asked. An answer says in Cache-Control how long it may be shared, with an ETag, except one whose external.tokens is null, which is no-store. Each server builds its own answer, dated to the millisecond in asOf, and keeps it as long as it may be shared, so a 304 comes only from the server that answered, inside that window. 429 rate_limited and 503 data_unavailable carry Retry-After.