Cluster comparison

GET /clusters/comparison
CompareClusters

Every author cluster side by side: its posts and their change, how bullish it is against the market, the asset it turned to more than the market did, and its posts day by day.

Per cluster: posts, bullish and bearish posts, and activity_change_pct, the change in posts against the previous window of the same length (null when that window is not wholly inside the data or held no posts). cluster_bullish_share is bullish ÷ (bullish + bearish) posts, and market_bullish_share is the same for the market the cluster reads over the same days and asset classes, so their difference is the cluster's stance against the market. trending_asset is the asset the cluster turned to more than the market did over the last 7 complete days, whatever the window: the rise in its share of the cluster's posts against the 7 days before, less the rise in its share of the market's posts. It needs 3 or more cluster posts in the last 7 days, and is null when the cluster out-gains the market on no asset. series is every complete day of the window, days without posts included. Clusters come most posts first.

Built from a daily per-cluster rollup of complete UTC days (today excluded, refreshed every few hours). The market is every author except bots; asset_class filters every cluster and the market. Posting communities (wallstreetbets, reddit) cover equities only, so they are absent unless equity is selected.

Parameters

asset_class array<string> QUERY

The markets to compare the clusters across: equity (stocks and ETFs), commodity, index, crypto, or any combination, for example asset_class=equity,index. Defaults to all four. Send several comma-separated.

Default:equity,commodity,index,crypto

days integer QUERY

How many complete UTC days to compare, counting back from the latest complete day: 7, 30, or 90. activity_change_pct compares with the same number of days before. Free plans read up to 90 days back; Pro plans up to this parameter's maximum. A value reaching past your plan's window returns 403 and is not charged.

Allowed values
73090

Default:30

cURL Example

curl --request GET \
  --url 'https://nebula-api.hiddensystems.ai/api/v1/public/clusters/comparison' \
  --header 'X-API-Key: YOUR_API_KEY'

Responses

200 OK
400 Bad Request
401 Unauthorized
402 Credits used up; upgrade_url links to buying more
403 Forbidden
404 Not Found
405 Method not allowed; the Allow header lists the supported method
429 Too Many Requests
500 Internal Server Error
503 Service Unavailable

Media type application/json

asset_classes
array<string> required

The markets analysed, in the order equity, commodity, index, crypto: the asset_class values requested, or all four when asset_class was omitted.

clusters
array<object> required

Every cluster with posts in the window, most posts first.

clusters[].activity_change_pct
number (double) required

Percent change in posts against the previous window of equal length (76 posts after 84 is -9.52); absent when no comparison is possible.

clusters[].bearish_posts
integer (int64) required

The cluster's bearish posts over the window.

clusters[].bullish_posts
integer (int64) required

The cluster's bullish posts over the window.

clusters[].cluster_bullish_share
number (double) required

The cluster's bullish ÷ (bullish + bearish) posts over the window, from 0 to 1. Null with no bullish or bearish posts.

clusters[].cluster_id
string required

Canonical author-cluster identifier.

clusters[].market_bullish_share
number (double) required

The same share for the market the cluster reads, over the same days and asset classes (the equity market for a posting community): the baseline cluster_bullish_share compares with. Null with no bullish or bearish posts.

clusters[].posts
integer (int64) required

The cluster's posts over the window.

clusters[].series
array<object> required

Every complete UTC day of the window, oldest first, days without posts included.

clusters[].series[].bearish_posts
integer (int64) required

The cluster's bearish posts on the day.

clusters[].series[].bullish_posts
integer (int64) required

The cluster's bullish posts on the day.

clusters[].series[].posts
integer (int64) required

The cluster's posts on the day.

clusters[].series[].timestamp
string (date-time) required

UTC start of the day: 00:00.

clusters[].trending_asset
object required

The asset the cluster turned to more than the market did over the last 7 complete days; null when there is none.

clusters[].trending_asset.asset_class
string required

The asset's class: equity (stocks and ETFs), commodity, index, or crypto. Send it with asset_id on every asset-scoped request.

Allowed values
equitycommodityindexcrypto
clusters[].trending_asset.asset_id
string required

Canonical public asset identifier: the ticker or market symbol for stocks, commodities, and indices, and the CoinGecko slug (or, without one, a numeric id) for crypto.

clusters[].trending_asset.name
string required

Human-readable name.

clusters[].trending_asset.symbol
string required

Display ticker or market symbol.

days
integer required

Window length in complete UTC days, ending at the latest complete day.

{
  "asset_classes": [
    "equity",
    "commodity",
    "index",
    "crypto"
  ],
  "clusters": [
    {
      "activity_change_pct": 7.61,
      "bearish_posts": 13550,
      "bullish_posts": 61240,
      "cluster_bullish_share": 0.8188,
      "cluster_id": "media",
      "market_bullish_share": 0.7812,
      "posts": 173412,
      "series": [
        {
          "bearish_posts": 480,
          "bullish_posts": 2210,
          "posts": 6120,
          "timestamp": "2026-09-11T00:00:00Z"
        },
        {
          "bearish_posts": 512,
          "bullish_posts": 2102,
          "posts": 5874,
          "timestamp": "2026-09-12T00:00:00Z"
        }
      ],
      "trending_asset": {
        "asset_class": "equity",
        "asset_id": "NVDA",
        "name": "NVIDIA Corporation",
        "symbol": "NVDA"
      }
    },
    {
      "activity_change_pct": 171.42,
      "bearish_posts": 18860,
      "bullish_posts": 20480,
      "cluster_bullish_share": 0.5206,
      "cluster_id": "wallstreetbets",
      "market_bullish_share": 0.7035,
      "posts": 88034,
      "series": [
        {
          "bearish_posts": 702,
          "bullish_posts": 790,
          "posts": 3310,
          "timestamp": "2026-09-11T00:00:00Z"
        },
        {
          "bearish_posts": 681,
          "bullish_posts": 655,
          "posts": 2987,
          "timestamp": "2026-09-12T00:00:00Z"
        }
      ],
      "trending_asset": {
        "asset_class": "equity",
        "asset_id": "ORCL",
        "name": "Oracle Corporation",
        "symbol": "ORCL"
      }
    }
  ],
  "days": 30
}