# CorpStacking

> Follow the Bitcoin, Ethereum, Solana and XRP that public companies, ETFs and governments hold: the latest buys and sells as they are disclosed, the largest holders of each asset, one holder's position and filings, bitcoin companies' mNAV, and treasury news.

App · 5 actions. Web page: https://docs.lodol.com/docs/integrations/corpstacking

## Actions

### Get a holder

One company's, fund's or government's position in its main treasury asset: coins held, their value, cost basis and unrealized profit where published, share of supply, and, for Bitcoin holders, its recent buys and sells with links to the filings. CorpStacking shows Ethereum, Solana and XRP cost basis and per-move history to paying subscribers only.

**Inputs**

- Holder (`holder`, text, required): Pick a holder, or type its name, its ticker (such as MSTR) or its corpstacking.com/treasuries/... address.
- Number of recent moves (`activity_limit`, number): How many of its latest moves to include (10 unless set). From 1 to 50. Default: `10`.

**Outputs**

- `activity` (list): Recent moves, newest first (Bitcoin holders).
- `activity_count` (number): Moves returned.
- `activity_note` (text): Why no moves are listed, when none are.
- `amount` (number): Coins held.
- `asset` (text): Its main asset: BTC, ETH, SOL or XRP.
- `asset_name` (text): That asset's name.
- `attribution` (text): CorpStacking's attribution and licence terms for these figures.
- `average_buy_price_usd` (number): Average price paid per coin, when published.
- `balance_as_of` (text): XRP funds: the day the balance is from.
- `balance_source_url` (text): XRP funds: where the balance was published.
- `cost_basis_note` (text): Why no cost basis is shown, when it isn't.
- `country` (text): Two-letter country code.
- `last_purchase` (text): Day of its last purchase.
- `name` (text): Company, fund or government.
- `percent_of_supply` (number): Bitcoin only: percent of circulating supply held.
- `price_usd` (number): Coin price used.
- `profile_url` (text): Its CorpStacking page.
- `sec_cik` (text): Its SEC registrant number.
- `slug` (text): Its CorpStacking ID.
- `ticker` (text): Its ticker.
- `total_cost_usd` (number): What it paid in total, when published.
- `unrealized_profit_usd` (number): Paper profit (negative for a loss), when published.
- `usd_value` (number): Value in dollars.
- `website` (text): Its website.

**Example output**

```json
{
  "activity": [
    {
      "amount": 250,
      "asset": "BTC",
      "date": "2026-10-13",
      "holdings_after": 848250,
      "price_per_unit_usd": 86194,
      "source": "SEC filing",
      "source_url": "https://www.sec.gov/Archives/edgar/data/1050446/000119312526419726/mstr-ex99_1.htm",
      "type": "bought",
      "usd_value": 21500000
    }
  ],
  "activity_count": 1,
  "activity_note": null,
  "amount": 848250,
  "asset": "BTC",
  "asset_name": "Bitcoin",
  "attribution": "Data: CorpStacking (corpstacking.com). Cite any figure with a link to corpstacking.com; bulk copying, resale or training a model on it needs a licence from CorpStacking.",
  "average_buy_price_usd": 75444,
  "balance_as_of": null,
  "balance_source_url": null,
  "cost_basis_note": null,
  "country": "US",
  "last_purchase": "2026-10-13",
  "name": "Strategy",
  "percent_of_supply": 4.0393,
  "price_usd": 82371,
  "profile_url": "https://www.corpstacking.com/treasuries/strategy",
  "sec_cik": "0001050446",
  "slug": "strategy",
  "ticker": "MSTR",
  "total_cost_usd": 63995373000,
  "unrealized_profit_usd": 5875827750,
  "usd_value": 69871200750,
  "website": "https://strategy.com"
}
```

### Get asset holdings overview

How much of one asset all tracked companies, funds and governments hold between them, its price, and the largest holders. CorpStacking publishes the top 50 Bitcoin holders, the top 15 Ethereum and Solana holders and all XRP funds for free; Bitcoin also comes with combined cost basis and unrealized profit.

**Inputs**

- Asset (`asset`, text): Which asset to summarise. One of: `BTC` (Bitcoin (BTC)), `ETH` (Ethereum (ETH)), `SOL` (Solana (SOL)), `XRP`. Default: `BTC`.
- Number of holders (`limit`, number): How many of the largest holders to list (10 unless set). From 1 to 50. Default: `10`.

**Outputs**

- `asset` (text): BTC, ETH, SOL or XRP.
- `asset_name` (text): The asset's name.
- `attribution` (text): CorpStacking's attribution and licence terms for these figures.
- `cost_basis_note` (text): How many holders the cost basis covers.
- `holders_tracked` (number): Holders CorpStacking tracks for this asset.
- `most_recent_purchase` (text): Day of the latest purchase by any holder.
- `note` (text): XRP only: how fund balances are dated.
- `page_url` (text): CorpStacking's page for the asset.
- `price_usd` (number): Price in dollars.
- `top_holders` (list): Largest holders, biggest first.
- `top_holders_published` (number): How many holders CorpStacking lists for free.
- `total_cost_basis_usd` (number): Bitcoin only: what holders with a known cost paid.
- `total_held` (number): Coins held by all of them together.
- `total_value_usd` (number): That holding's value in dollars.
- `unrealized_profit_usd` (number): Bitcoin only: paper profit on those holdings.

**Example output**

```json
{
  "asset": "BTC",
  "asset_name": "Bitcoin",
  "attribution": "Data: CorpStacking (corpstacking.com). Cite any figure with a link to corpstacking.com; bulk copying, resale or training a model on it needs a licence from CorpStacking.",
  "cost_basis_note": "Cost known for 71 of 178 companies.",
  "holders_tracked": 235,
  "most_recent_purchase": "2026-10-14",
  "note": null,
  "page_url": "https://www.corpstacking.com/treasuries/by-token/bitcoin",
  "price_usd": 82371,
  "top_holders": [
    {
      "amount": 848250,
      "country": "US",
      "last_buy_date": "2026-10-13",
      "name": "Strategy",
      "profile_url": "https://www.corpstacking.com/treasuries/strategy",
      "rank": 1,
      "slug": "strategy",
      "ticker": "MSTR",
      "usd_value": 69871200750
    }
  ],
  "top_holders_published": 50,
  "total_cost_basis_usd": 85917562882,
  "total_held": 3075951.8,
  "total_value_usd": 253369225790,
  "unrealized_profit_usd": 7680893321
}
```

### Get bitcoin company mNAV

mNAV for every listed company that holds bitcoin: its stock market value divided by the value of its bitcoin. Below 1 the shares trade at a discount to the bitcoin behind them, above 1 at a premium. Updated daily.

**Inputs**

- Company (`company`, text): Only this company: a ticker such as MSTR, or part of its name.
- Trading at (`valuation`, text): Only companies valued below, or above, their bitcoin. One of: `any` (Any value), `discount` (A discount (mNAV below 1)), `premium` (A premium (mNAV 1 or more)). Default: `any`.
- Sort by (`sort`, text): The order to list companies in. One of: `holdings` (Most bitcoin held), `lowest_mnav` (Lowest mNAV first), `highest_mnav` (Highest mNAV first). Default: `holdings`.
- Limit (`limit`, number): Most companies to return (25 unless set). From 1 to 200. Default: `25`.

**Outputs**

- `attribution` (text): CorpStacking's attribution and licence terms for these figures.
- `bitcoin_price_usd` (number): Bitcoin price the table uses.
- `companies` (list): Matching companies.
- `count` (number): Companies returned.
- `message` (text): Why nothing matched, when nothing did.
- `page_url` (text): CorpStacking's mNAV page.
- `total_matching` (number): Companies that matched before the limit.

**Example output**

```json
{
  "attribution": "Data: CorpStacking (corpstacking.com). Cite any figure with a link to corpstacking.com; bulk copying, resale or training a model on it needs a licence from CorpStacking.",
  "bitcoin_price_usd": 82371,
  "companies": [
    {
      "bitcoin_held": 848250,
      "bitcoin_value_usd": 69871200750,
      "company": "Strategy",
      "market_value_as_of": "2026-10-15",
      "market_value_usd": 62672158896,
      "mnav": 0.897,
      "premium_or_discount_percent": -10.3,
      "rank": 1,
      "ticker": "MSTR",
      "valuation": "discount"
    }
  ],
  "count": 1,
  "message": null,
  "page_url": "https://www.corpstacking.com/treasuries/mnav",
  "total_matching": 54
}
```

### List latest treasury moves

The most recent bitcoin, ether, solana and XRP buys and sells disclosed by companies, funds and governments, newest first, each with the amount, the dollar value where one was stated, the holdings after it and a link to the source document. CorpStacking's free feed holds the latest 50 moves (about the last week), and the filters here narrow those down. Also totals what was bought and sold per asset.

**Inputs**

- Assets (`assets`, list): Only moves in these assets. Leave empty for all. One or more of: `BTC` (Bitcoin (BTC)), `ETH` (Ethereum (ETH)), `SOL` (Solana (SOL)), `XRP`.
- Buys or sells (`direction`, text): Only purchases, only sales, or both. One of: `any` (Both), `bought` (Buys only), `sold` (Sells only). Default: `any`.
- Who disclosed it (`disclosure_type`, text): Funds: an ETF's or trust's daily flow or published holdings. Companies: a filing or announcement by a company or other holder. One of: `any` (Anyone), `funds` (Funds and ETFs), `companies` (Companies and others). Default: `any`.
- Region (`region`, text): Only US holders, only holders outside the US, or both. One of: `any` (Anywhere), `us` (United States), `intl` (Outside the US). Default: `any`.
- Holder (`holder`, text): Only moves by this holder: pick one, or type a name (or part of one) or a ticker such as MSTR.
- From date (`from_date`, date): Only moves on or after this day.
- To date (`to_date`, date): Only moves on or before this day.
- Minimum dollar value (`minimum_usd_value`, number): Only moves worth at least this many US dollars. Moves with no disclosed dollar value are left out when set. At least 0.
- Limit (`limit`, number): Most moves to return (20 unless set, 50 at most). From 1 to 50. Default: `20`.

**Outputs**

- `attribution` (text): CorpStacking's attribution and licence terms for these figures.
- `count` (number): Moves returned.
- `feed_size` (number): Moves in the feed before filtering.
- `feed_window` (object): oldest and newest day in the feed.
- `message` (text): Why nothing matched, when nothing did.
- `moves` (list): Matching moves, newest first.
- `source_url` (text): The feed's address.
- `total_matching` (number): Moves that matched before the limit.
- `totals` (list): Per asset across all matching moves: moves, bought, sold, net_change (coins), and usd_bought / usd_sold (only moves with a stated dollar value count).

**Example output**

```json
{
  "attribution": "Data: CorpStacking (corpstacking.com). Cite any figure with a link to corpstacking.com; bulk copying, resale or training a model on it needs a licence from CorpStacking.",
  "count": 1,
  "feed_size": 50,
  "feed_window": {
    "newest": "2026-10-14",
    "oldest": "2026-10-08"
  },
  "message": null,
  "moves": [
    {
      "amount": 2822,
      "asset": "BTC",
      "change": 2822,
      "date": "2026-10-14",
      "direction": "bought",
      "disclosure_type": "companies",
      "holder_name": "Strive, Inc.",
      "holder_slug": "strive",
      "holdings_after": 35595,
      "price_per_unit_usd": 83266,
      "profile_url": "https://www.corpstacking.com/treasuries/strive",
      "published_at": "2026-10-14T00:00:00.000Z",
      "region": "United States",
      "source": "SEC filing",
      "source_url": "https://www.sec.gov/Archives/edgar/data/1920406/000192040626000071/ex99-1.htm",
      "summary": "Strive, Inc. increased its holdings by 2,822 BTC to 35,595 BTC as of 2026-10-14.",
      "ticker": "ASST",
      "title": "Strive, Inc. (ASST) bought 2,822 BTC for $234,976,652",
      "usd_value": 234976652
    }
  ],
  "source_url": "https://www.corpstacking.com/feed.json",
  "total_matching": 1,
  "totals": [
    {
      "asset": "BTC",
      "bought": 2822,
      "moves": 1,
      "net_change": 2822,
      "sold": 0,
      "usd_bought": 234976652,
      "usd_sold": 0
    }
  ]
}
```

### List treasury news

CorpStacking's latest crypto treasury news items, newest first: purchases and sales, capital raises, earnings, executive changes, wire news and commentary, each with a one-line summary and a link. The free feed holds the latest 50 items, and the filters here narrow those down.

**Inputs**

- Kinds of news (`kinds`, list): Only these kinds. Leave empty for all. One or more of: `purchase` (Purchase or sale), `capital_raise` (Capital raise), `earnings_release` (Earnings release), `exec_change` (Executive change), `wire_news` (News), `commentary`.
- Containing (`search`, text): Only items whose headline or summary contains this text, such as Strategy.
- From date (`from_date`, date): Only items published on or after this day.
- Limit (`limit`, number): Most items to return (20 unless set, 50 at most). From 1 to 50. Default: `20`.

**Outputs**

- `attribution` (text): CorpStacking's attribution and licence terms for these figures.
- `count` (number): Items returned.
- `message` (text): Why nothing matched, when nothing did.
- `news` (list): Matching items, newest first.
- `source_url` (text): The feed's address.
- `total_matching` (number): Items that matched before the limit.

**Example output**

```json
{
  "attribution": "Data: CorpStacking (corpstacking.com). Cite any figure with a link to corpstacking.com; bulk copying, resale or training a model on it needs a licence from CorpStacking.",
  "count": 1,
  "message": null,
  "news": [
    {
      "date": "2026-10-14",
      "headline": "Strive acquires 2,822 BTC, surpasses Marathon in holdings",
      "kind": "wire_news",
      "kind_label": "News",
      "published_at": "2026-10-14T14:20:38Z",
      "summary": "Strive acquired an additional 2,822 BTC. The purchase positions Strive ahead of Marathon Digital in corporate Bitcoin treasury rankings.",
      "url": "https://www.corpstacking.com/signals/strive-wire-news-2026-10-14-9ff162b8"
    }
  ],
  "source_url": "https://www.corpstacking.com/signals.rss",
  "total_matching": 32
}
```
