- Changed`GET/POST /v2/news/scan` replaces the original `/v2/news` + `/v2/news/{id}` pair. One SQL-style endpoint, two shapes — article rows by default, aggregate rollups when `group_by` is supplied. Auto-joins `UNNEST(tickers) AS tk` whenever any clause references the `tk` alias. "As-of" is just a WHERE filter on `time_published`; no separate parameter.
- ChangedNews archive access now requires Pro or above (was Hobby). The two live news columns on the ticker table (`news_volume`, `news_volume_weighted_sentiment`) remain available on every paid plan via `/v2/scan` and `/v2/tickers`.
- Added`/v2/sandbox/news/scan` — unauthenticated, IP-rate-limited mirror of the scan endpoint, capped at 50 rows.
Getting started
Changelog
Notable changes to the API. Newest first. Backward-incompatible changes ship as a new path version; everything within a major version is additive after launch.
- Added`GET /v2/news` — paginated, filterable news feed. Articles indexed back to 2015, refreshed every 15 minutes. Filterable by `tickers`, `topics`, time range, `min_relevance`, `min_sentiment`/`max_sentiment`. Hobby and above; per-call cap 50/200/1000 by plan. (Superseded the next day by `/v2/news/scan`.)
- Added`GET /v2/news/{id}` — fetch a single article by id. (Superseded the next day by `/v2/news/scan`.)
- AddedTwo new fields on the ticker schema: `news_volume` (24-hour rolling count of mentions at relevance ≥ 0.6) and `news_volume_weighted_sentiment` (relevance-weighted average sentiment, attenuated by tanh(volume/15) so quiet tickers read near zero). Both refresh every 15 minutes. Queryable through `/v2/scan` and `/v2/tickers`.
- RemovedThe four previously-stale news columns on `ticker` (`latest_news_at`, `recent_news_count`, `highly_relevant_news_count`, `news_sentiment_volatility`) have been removed. They were never reliably populated; the new two-field design above supersedes them.
- RemovedFree tier removed. Every plan (Hobby, Pro, Scale) now starts with a 14-day free trial; cancel anytime.
- Added`/v2/universes` — create and manage named ticker lists. System universes `top_10` and `top_100` (rebalanced monthly by dollar volume) are available to every account.
- Added`/v2/rules` — save a `{q, universe_id?, order, dir, fields}` bundle and reference it from `/v2/scan?rule=` or `/v2/webhooks`.
- Added`?universe=` parameter on `/v2/scan`, `/v2/signals/{signal}`, and `/v2/tickers` — scope queries to a system or owned universe.
- Added`?asof=` on `/v2/scan` — folds the historical scan into the main scan endpoint. `/v2/scan/history` remains as a backwards-compatible alias.
- AddedWebhook `cadence` field — pick `1m` / `5m` / `15m` / `hourly` / `nyse_open`. Default is the plan max.
- AddedWebhook `rule_id` body field — subscribe to a saved rule instead of inlining `q`.
- ChangedFree and Hobby plans now auto-scope ticker queries to the plan top-N (10 / 100). Response carries `_meta.scope` describing what got applied.
- ChangedNew pricing matrix: ticker scope, webhook cadence, max universes/rules/webhooks, premium signals (Scale+), and companion-app push (Hobby+). See /pricing for the full grid.
- ChangedAPI base path moves from `/v1` to `/v2`. v1 keeps working at its existing path for now; new integrations should use v2.
- Added`/v2/signals/{signal}` lists tickers where a signal matches. Numeric signals take a `?condition=` (e.g. `>70`); boolean flags are auto-detected.
- Added`/v2/signals/{signal}/{ticker}/history/{interval}` returns per-signal time-series at the requested resolution (`1d` / `1h` / `1m`). Daily history covers all-time; minute history is two years for top-200 tickers.
- Added`/v2/scan/history?asof=` snapshots the universe scan at any past date, as-of-that-day. Falls under the same SQL grammar as live `/v2/scan`.
- Added`/v2/tickers/{ticker}/history?asof=` returns the wide ticker row as it stood on a past date, with quarterly fundamentals (assets, equity, EPS…) joined in by filing date.
- Added`/v2/tickers/{ticker}/events` returns a unified event log: splits, dividends, analyst rating changes, all sorted newest-first with cursor pagination.
- Changedv2 uses scanner-native column names everywhere — the legacy v1 docs vocabulary (`day_change_pct`, `asset_type`) is gone in favor of `day_change_pc`, `type`. The full set is documented on the schema page.
- ChangedWebhooks now live under `/v2/webhooks` with the same shape as `/v1/webhooks`. Existing v1 webhooks keep firing unchanged.
- AddedFree tier: live API key with no card on file. 10 req/min, 7 days of signal history, all query endpoints; no webhooks.
- AddedScale tier ($199/mo): 1,000 req/min, 1-year history, up to 100 webhook subscriptions, Slack Connect support.
- ChangedPricing: Pro replaces Core at $79/mo (down from $99), 500 req/min, 6-month history. Hobby now includes up to 3 webhook subscriptions.
- Added`/v1/signals/{ticker}/{signal}` enforces per-plan history depth. Requests with `from` older than the plan ceiling return `400 history_window_exceeded` with `max_history_days` + `earliest_allowed_from` in the response body.
- ChangedSubscription cancellation falls back to Free instead of revoking API keys — your integration keeps working at Free-tier limits. Webhooks over the new tier limit are auto-disabled (config preserved); resubscribe to re-enable.
- Fixed`GET /v1/signals/{ticker}/{signal}` route now registered (previously returned 404 despite being documented).
- AddedInitial public release of the Tickerbot API. Four endpoints under /v1: tickers, signals, scan, webhooks.
- Added`GET /v1/tickers/{ticker}` and bulk `GET /v1/tickers?tickers=...` return the full curated ticker object.
- Added`GET /v1/signals/{ticker}/{signal}` returns time-series history: numeric bars, continuous-flag windows, or edge-flag triggers depending on the signal type.
- Added`GET/POST /v1/scan` accepts a SQL WHERE clause and returns matching tickers.
- Added`POST /v1/webhooks` creates a SQL-driven webhook that POSTs to your URL once per minute when new tickers enter the match set. State-change deduplication, HMAC-SHA256 signed deliveries, 5-attempt retry.
- Added50+ boolean flags + ~50 numeric/string columns documented on the schema page.
- AddedCoverage: ~12,000 US-listed equities and the top 100 cryptocurrencies by market cap.