A dashboard is rows, charts, and freshness — and every one of those is usually its own integration project. Here they are three calls against one computed table: a row that already contains every signal, series that arrive pre-aligned, and a socket that pushes each recompute. The part you build is the part users see.
Free plan. Every ticker, every signal, real-time data, all-time history.
the recipe
1. The row — one call returns everything a ticker card or table row could show — price plus all 421+ computed signals, one response, no assembly:
curl -s https://api.tickerbot.io/v2/tickers/AAPL \ -H "Authorization: Bearer $TICKERBOT_API_KEY"
2. The charts — /v2/series returns up to 50 tickers × 25 columns on one aligned time grid — price and indicators together, ready for a chart library, no client-side joins:
curl -s "https://api.tickerbot.io/v2/series?tickers=AAPL,MSFT,NVDA\ &columns=close,rsi_14,volume_today&interval=1d&from=2026-01-01" \ -H "Authorization: Bearer $TICKERBOT_API_KEY"
3. The freshness — hold a websocket open and each subscribed ticker’s freshly-computed row arrives on every refresh cycle — the dashboard updates itself:
const ws = new WebSocket('wss://api.tickerbot.io/v2/stream')
ws.onopen = () => {
ws.send(JSON.stringify({ type: 'auth', api_key: KEY }))
ws.send(JSON.stringify({ type: 'subscribe', tickers: ['AAPL', 'MSFT', 'NVDA'] }))
}
ws.onmessage = ({ data }) => {
const frame = JSON.parse(data)
if (frame.type === 'update') { // { ticker, as_of, data }
store.upsert(frame.ticker, frame.data) // full computed row — UI re-renders
}
}4. Per-user watchlists — model each user’s watchlist as a universe and every surface scopes to it — the same list drives their table, their charts, and their alerts:
curl -s -X POST https://api.tickerbot.io/v2/universes \
-H "Authorization: Bearer $TICKERBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "user-4821-watchlist", "tickers": ["AAPL","MSFT","NVDA"] }'
# then: POST /v2/scan { "q": "...", "universe": "user-4821-watchlist" }under the hood
GET /v2/tickers/{ticker} | The row — price plus every computed signal in one response |
GET /v2/series | The charts — 50 tickers × 25 columns on one aligned grid |
WS /v2/stream | The freshness — full recomputed rows pushed every cycle |
POST /v2/universes | Watchlists — one named list scopes scans, series, and alerts |
Every read runs in three tenses: live, as of any past moment (add ?asof= — no survivorship bias), or on push — the same query as a webhook that fires when the answer changes. Under all of it sits the computed table: every US equity plus rates, FX and crypto, every signal precomputed and refreshed continuously, with all-time history. That pipeline — warehouse, indicator math, refresh, point-in-time storage — is the part you’d otherwise build before writing your first line of product. Buy it as a table instead — data included; there’s no feed to bring.
questions
Yes — every plan, including Free, covers user-facing products that display Tickerbot data or signals to your own users: apps, dashboards, newsletters, screeners. What needs an Enterprise agreement is redistributing the data itself (passthrough APIs, bulk export, resale). See the Terms for the boundary.
Live signals recompute every minute during US market hours and 24/7 for crypto; fundamentals refresh daily. Cadence is not a pricing tier — every plan sees the same refresh. The websocket pushes each recompute; without it, polling the row endpoints gives the same freshness at your own rhythm.
Because every action it takes — an alert, a screen result, an order, a row in a user-facing app — is a condition over derived values: RSI below 30, price above the 200-day average, volume three times normal. Raw data doesn’t contain those. Something has to compute and refresh them for every symbol, continuously, and keep the history so past answers are reproducible. That’s a data pipeline, not a feature — you either build and operate it, or query one that already runs.
Every call here is also a native tool call: install the MCP server and Claude, ChatGPT, Cursor, or any MCP runtime queries the market directly. Computed state is what makes that work well — hand a model raw data and its context window fills with math to do; hand it computed answers and the context goes to decisions. A scan returns the tickers matching your condition — a list, not a workload.
The Free plan needs no card and carries the full data side: every ticker, every signal, real-time data, all-time history and as-of queries. Paid plans start at $29/mo and add real-time webhooks, websocket streaming, and higher rate limits. Data depth is never a tier lever — every plan sees the same table.
in the wild
What people are saying.
“dude. whoah.”
“Tickerbot is insane. It turns Claude into a quant.”
“Best value for hobbyists and advanced traders alike.”
get started
Free plan. Every ticker, every signal, real-time data, all-time history.