An alert is a query with a delivery attached. Write the condition as SQL over 419+ precomputed signals, and Tickerbot watches the whole market for you — when a ticker enters the result, your endpoint gets a signed webhook, retried until it lands. No polling loop, no indicator pipeline, no server babysitting a watchlist. Data included.
Free plan. Every ticker, every signal, real-time data, all-time history.
what you get
| The condition | Any SQL predicate — rsi_14 < 25 AND market_cap > 1e9 — over every ticker and signal |
| The delivery | Signed webhook POSTs (HMAC), retried on failure, with delivery logs you can read back |
| Discord too | Point the same alert at a Discord channel with no server in between |
| Whole-market | Conditions evaluate against every US equity — not a hand-picked watchlist |
| State, not spam | Fires on entering the matching state — a change of answer, not a repeat of it |
| Manageable | Create, list, pause and delete alerts by API; test-fire before going live |
Every read runs in three tenses: live, as of any past moment (add ?asof=; no look-ahead, no survivorship bias), or on push — the same query as a webhook that fires when the answer changes. Under it sits the computed table: every US equity plus rates, FX and crypto, every signal precomputed and refreshed continuously, all-time history. Data included — there’s no feed to bring.
one call
The trigger is the same SQL that powers screens; the delivery is a URL. That’s the whole object:
POST /v2/webhooks
{
"trigger": { "type": "scan", "q": "rsi_14 < 25 AND market_cap > 1e9" },
"target_url": "https://your-app.example/hook",
"name": "oversold-large-caps"
}
// → { "id": "wh_…", "q": "rsi_14 < 25 AND market_cap > 1e9",
// "cadence": "realtime", "target_url": "…", … }Deliveries are HMAC-signed so your handler can verify origin, and failed sends retry on a schedule. The same trigger can target Discord directly via discord_url.
Ready to wire it into something? Build a stock alert bot walks it end to end. Reference: webhook create · the SQL surface · the signals catalog.
questions
Yes — and not just price. Any condition you can write over the 419+ signal columns can be an alert: price levels, RSI thresholds, moving-average crosses, volume spikes, fundamentals. The condition is SQL; the alert is that query subscribed to a webhook.
Polling re-asks a question your code then has to diff; an alert here is server-side state-watching — Tickerbot evaluates the condition continuously and calls you when the answer changes. You skip the scheduler, the diffing logic, and the rate-limit budget a polling loop burns.
Because every action it takes — an alert, a screen result, an order — 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.
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.
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, at 10,000 calls a month and 60 a minute. Paid plans start at $29/mo, remove the monthly cap, and raise the rate limit; webhooks and streaming come with them. Data depth is never a tier lever: every plan sees the same table.
in the wild
What people are saying.
“dude. whoah.”
“Tickerbot is insane. It turns Claude into a quant.”
“Best value for hobbyists and advanced traders alike.”
get started
Free plan. Every ticker, every signal, real-time data, all-time history.