BOBBER
Developer API

Read the water yourself.

Read only JSON, no key, CORS open, cached for a few seconds. Every endpoint below exists and returns live data. Base URL https://usebobber.xyz.

Before launch the endpoints answer with launched: false and empty lists instead of numbers. Back to the docs

GET/api/stateState

The live picture: last price sample, the waterline, how far the price is from it, whether it is under the line, 24 hour volume and catches, the top angler of the week, the bot heartbeat and where every number comes from.

launchedfalse until the mint is set
price{ sol, usd, at, source } or null
waterline{ sol, windowSec, samples, at } or null
deviationBpsprice vs waterline in basis points, negative is under
underTheLinetrue when at least the catch threshold under, null while warming up
day{ buySol, sellSol, trades, catches, catchSol, at } for the last 24 hours
topAngler{ wallet, catchSol, catches } for the last 7 days, or null
worker{ lastLoopAt, stale }
Open
GET/api/anglers?range=7d&limit=25Anglers board

Wallets ranked by SOL bought under the waterline. range is 7d or all, limit is 1 to 100.

anglers[].rank / walletposition and wallet
anglers[].catchSol / tokensSOL spent and coins bought under the line
anglers[].catchesnumber of catches
anglers[].biggestSol / deepestBpslargest catch and deepest dip caught
anglers[].lastAttime of the latest catch
Open
GET/api/trades?limit=30Trades

Recent bites (buys), sinks (sells) and catches parsed from Helius transactions. limit is 1 to 200. Add catches=1 for catches only.

trades[].sidebuy or sell
trades[].sol / tokensamounts in SOL and coins
trades[].priceSol / waterlineSolthe swap price and the waterline at that moment
trades[].underBps / isCatchhow far under the line, and whether it counted as a catch
trades[].wallet / sigthe trader and the signature
Open
GET/api/waterline?range=24hWaterline

Price samples and the waterline series for charting, plus catch markers. range is 24h or 7d; the series starts at the first sample in range and has about 300 steps.

points[]{ t, p } samples, t in ms, p in SOL
series[]{ t, w } waterline at each step, null before enough history
catches[]{ t, p, sol, sig } markers
Open