REST API
Eleven endpoints cover the surface area: a screener, an asset snapshot, timeseries, written summaries, related assets, an event calendar, financial statements, market-wide trends, a news feed with its publisher list, and search. Every endpoint speaks JSON, accepts the same X-API-Key header, and shares the same error envelope.
Returns a columnar list of assets of the given type — the website's screener as an API. Supports field projection, sorting, and Stripe-style filtering (filter[field][gt|lt|contains|include|exclude]). Column names are the asset endpoint's fields. Unknown field, sort, or filter column names return a 400 that suggests the closest names. Choosing `fields` or passing any filter needs a Personal plan; sort, order and limit are free. Inactive assets are left out.
Parameters
| Field | Type | Description |
|---|
| type* | string | The asset type. range:equities · funds · cryptocurrencies |
| fields | string | Comma-separated list of field names to include in the response. Omit for the screener's default columns. Needs a Personal plan. |
| sort | string | Field name to sort by (numeric columns only, e.g. 'marketCap'). Nulls sort last. Omit for the type's default ranking: marketCap for equities and cryptocurrencies, socialEngagementMonth for funds. |
| order | string | Sort order. Applies only when sort is passed; the default ranking is always desc. range:asc · desc default:desc |
| limit | integer | Maximum number of assets to return. Default 50; values outside 1–100 are clamped. range:1 – 100 default:50 |
| filter[<field>][gt|lt|contains|include|exclude] | string | Stripe-style filter parameters. gt/lt are inclusive bounds on numeric columns, where a null counts as 0; contains is a case-insensitive substring match on text columns; include/exclude take comma-separated categorical values. Examples: filter[marketCap][gt]=1000000000, filter[sector][include]=Technology,Energy, filter[companyName][contains]=micro. Repeatable. |
Response · 200
| Field | Type | Description |
|---|
| data | object | Columnar dataset. Contains an `ids` array and one array per requested field, all the same length. |
| meta | object | |
Sign in to try this endpoint live with your own API key.
Sign in to try it →Returns the current row for one asset: price and profile, and its attention, engagement and sentiment over the last day, week, month and year, with ranks, percentiles and changes. Several hundred fields per asset; the available fields depend on the asset type. Prices are live. Pass fields=* to see every field the asset carries, values included, and read names off that.
Parameters
| Field | Type | Description |
|---|
| type* | string | The asset type. range:equities · funds · cryptocurrencies |
| ticker* | string | The asset's ticker (AAPL, SPY, BTC) or its id (nasdaq_aapl, bitcoin). Case-insensitive. /search finds it from a name. |
| fields | string | Comma-separated field names, or * for every field the asset carries. Omit for the screener's default columns. Unknown names are a 400 that suggests the closest. |
Response · 200
| Field | Type | Description |
|---|
| data | — | Asset fields. Schema depends on the `type` path parameter. |
| meta | object | Response metadata included with every successful response. |
Sign in to try this endpoint live with your own API key.
Sign in to try it →Returns historical series for one asset, anywhere in its full history: price candles and volume, social engagement and attention, bullish and bearish engagement, engagement per topic, and engagement by community tenure. Data is columnar: a `dates` array (Unix seconds, ascending) and one array per field, with null where a series has no bucket. Every `*Engagement` series has a `*Attention` twin, the asset's 0-1 share of the cross-entity pool (null where the pool is empty). `communityNewEngagement`/`communityRegularsEngagement` split engagement by the author's tenure with the asset (New = first or second lifetime active month, Regulars = third or later); they sum to slightly less than `socialEngagement` because engagement from unidentifiable authors is excluded — do not renormalize. Pass `dates` instead of a window to get only named days. A window starting further back than 90 days, or at hour or month resolution, needs a Personal plan.
Parameters
| Field | Type | Description |
|---|
| type* | string | The asset type. range:equities · funds · cryptocurrencies |
| ticker* | string | The asset's ticker (AAPL, SPY, BTC) or its id (nasdaq_aapl, bitcoin). Case-insensitive. /search finds it from a name. |
| fields | string | Comma-separated field names. Price: opens, highs, lows, closes, volumes, changes. Social: socialEngagement, sentimentBullishEngagement, sentimentBearishEngagement, topic{Topic}Engagement for the type's topics, communityNewEngagement, communityRegularsEngagement, and the *Attention twin of each. Omit for the candles, volumes and every engagement series. Unknown names are a 400 that suggests the closest. |
| start | string | Start of the window: Unix seconds or YYYY-MM-DD (00:00 UTC). Omit for 30 days before the end, or the whole history at month resolution. |
| end | string | End of the window: Unix seconds or YYYY-MM-DD, which means the end of that UTC day. Omit to end now. |
| resolution | string | Bucket size. Day whatever the window's length — hour and month are asked for by name. An hour window may span at most 30 days; a wider one is a 400. Hour and month need a Personal plan. range:hour · day · month default:day |
| dates | string | Comma-separated YYYY-MM-DD days, at most 100. Returns only those daily buckets, in the order asked, with a null row for a day the series has no bucket for. Exclusive with start, end and resolution. Plan gating reads the oldest day as the start. |
Response · 200
| Field | Type | Description |
|---|
| data | object | Columnar timeseries data. Contains a `dates` array (Unix timestamps in seconds) and one array per requested field, all the same length. |
| meta | object | Response metadata for timeseries and summary responses, extending the base Meta schema. |
Sign in to try this endpoint live with your own API key.
Sign in to try it →Returns written summaries of what was said about one asset, as lists of plain-text bullets per day or per month. Keys: messages (the whole conversation), sentimentBullish and sentimentBearish (the case each side made), topic{Topic} for the type's topics, and communityNew and communityRegulars where the asset carries them. Pass latest=1 for each key's newest non-empty summary whatever its date; that read is never plan-gated. A named window starting further back than 90 days, or at month resolution, needs a Personal plan.
Parameters
| Field | Type | Description |
|---|
| type* | string | The asset type. range:equities · funds · cryptocurrencies |
| ticker* | string | The asset's ticker (AAPL, SPY, BTC) or its id (nasdaq_aapl, bitcoin). Case-insensitive. /search finds it from a name. |
| fields | string | Comma-separated summary keys. Topic keys are singular (topicMacro, not topicsMacro). Omit for messages, both sentiments and the type's topics. |
| latest | string | 1 for each key's newest non-empty summary, with the day it is from; 0 or omitted for the window read. Exclusive with start, end and resolution. range:1 · 0 |
| start | string | Start of the window: Unix seconds or YYYY-MM-DD (00:00 UTC). Omit for 30 days before the end, or the whole history at month resolution. |
| end | string | End of the window: Unix seconds or YYYY-MM-DD, which means the end of that UTC day. Omit to end now. |
| resolution | string | Bucket size. There is no hourly summary. Month needs a Personal plan. range:day · month default:day |
Response · 200
| Field | Type | Description |
|---|
| data | object | Window read: a `dates` array (Unix seconds) plus one array per requested key, each cell an array of plain-text bullet strings (empty = nothing to summarise). With latest=1: an object per key, {date, day, bullets}, and a key with no summary left out. |
| meta | object | Response metadata for timeseries and summary responses, extending the base Meta schema. |
Sign in to try this endpoint live with your own API key.
Sign in to try it →Returns the assets this asset's audience also discusses, ranked by audience-overlap lift — rank 1 is the strongest overlap. A measure of who talks about what, not of price correlation or sector membership. Co-attention is not published for every asset; one without it answers with empty arrays.
Parameters
| Field | Type | Description |
|---|
| type* | string | The asset type. range:equities · funds · cryptocurrencies |
| ticker* | string | The asset's ticker (AAPL, SPY, BTC) or its id (nasdaq_aapl, bitcoin). Case-insensitive. /search finds it from a name. |
Response · 200
| Field | Type | Description |
|---|
| data | object | Columnar, ordered by rank, all arrays the same length. |
| meta | object | |
Sign in to try this endpoint live with your own API key.
Sign in to try it →Returns earnings reports, dividends, splits and analyst rating changes for one asset, as one array sorted newest first, each row stamped with its `kind`. Every row carries `date` (Unix seconds, UTC midnight) and `day` (YYYY-MM-DD). Fields by kind: earnings `epsActual` (null for a scheduled report), `epsEstimated`; dividend `dividend`, `adjDividend`, `frequency` (the date is the ex-date); split `numerator`, `denominator`; rating `firm`, `action`, `ratingCurrent`, `ratingPrior`. Every figure is nullable. The feed includes future rows: the next scheduled report and a declared dividend not yet ex. Equities only; funds and cryptocurrencies answer with an empty array and a note in `meta`.
Parameters
| Field | Type | Description |
|---|
| type* | string | The asset type. range:equities · funds · cryptocurrencies |
| ticker* | string | The asset's ticker (AAPL, SPY, BTC) or its id (nasdaq_aapl, bitcoin). Case-insensitive. /search finds it from a name. |
| kinds | string | Comma-separated event kinds: earnings, dividend, split, rating. Omit for all four. |
| start | string | Drop events before this: Unix seconds or YYYY-MM-DD. Omit for the whole calendar. A filter, not a plan limit — no window is refused here. |
| end | string | Drop events after this: Unix seconds or YYYY-MM-DD, which includes that whole UTC day. Omit for the whole calendar, future rows included. |
Response · 200
| Field | Type | Description |
|---|
| data | array<object> | Events, newest first. Each has kind, date (Unix seconds) and day (YYYY-MM-DD), plus the fields of its kind. |
| meta | object | |
Sign in to try this endpoint live with your own API key.
Sign in to try it →Returns one financial statement for one asset, newest fiscal period first — the data behind the website's Financials tab. Rows are the provider's own: `date` is the fiscal period end as YYYY-MM-DD and `period` its label (FY, Q1, …). Every metric is nullable: null means the provider sent no line, 0 means a reported zero. Per-period valuation multiples (market cap, enterprise value, P/E, P/S, P/B, yields) are null by construction and exist only on the fundamentals `ttm` row. An asset with no published document answers with an empty array and a note in `meta`.
Parameters
| Field | Type | Description |
|---|
| type* | string | The asset type. range:equities · funds · cryptocurrencies |
| ticker* | string | The asset's ticker (AAPL, SPY, BTC) or its id (nasdaq_aapl, bitcoin). Case-insensitive. /search finds it from a name. |
| statement* | string | Which statement: income, balance, cashflow, fundamentals (merged key metrics and ratios), or estimates (forward analyst EPS and revenue bands). range:income · balance · cashflow · fundamentals · estimates |
| period | string | The statement period, not a time window. ttm (trailing twelve months) exists on statement=fundamentals only; estimates take annual only. range:annual · quarter · ttm default:annual |
| limit | integer | Keep only the newest N rows. A positive integer; anything else is a 400. Omit for every row. range:≥ 1 |
Response · 200
| Field | Type | Description |
|---|
| data | array<object> | The statement's rows, newest fiscal period first. Each row is the provider's own object, with date (fiscal period end, YYYY-MM-DD). |
| meta | object | |
Sign in to try this endpoint live with your own API key.
Sign in to try it →Returns aggregate engagement and sentiment timeseries for an asset type, bucketed by sector, market cap, region, theme, or discussion topic. Values are raw engagement counts, not attention shares. Topic buckets group MESSAGES rather than companies, overlap one another, and cover only part of the conversation, so topic series do not sum to the market. Themes group companies but overlap and leave most of the market out, so they do not sum to it either. A window starting further back than 90 days, or at hour or month resolution, needs a Personal plan.
Parameters
| Field | Type | Description |
|---|
| type* | string | The asset type. range:equities · funds · cryptocurrencies |
| fields | string | Comma-separated field groups: engagement (per sector), sentiment (bullish and bearish summed over every sector), sectorSentiment, capEngagement, capSentiment, regionEngagement, regionSentiment, themeEngagement, themeSentiment, topicEngagement. Default: engagement. Groupings by type — equities: sector, cap, region, theme, topic; cryptocurrencies: sector, cap, topic; funds: topic only. Asking for a grouping the type lacks is a 400. There is no topicSentiment — a topic carries no bullish/bearish split. |
| sectors | string | Comma-separated sector keys, PascalCase and case-sensitive (equities: Technology, Healthcare, FinancialServices, …; cryptocurrencies: SmartContractPlatform, Defi, …). Funds have no sectors. Omit for all. Narrows the engagement and sectorSentiment fields only. |
| start | string | Start of the window: Unix seconds or YYYY-MM-DD (00:00 UTC). Omit for 30 days before the end, or the whole history at month resolution. |
| end | string | End of the window: Unix seconds or YYYY-MM-DD, which means the end of that UTC day. Omit to end now. |
| resolution | string | Bucket size. Day whatever the window's length — hour and month are asked for by name. An hour window may span at most 30 days; a wider one is a 400. Hour and month need a Personal plan. range:hour · day · month default:day |
Response · 200
| Field | Type | Description |
|---|
| data | object | Columnar timeseries data. Contains a `dates` array plus one array per requested sector / sentiment field, all the same length. |
| meta | object | |
Sign in to try this endpoint live with your own API key.
Sign in to try it →Returns collected news articles, newest first. With no filters it is the whole market — every article about every asset we track. `type` narrows it to asset classes and `ticker` to named assets; the two compose as OR within each list and AND across them, so a type plus a ticker of another class matches nothing. `description` comes from the publisher's OpenGraph tags and is empty for roughly a third of articles. Each article's `assets` array names every tracked asset it was collected for, with the ticker and type the other endpoints take. There is no offset, cursor, or page parameter: the window's bounds ARE the cursor — with order=desc, request the next page with `end` set to the `publishedAt` of the oldest article you received (with order=asc, move `start` to the newest), and deduplicate on `id`, because the article on the boundary is served again. A window starting further back than 90 days requires a Personal plan.
Parameters
| Field | Type | Description |
|---|
| type | string | Asset classes to include. Comma-separated and/or repeated; multiple values are OR'd. Omit for every class. Commodities are not addressable as a type, though their articles appear in an unfiltered feed. range:equities · funds · cryptocurrencies |
| ticker | string | Assets to include, by ticker. Comma-separated and/or repeated; multiple values are OR'd. Resolved within `type` when one is given, otherwise across every class. An unknown ticker is a 404 naming it. Omit for every asset. |
| start | string | Start of the window, inclusive: Unix seconds or YYYY-MM-DD. Omit for 30 days before the end. The parameter to move when paging with order=asc. |
| end | string | End of the window, inclusive: Unix seconds or YYYY-MM-DD, which means the end of that UTC day. Omit to end now. The parameter to move when paging with order=desc. |
| publisher | string | Publisher names to include. Comma-separated and/or repeated; matches are exact and case-sensitive, and multiple names are OR'd. Omit for every publisher. Call /news/publishers for the valid names. The publishers list can include an empty name, for articles the collector could not attribute — that one cannot be filtered on, and passing it is treated as no filter. |
| limit | integer | Maximum number of articles to return. Default 50; values outside 1–100 are clamped. range:1 – 100 default:50 |
| order | string | Which end of the window the page is cut from: desc is newest first, asc is oldest first. range:desc · asc default:desc |
Response · 200
| Field | Type | Description |
|---|
| data | array<any> | Articles, in the requested order. |
| meta | object | |
Sign in to try this endpoint live with your own API key.
Sign in to try it →Returns every publisher that wrote within the window, with the number of articles each contributed, sorted by count descending. These are the exact strings the news endpoint's `publisher` filter matches, so fetch this list before filtering rather than guessing names. A publisher name is occasionally the empty string. Counts are of distinct articles, so one story about four tracked assets is counted once. There is no limit parameter — the point of this endpoint is the complete vocabulary for the window. The window is the news endpoint's: the last 30 days by default. A window starting further back than 90 days requires a Personal plan.
Parameters
| Field | Type | Description |
|---|
| type | string | Asset classes to count over. Comma-separated and/or repeated. Omit for every class. range:equities · funds · cryptocurrencies |
| ticker | string | Assets to count over, by ticker. Comma-separated and/or repeated. Omit for every asset. |
| start | string | Start of the window: Unix seconds or YYYY-MM-DD (00:00 UTC). Omit for 30 days before the end, or the whole history at month resolution. |
| end | string | End of the window: Unix seconds or YYYY-MM-DD, which means the end of that UTC day. Omit to end now. |
Response · 200
| Field | Type | Description |
|---|
| data | array<object> | Publishers with article counts, sorted by count descending. |
| meta | object | |
Sign in to try this endpoint live with your own API key.
Sign in to try it →Finds tracked assets by ticker or name, closest first: an exact ticker, then tickers starting with the text, then names with a word starting with it, then tickers or names containing it, and for four or more characters a name word one edit away. Use it to turn a company or coin name into the type and ticker the other endpoints take. Inactive assets are left out.
Parameters
| Field | Type | Description |
|---|
| q* | string | Ticker or name text. Empty returns no results. |
| type | string | Asset classes to search. Comma-separated and/or repeated. Omit for every class. range:equities · funds · cryptocurrencies |
| limit | integer | Maximum results. Default 10; values outside 1–50 are clamped. range:1 – 50 default:10 |
Response · 200
| Field | Type | Description |
|---|
| data | array<object> | Matches, closest first. |
| meta | object | |
Sign in to try this endpoint live with your own API key.
Sign in to try it →