The news archive as a table you query, not a feed you parse: every article with its publish time, source, the tickers it mentions and a sentiment score, back to 2015. Filter by ticker or universe, full-text search the titles and summaries, write a WHERE on sentiment, or group_by to get volume and average tone per ticker per day. And because it is the same table, each ticker’s row already carries its recent news volume and sentiment as columns — so “unusual news flow” is a screen, not a pipeline.
Free plan. Every ticker, every signal, real-time data, all-time history.
what you get
| Articles by ticker | Title, source, publish time, every ticker mentioned, sentiment score and label — one ticker, a comma list of up to 50, or a universe |
| Full-text search | search= with web-search grammar: all words, "a phrase", chips OR semiconductors, -crypto — stemmed English over title and summary |
| SQL over the archive | q filters on any column (overall_sentiment_score > 0.3), select/group_by/having turn rows into rollups; the tk alias unnests tickers for per-ticker counts |
| Sentiment as columns | Per-ticker news volume and sentiment sit on the ticker row, screenable with every other column and subscribable as a webhook |
| Archive to 2015 | Cursor-paged to the end of the archive on every plan; “as of” is a WHERE on publish time, since every article carries its moment |
| On the events timeline | Opt in with kind=news on /v2/events and articles interleave with earnings, dividends, insider and analyst events |
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
A ticker scope and a SQL condition on sentiment — the scoping parameters AND into the WHERE:
GET /v2/news?tickers=NVDA&q=overall_sentiment_score > 0.3&limit=1
// → { "as_of": "2026-08-24T14:36:52Z", "count": 1, "results": [
// { "id": 1637711, "time_published": "2026-08-24T09:02:22Z",
// "title": "10 Stocks Top Fund Managers Have Been Buying Amid Market Uncertainty",
// "source": "Morningstar",
// "tickers": ["AMD", "KLAC", "GOOG", "NVDA"],
// "overall_sentiment_score": 0.3943,
// "overall_sentiment_label": "Bullish" } ],
// "next_cursor": "…" }Add search=guidance to keep only articles that say so; add select=tk,count(*),avg(overall_sentiment_score)&group_by=tk and the same call becomes a per-ticker volume and tone table for the window. Both are the one endpoint, /v2/news.
Ready to wire it into something? Build a stock alert bot walks it end to end. Reference: news query · the events timeline · the SQL surface.
questions
You get the title, source, publish time, tickers and sentiment for each article, and full-text search runs over the title and summary server-side. The archive is built for querying and screening — which stocks are in the news, how much, and in what tone — not for republishing article bodies.
Each article carries an overall sentiment score (negative to positive) and a label derived from it — Bearish, Neutral, Bullish and the grades between. It is a property of the article as data, so you can filter, average and alert on it; it is not a recommendation.
New articles land through the day, and the archive reaches back to 2015, cursor-paged on every plan. Because every article carries its publish time, a point-in-time read is a to= filter rather than a separate as-of mode.
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.