Market context for
Gin apps.
TickerDB Go SDK + Gin. Pre-computed market data in your handlers, no infrastructure.
Install the SDK.
One dependency. No MCP server, no WebSocket connections — just a Go module that calls the TickerDB HTTP API.
$ go get github.com/tickerdb/tickerdb-go Two handlers, five minutes.
Initialize the client once, call methods from your handlers, and return the raw JSON payload from resp.Data.
package main import ( "github.com/gin-gonic/gin" tickerdb "github.com/tickerdb/tickerdb-go" ) func main() { client := tickerdb.NewClient("tdb_your_api_key") r := gin.Default() r.GET("/summary/:ticker", func(c *gin.Context) { resp, _ := client.Summary(c.Request.Context(), c.Param("ticker"), nil) c.Data(200, "application/json", resp.Data) }) r.GET("/events/:ticker", func(c *gin.Context) { field := c.DefaultQuery("field", "rsi_zone") band := c.DefaultQuery("band", "deep_oversold") resp, _ := client.Summary(c.Request.Context(), c.Param("ticker"), &tickerdb.SummaryOptions Field: tickerdb.Ptr(field), Band: tickerdb.Ptr(band), ) c.Data(200, "application/json", resp.Data) }) r.Run(":8080") }
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.
r.GET("/watchlist/changes", func(c *gin.Context) { resp, _ := client.WatchlistChanges(c.Request.Context(), nil) c.Data(200, "application/json", resp.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.
r.GET("/briefing/:ticker", func(c *gin.Context) { summary, _ := client.Summary(c.Request.Context(), c.Param("ticker"), nil) message, _ := anthropicClient.Messages.New(context.TODO(), anthropic.MessageNewParams{ Model: anthropic.ModelClaudeSonnet4_20250514, MaxTokens: 1024, Messages: []anthropic.MessageParam{ anthropic.NewUserMessage( anthropic.NewTextBlock( "Analyze this market data and provide a brief:\n" + string(summary.Data), ), ), }, }, ) c.JSON(200, gin.H{"analysis": message.Content}) })
What you can call.
Every call returns a response wrapper with `Data` and `RateLimits`. Unmarshal what you need and keep moving.
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.
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.
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" } }