Scan news archive
https://api.tickerbot.io/v2/news/scanOne endpoint, two shapes. Without `group_by`, each result is one article (default columns: `id`, `time_published`, `title`, `source`, `tickers`, `overall_sentiment_score`, `overall_sentiment_label`). With `group_by` set, results are aggregate rollups — default SELECT becomes `<group_by cols>, COUNT(*) AS volume`. Use the `tk` alias (auto-UNNEST of `tickers`) to roll up per ticker without writing the join. "As-of" is just a WHERE filter on `time_published` — there is no dedicated asof parameter. Both `GET` and `POST` are supported; `POST` body takes the same parameter names for queries too long to fit in a URL.
Plan access
Scale and above. Hobby/Pro return 403 news_tier_required for the archive — the live `news_volume` and `news_volume_weighted_sentiment` columns on the ticker object remain available on every plan.
Rate limit
Hobby 600/min · Pro 2,000/min · Scale 10,000/min.
Per-call cap
Scale/Enterprise: 1000 rows. History back to 2015.
Query parameters
stringrequiredWHERE clause over the news_article table. Max 4000 chars. See the schema for columns + flags you can compose.
stringComma-separated columns/expressions to return. Defaults to article columns (no `group_by`) or `<group_by cols>, COUNT(*) AS volume` (with `group_by`).
stringComma-separated group keys. Switches the response to aggregate rows. Use `tk` to roll up per ticker.
stringHAVING clause on the aggregate. Requires `group_by`.
stringSort column or alias. Defaults to `time_published` (article rows) or `volume` (aggregate rows).
stringdefault descSort direction.
integerdefault 50Page size. Max 1000 on Scale/Enterprise.
stringOpaque pagination cursor from a prior response's `next_cursor`.
Status codes
200as_of, query, count, next_cursor, and results.400403news_tier_required — archive access requires Scale or above. Live news_volume / news_volume_weighted_sentiment columns on the ticker table remain available on lower plans.