Screener
Tickerbot is the stock market API designed for agents. A stock screener is a few queries on it, in sequence: the screen, a saved universe, the row click, and a subscription.
How it works
A screener is one question asked of every ticker at once, exactly the shape of the computed table. The screen you'd otherwise assemble from a feed, a warehouse and indicator math is one SQL call; the screener around it is three more.
1. Write the screen
A SQL WHERE clause over 452+ signals. Here: above the 200-day average, under 20× earnings, over $1B market cap, largest first.
curl -X POST "https://api.tickerbot.io/v2/scan" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "q": "above_sma_200 AND pe_ratio < 20 AND market_cap > 1e9",
"order": "market_cap", "dir": "desc", "limit": 50,
"columns": "ticker,price,pe_ratio,market_cap,rsi_14" }'2. Save as a universe
A universe is a named ticker list (a user's watchlist as a resource). Reference it across the API by passing "universe": "my_watchlist" to various endpoints.
curl -X POST "https://api.tickerbot.io/v2/universes" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "id": "my_watchlist", "name": "My watchlist",
"tickers": ["AAPL","NVDA","JPM","CVX"] }'Show responseHide response
{
"id": "my_watchlist",
"name": "My watchlist",
"tickers": ["AAPL", "NVDA", "JPM", "CVX"],
"size": 4,
…
}3. The row click
The table's rows come from the scan; a click on one wants the detail view. One call returns everything about that ticker.
curl "https://api.tickerbot.io/v2/tickers/AAPL" \
-H "Authorization: Bearer YOUR_KEY"4. The screen that watches itself
Subscribe the same q and the saved screen stops being something you rerun: a webhook fires whenever the match set changes.
curl -X POST "https://api.tickerbot.io/v2/scan/subscribe" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "q": "above_sma_200 AND pe_ratio < 20 AND market_cap > 1e9",
"target_url": "https://your-app.example.com/hook" }'Show responseHide response
{
"id": "wh_z1E8FUA-8ZE",
"q": "above_sma_200 AND pe_ratio < 20 AND market_cap > 1e9",
"channel": "webhook",
"target_url": "https://your-app.example.com/hook",
"signing_secret": "whsec_…",
"status": "active",
"test_url": "/v2/webhooks/wh_z1E8FUA-8ZE/test",
…
}The calls behind it
| Call | What it does here |
|---|---|
POST /v2/scan | The screen itself: q, columns, order, dir, limit; one call, every ticker |
POST /v2/universes | The watchlist as a resource: create once, scope any screen with universe= |
GET /v2/tickers/{ticker} | The row click: every signal for one ticker in one row |
POST /v2/scan/subscribe | The saved screen as an alert: fires when the match set changes |