Build a portfolio tracker, with Tickerbot.

Every portfolio tracker starts the same way: a list of what you own, and the grind of pricing it. Model the list as a Tickerbot universe and the grind disappears — one call prices every holding with all 421+ signals attached, one call charts the history, and alerts scope to exactly what you hold. Positions and cost basis stay yours; the market side is done.

Free plan. Every ticker, every signal, real-time data, all-time history.

the recipe

The holdings are a universe.

1. Model the holdingsa universe is a named ticker list. One per portfolio (or per user, if you’re building for others) — update it as positions change:

curl -s -X POST https://api.tickerbot.io/v2/universes \
  -H "Authorization: Bearer $TICKERBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "my-portfolio", "tickers": ["AAPL","MSFT","NVDA","RIOT"] }'

2. Price everything in one callscan scoped to the universe returns every holding’s current row — price for the P&L math, and the computed state most trackers never show (trend, momentum, distance from highs):

curl -s -X POST https://api.tickerbot.io/v2/scan \
  -H "Authorization: Bearer $TICKERBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "q": "market_cap > 0", "universe": "my-portfolio",
        "columns": "ticker,price,day_change_pct,rsi_14,above_sma_200" }'

# P&L is your arithmetic on your cost basis:
# value = qty * row.price;  pnl = value - qty * cost

3. Chart the history/v2/series puts every holding’s price path on one aligned daily grid — the allocation and performance charts are one response away:

curl -s "https://api.tickerbot.io/v2/series?tickers=AAPL,MSFT,NVDA,RIOT\
&columns=close&interval=1d&from=2026-01-01" \
  -H "Authorization: Bearer $TICKERBOT_API_KEY"

4. Watch what you ownalerts scoped to the same universe: the tracker stops being a page you check and starts telling you when a holding needs attention:

curl -s -X POST https://api.tickerbot.io/v2/scan/subscribe \
  -H "Authorization: Bearer $TICKERBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "q": "day_change_pct < -5 OR rsi_overbought",
        "universe": "my-portfolio",
        "target_url": "https://your-app.example.com/hook" }'

under the hood

The calls behind it.

POST /v2/universesThe holdings list — named, updatable, referenced everywhere by slug
POST /v2/scanCurrent value + computed state for every holding, one call
GET /v2/seriesPrice history for every holding on one aligned grid
POST /v2/scan/subscribeAlerts scoped to the portfolio — pushed, not polled

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

FAQ

Where do positions and cost basis live?

On your side — quantities, lots, and costs are your application’s data (or your users’). Tickerbot supplies the market half: current computed state and full history for every holding. The P&L join is one multiply per position.

Can each of my users have their own portfolio?

Yes — create a universe per user and scope their scans, series, and alert subscriptions with universe=. The same list drives their table, their charts, and their notifications, and updating it in one place updates all three.

Why does a trading system need computed state?

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.

How does Tickerbot work with AI agents?

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.

How does Tickerbot pricing work?

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

900K+ calls served, and counting.

What people are saying.

“dude. whoah.”
President, ShopifyHarley Finkelstein
“Tickerbot is insane. It turns Claude into a quant.”
Quantitative Finance MScLounes Vennema
“Best value for hobbyists and advanced traders alike.”
AI Engineer, ImergeRon Reid

get started

Get a key. Run a scan.

Free plan. Every ticker, every signal, real-time data, all-time history.