Market context for
Express apps.
TickerDB Node.js SDK + Express. Pre-computed market data in your routes, zero infrastructure to maintain.
Install the SDK.
Two dependencies. No WebSocket connections, no streaming infrastructure — just a Node.js package that calls the TickerDB HTTP API.
npm install tickerdb express Set TICKERDB_KEY in your environment variables and pass it into the client when you initialize it.
Two routes, five minutes.
Initialize the client once, call methods from your route handlers. Every method returns an object ready for res.json.
import express from "express"; import { TickerDB } from "tickerdb"; const app = express(); const client = new TickerDB({ apiKey: process.env.TICKERDB_KEY }); app.get("/summary/:ticker", async (req, res) => { const { data } = await client.summary(req.params.ticker); res.json(data); }); app.get("/events/:ticker", async (req, res) => { const { data } = await client.summary(req.params.ticker, { field: req.query.field, band: req.query.band, }); res.json(data); }); app.listen(3000);
Track state changes effortlessly.
Most market data APIs return point-in-time snapshots. TickerDB tracks state transitions — your agent sees what changed, not just what is.
app.get("/watchlist/changes", async (req, res) => { const { data } = await client.watchlistChanges(); res.json(data); });
{ "timeframe": "daily", "run_date": "2026-03-28", "changes": { "AAPL": [ { "field": "rsi_zone", "from": "neutral", "to": "oversold" }, { "field": "trend_direction", "from": "uptrend", "to": "downtrend" } ] }, "ticker_context": { "AAPL": { "last_changed_date": "2026-03-28" } }, "tickers_checked": 2, "tickers_changed": 1 }
Feed an AI agent.
TickerDB's categorical-first output is designed for LLMs. Feed a summary directly into a prompt — the model already understands terms like "oversold" and "strong_uptrend" without extra context.
import Anthropic from "@anthropic-ai/sdk"; const anthropic = new Anthropic(); app.get("/briefing/:ticker", async (req, res) => { const { data } = await client.summary(req.params.ticker); const msg = await anthropic.messages.create({ model: "claude-sonnet-4-20250514", max_tokens: 1024, messages: [{ role: "user", content: `Analyze this stock data:\n${JSON.stringify(data)}`, }], }); res.json({ analysis: msg.content[0].text }); });
What you can call.
Every tool returns pre-computed market-state data: categorical facts plus supporting metadata your agent can reason about immediately.
Full market-state snapshot for a single asset: trend, momentum, volatility, volume, extremes, fundamentals, and support/resistance.
Multi-field filtering across all assets. Build complex queries with arbitrary filter combinations.
All queryable fields with types, values, and descriptions. Always free.
Latest EOD summary data for all tickers in your saved watchlist.
Field-level diffs for your watchlist since the last pipeline run.
Register a webhook URL for watchlist change notifications.
List your registered webhook URLs.
Remove a registered webhook.
What your agent sees.
Every tool returns categorical facts — not raw OHLCV data. Your agent can branch on "oversold" without needing to know what RSI > 70 means.
{ "ticker": "NVDA", "data_status": "eod", "as_of_date": "2026-04-11", "trend": { "direction": "strong_uptrend", "ma_alignment": "aligned_bullish" }, "momentum": { "rsi_zone": "overbought", "macd_state": "expanding_positive", "direction": "accelerating" }, "volatility": { "regime": "normal", "regime_trend": "stable" }, "fundamentals": { "valuation_zone": "fair_value", "pe_vs_historical_zone": "premium", "last_earnings_surprise": "beat" } }
Built for how agents consume data.
Market-state data, less prompt engineering
Responses like "rsi_zone": "oversold" are already in a format the model understands. No need to explain what RSI > 70 means.
Compact responses
Tool-call context windows are limited. TickerDB responses are a fraction of the tokens you'd need to pass raw OHLCV data.
Pre-computed daily
No infrastructure to maintain. No cron jobs, no indicator math. TickerDB handles computation and syncing.