Market context for
FastAPI apps.
TickerDB Python SDK + FastAPI. Pre-computed market data in your API endpoints, no infrastructure.
Install the SDK.
One dependency. No MCP server, no WebSocket connections — just a Python package that calls the TickerDB HTTP API.
$ pip install tickerdb Two endpoints, five minutes.
Initialize the async client once, await methods in your route handlers, and return the data payload directly.
from fastapi import FastAPI from tickerdb import AsyncTickerDB app = FastAPI() client = AsyncTickerDB("tdb_your_api_key") @app.get("/summary/{ticker}") async def get_summary(ticker: str): result = await client.summary(ticker) return result["data"] @app.get("/summary-events/{ticker}") async def get_summary_events(ticker: str, field: str = "rsi_zone", band: str = "deep_oversold"): result = await client.summary(ticker, field=field, band=band) return result["data"]
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 def watchlist_changes(): result = await client.watchlist_changes() # each change includes from/to state transitions # e.g. trend: "uptrend" → "downtrend" return result["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 tickerdb import AsyncTickerDB client = AsyncTickerDB("tdb_your_api_key") ai = anthropic.Anthropic() @app.get("/briefing/{ticker}") async def get_briefing(ticker: str): summary = (await client.summary(ticker))["data"] message = ai.messages.create( model="claude-sonnet-4-20250514", max_tokens=1024, messages=[{ "role": "user", "content": f"Analyze this market data for {ticker} and provide a brief:\n{summary}" }] ) return {"analysis": message.content}
What you can call.
Every method returns a dict with `data` and `rate_limits`. No raw data to parse, no indicator math to maintain.
Full technical + fundamental snapshot for a single asset.
Search across all assets with multi-field filters.
Discover all queryable fields and their types.
Batch EOD summaries for a portfolio.
State changes for your saved watchlist tickers.
Create a webhook for watchlist change alerts.
List the webhooks on your account.
Delete a webhook you no longer need.
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.