Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/cabalspy-xyz:cabalspy-xyz-tokens-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: CabalSpy Tokens API
version: 1.0.0
description: 'REST API for CabalSpy on-chain labeled wallet data: tracked KOL, Smart Money and Whale wallets on Solana, BNB Chain, Base, Ethereum and Robinhood Chain (blockchain values: solana, bnb, base, eth, rh), with wallet profiles, leaderboards, PnL, token holders and transactions, bundle detection (Solana only), live signals and analytics.
Wallet type availability per chain: Solana has kol, smart, whale. BNB, Base and Robinhood Chain have kol, smart. ETH has kol.
Authentication: every request needs an API key, passed either as the api_key query parameter or as an Authorization Bearer header (the two are equivalent). Get a free key at https://apidashboard.cabalspy.xyz/.
Credits: a REST request costs 10 credits on every plan. The free tier includes 10,000 credits per month; credits reset on the first of every month.
Rate limits: requests per second by plan are 5 (Free), 20 (Starter), 50 (Pro) and 100 (Business). Exceeding the limit returns 429 rate_limited; wait and retry.
Responses share an envelope: success, data, meta (request_id, cached, cache_age_seconds, version, timestamp) and, on some endpoints, pagination.
Real-time data is available separately over WebSocket at wss://stream.cabalspy.xyz (not described by this document; 1 credit per event received).'
termsOfService: https://www.cabalspy.xyz/terms/
contact:
name: CabalSpy
email: contact@cabalspy.xyz
servers:
- url: https://api.cabalspy.xyz/v1
security:
- ApiKeyQuery: []
- BearerAuth: []
tags:
- name: Tokens
description: Per token stats, holders and transactions of tracked wallets.
paths:
/tokens/stats:
get:
operationId: getTokenStats
summary: Token stats
description: 'Aggregate trading statistics for one token across tracked wallets: token block with current market cap, holder totals by wallet type, flow statistics and a per trader breakdown with live position. Market cap, price and live position fields are Solana only (null on other chains). Costs 10 credits per request.'
tags:
- Tokens
externalDocs:
url: https://docs.cabalspy.xyz/stats
parameters:
- name: blockchain
in: query
required: true
description: Chain of the token. One of solana, bnb, base, eth.
schema:
type: string
enum:
- solana
- bnb
- base
- eth
- rh
- name: mint
in: query
required: true
description: The token mint or contract address.
schema:
type: string
- name: type
in: query
required: false
description: Optional wallet category to narrow the breakdown kol, smart or whale. Omit to aggregate across all categories available on the chain.
schema:
type: string
enum:
- kol
- smart
- whale
responses:
'200':
description: Successful response.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
description: True on success.
data:
type: object
properties:
token:
$ref: '#/components/schemas/Token'
total_holders:
$ref: '#/components/schemas/TotalHolders'
total_holdings:
type: object
properties:
token_amount:
type: number
token_amount_peak:
type: number
supply_pct:
type: number
supply_pct_peak:
type: number
additionalProperties: true
total_statistics:
type: object
properties:
total_buy:
type: number
total_buy_usd:
type: number
total_sell:
type: number
total_sell_usd:
type: number
net_flow:
type: number
description: Buy minus sell (native). Positive means net accumulation.
net_flow_usd:
type: number
total_volume:
type: number
total_volume_usd:
type: number
avg_position_size:
type: number
largest_position:
type: number
buying_pressure:
type: number
description: Buy share of total volume, an indicator of pressure.
first_entry_time:
type: string
first_entry_type:
type: string
first_entry_wallet_address:
type: string
latest_entry_time:
type: string
latest_entry_type:
type: string
latest_entry_wallet_address:
type: string
time_since_first_entry_hours:
type: number
additionalProperties: true
traders:
type: array
description: Traders sorted by buy volume, highest first.
items:
type: object
properties:
profile:
$ref: '#/components/schemas/Profile'
trader_stats:
type: object
properties:
buy:
type: number
buy_usd:
type: number
sell:
type: number
sell_usd:
type: number
volume_buy:
type: number
volume_buy_usd:
type: number
volume_sell:
type: number
volume_sell_usd:
type: number
realized_pnl:
type: number
realized_pnl_usd:
type: number
realized_pnl_percentage:
type: number
buy_count:
type: integer
sell_count:
type: integer
buy_tokens:
type: number
sell_tokens:
type: number
avg_buy_price:
type: number
first_trade_at:
type: string
last_trade_at:
type: string
additionalProperties: true
trader_holdings:
$ref: '#/components/schemas/Position'
additionalProperties: true
additionalProperties: true
meta:
$ref: '#/components/schemas/Meta'
additionalProperties: true
example:
success: true
data:
token:
mint: 3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump
token_name: invisibull
blockchain: solana
currency: SOL
token_supply: 1000000000
token_decimals: 6
market_cap: 40.08
market_cap_usd: 3301.2
market_cap_currency: SOL
price: 4.008e-08
price_usd: 3.3e-06
sol_price_usd: 82.36
total_holders:
kol_count: 1
smart_count: 0
whale_count: 0
still_holding_count: 1
total_holdings:
token_amount: 22113972.03
token_amount_peak: 22113972.03
supply_pct: 2.211397
supply_pct_peak: 2.211397
total_statistics:
total_buy: 1.66
total_buy_usd: 137.44
total_sell: 0.0
total_sell_usd: 0.0
net_flow: 1.66
net_flow_usd: 137.44
total_volume: 1.66
total_volume_usd: 137.44
avg_position_size: 1.66
largest_position: 1.66
buying_pressure: 100.0
first_entry_time: '2026-07-04T16:25:34Z'
first_entry_type: buy
first_entry_wallet_address: 7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW
latest_entry_time: '2026-07-04T16:25:34Z'
latest_entry_type: buy
latest_entry_wallet_address: 7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW
time_since_first_entry_hours: 42.6
traders:
- profile:
name: Maze
image_url: https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png
twitter: https://x.com/MazeCCC
telegram: ''
blockchain: solana
currency: SOL
type: kol
trader_stats:
buy: 1.66
buy_usd: 137.44
sell: 0.0
sell_usd: 0.0
volume_buy: 1.66
volume_buy_usd: 137.44
volume_sell: 0.0
volume_sell_usd: 0.0
realized_pnl: 0.0
realized_pnl_usd: 0.0
realized_pnl_percentage: 0.0
buy_count: 1
sell_count: 0
buy_tokens: 22113972.03
sell_tokens: 0.0
avg_buy_price: 7.5e-08
first_trade_at: '2026-07-04T16:25:34Z'
last_trade_at: '2026-07-04T16:25:34Z'
trader_holdings:
token_amount: 22113972.03
token_amount_peak: 22113972.03
supply_pct: 2.211397
supply_pct_peak: 2.211397
bag_pct: 100.0
still_holding: true
unrealized_pnl_sol: -0.099817
unrealized_pnl_usd: -8.22
unrealized_pnl_pct: -10.12
remaining_sol: 0.886537
remaining_usd: 73.02
entry_market_cap: 44.6
entry_market_cap_usd: 3673.2
meta:
request_id: req_5162c7cf7f87
cached: false
cache_age_seconds: 0
version: 1.0.0
timestamp: '2026-07-06T11:01:57Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/RateLimited'
/tokens/holders:
get:
operationId: getTokenHolders
summary: Token holders
description: The tracked wallets holding a token, sorted by amount held highest first, each with profile and live position (bag percentage, unrealized PnL, remaining value, entry market cap). Live position fields are Solana only and null on other chains. Costs 10 credits per request.
tags:
- Tokens
externalDocs:
url: https://docs.cabalspy.xyz/Holders
parameters:
- name: blockchain
in: query
required: true
description: Chain of the token. One of solana, bnb, base, eth.
schema:
type: string
enum:
- solana
- bnb
- base
- eth
- rh
- name: mint
in: query
required: true
description: The token mint or contract address.
schema:
type: string
- name: type
in: query
required: false
description: Optional wallet category kol, smart or whale. Omit to include all categories.
schema:
type: string
enum:
- kol
- smart
- whale
- name: limit
in: query
required: false
description: Maximum number of holders to return.
schema:
type: integer
responses:
'200':
description: Successful response.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
description: True on success.
data:
type: object
properties:
token:
$ref: '#/components/schemas/Token'
total_holders:
$ref: '#/components/schemas/TotalHolders'
holders:
type: array
description: Holders sorted by amount held, highest first.
items:
type: object
properties:
profile:
$ref: '#/components/schemas/Profile'
holdings:
$ref: '#/components/schemas/Position'
additionalProperties: true
pagination:
$ref: '#/components/schemas/Pagination'
additionalProperties: true
pagination:
$ref: '#/components/schemas/Pagination'
meta:
$ref: '#/components/schemas/Meta'
additionalProperties: true
example:
success: true
data:
token:
mint: 3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump
token_name: invisibull
blockchain: solana
currency: SOL
token_supply: 1000000000
token_decimals: 6
market_cap: 40.08
market_cap_usd: 3301.2
market_cap_currency: SOL
price: 4.008e-08
price_usd: 3.3e-06
sol_price_usd: 82.36
total_holders:
kol_count: 1
smart_count: 0
whale_count: 0
still_holding_count: 1
holders:
- profile:
name: Maze
image_url: https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png
twitter: https://x.com/MazeCCC
telegram: ''
blockchain: solana
currency: SOL
type: kol
holdings:
token_amount: 22113972.03
token_amount_peak: 22113972.03
supply_pct: 2.211397
supply_pct_peak: 2.211397
bag_pct: 100.0
still_holding: true
unrealized_pnl_sol: -0.099817
unrealized_pnl_usd: -8.22
unrealized_pnl_pct: -10.12
remaining_sol: 0.886537
remaining_usd: 73.02
entry_market_cap: 44.6
entry_market_cap_usd: 3673.2
pagination:
limit: 50
total: 1
has_more: false
next_cursor: null
meta:
request_id: req_5162c7cf7f87
cached: false
cache_age_seconds: 0
version: 1.0.0
timestamp: '2026-07-06T11:01:57Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/RateLimited'
/tokens/transactions:
get:
operationId: getTokenTransactions
summary: Token transactions
description: The individual buy and sell transactions of tracked wallets on one token, newest first, each with trader profile and the holder position right after the trade (holdings_after). Current market cap in the token block is Solana only. Costs 10 credits per request.
tags:
- Tokens
externalDocs:
url: https://docs.cabalspy.xyz/transactions
parameters:
- name: blockchain
in: query
required: true
description: Chain of the token. One of solana, bnb, base, eth.
schema:
type: string
enum:
- solana
- bnb
- base
- eth
- rh
- name: mint
in: query
required: true
description: The token mint or contract address.
schema:
type: string
- name: type
in: query
required: false
description: Optional wallet category kol, smart or whale. Omit to include all categories.
schema:
type: string
enum:
- kol
- smart
- whale
- name: limit
in: query
required: false
description: Maximum number of transactions to return.
schema:
type: integer
responses:
'200':
description: Successful response.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
description: True on success.
data:
type: object
properties:
token:
$ref: '#/components/schemas/Token'
transactions:
type: array
description: Transactions, newest first.
items:
type: object
properties:
tx_signature:
type: string
transaction_type:
type: string
description: buy or sell.
value:
type: number
value_usd:
type:
- number
- 'null'
currency:
type: string
token_amount:
type: number
price_per_token:
type: number
price_per_token_usd:
type:
- number
- 'null'
created_at:
type: string
description: ISO timestamp of the trade.
profile:
$ref: '#/components/schemas/Profile'
holdings_after:
$ref: '#/components/schemas/HoldingsAfter'
additionalProperties: true
pagination:
$ref: '#/components/schemas/Pagination'
additionalProperties: true
pagination:
$ref: '#/components/schemas/Pagination'
meta:
$ref: '#/components/schemas/Meta'
additionalProperties: true
example:
success: true
data:
token:
mint: 3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump
token_name: invisibull
blockchain: solana
currency: SOL
token_supply: 1000000000
token_decimals: 6
market_cap: 40.08
market_cap_usd: 3301.2
market_cap_currency: SOL
price: 4.008e-08
price_usd: 3.3e-06
sol_price_usd: 82.36
transactions:
- tx_signature: 5xr8abc...
transaction_type: buy
value: 1.66
value_usd: 137.44
currency: SOL
token_amount: 22113972.03
price_per_token: 7.5e-08
price_per_token_usd: 6.2e-06
created_at: '2026-07-04T16:25:34Z'
profile:
name: Maze
image_url: https://cabalspy.xyz/images/7j7AA3HZR2zEjwAQEKPFh2qucLY4fqZpB9iodf39w8xW.png
twitter: https://x.com/MazeCCC
telegram: ''
blockchain: solana
currency: SOL
type: kol
holdings_after:
token_amount: 22113972.03
token_amount_peak: 22113972.03
supply_pct: 2.211397
supply_pct_peak: 2.211397
bag_pct: 100.0
still_holding: true
pagination:
limit: 50
total: 1
has_more: false
next_cursor: null
meta:
request_id: req_5162c7cf7f87
cached: false
cache_age_seconds: 0
version: 1.0.0
timestamp: '2026-07-06T11:01:57Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/RateLimited'
components:
responses:
Unauthorized:
description: Code unauthorized. API key missing.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Bad request. Code missing_parameter (a required parameter is missing) or invalid_parameter (a parameter is missing or has an invalid value, for example a chain and wallet type combination that does not exist such as eth with whale).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
RateLimited:
description: Code rate_limited. Rate limit exceeded (the plan's requests-per-second limit), wait and retry.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Forbidden:
description: Code forbidden. API key invalid or credits exhausted.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Token:
type: object
description: Token block.
properties:
mint:
type: string
description: Token mint or contract address.
token_name:
type: string
description: Token name.
blockchain:
type: string
description: Chain.
currency:
type: string
description: Native currency.
token_supply:
type: number
description: Total supply.
token_decimals:
type: integer
description: Token decimals.
market_cap:
type:
- number
- 'null'
description: Current market cap in native currency. Solana only, null otherwise.
market_cap_usd:
type:
- number
- 'null'
description: Current market cap in USD. Solana only, null otherwise.
market_cap_currency:
type:
- string
- 'null'
description: Currency of the market cap value (SOL), or null.
price:
type:
- number
- 'null'
description: Current token price in native currency. Solana only.
price_usd:
type:
- number
- 'null'
description: Current token price in USD. Solana only.
sol_price_usd:
type:
- number
- 'null'
description: SOL price in USD used for USD conversions. Solana only.
additionalProperties: true
Error:
type: object
description: Error response. The documentation specifies the HTTP status and an error code (missing_parameter, invalid_parameter, unauthorized, forbidden, not_found, rate_limited) but not the exact body layout, so no fields are asserted here.
additionalProperties: true
Profile:
type: object
description: Wallet profile.
properties:
name:
type: string
description: Display name (may be empty).
image_url:
type: string
description: Avatar URL.
twitter:
type: string
description: Twitter or X link.
telegram:
type: string
description: Telegram link.
blockchain:
type: string
description: Chain.
currency:
type: string
description: Native currency.
type:
type:
- string
- 'null'
description: Wallet type kol, smart or whale.
additionalProperties: true
Meta:
type: object
description: Request metadata returned with every response.
properties:
request_id:
type: string
cached:
type: boolean
cache_age_seconds:
type: integer
version:
type: string
timestamp:
type: string
additionalProperties: true
Pagination:
type: object
description: Standard pagination object. Depending on the endpoint it appears inside data or next to data at the top level of the response.
properties:
limit:
type:
- integer
- 'null'
description: Requested page size (null means all).
total:
type: integer
description: Total number of items.
has_more:
type: boolean
description: Whether more pages follow.
next_cursor:
type:
- string
- 'null'
description: Cursor for the next page (null means end).
additionalProperties: true
TotalHolders:
type: object
description: Holder totals by wallet type.
properties:
kol_count:
type: integer
smart_count:
type: integer
whale_count:
type: integer
still_holding_count:
type: integer
additionalProperties: true
HoldingsAfter:
type: object
description: Holder position right after a trade.
properties:
token_amount:
type: number
token_amount_peak:
type: number
supply_pct:
type: number
supply_pct_peak:
type: number
bag_pct:
type: number
still_holding:
type: boolean
additionalProperties: true
Position:
type: object
description: Live position of a wallet in a token.
properties:
token_amount:
type: number
description: Tokens currently held.
token_amount_peak:
type: number
description: Peak tokens held.
supply_pct:
type: number
description: Percent of supply held.
supply_pct_peak:
type: number
description: Peak percent of supply held.
bag_pct:
type: number
description: Percent of peak holding still held.
still_holding:
type: boolean
description: Whether the wallet still holds.
unrealized_pnl_sol:
type:
- number
- 'null'
description: Unrealized PnL on the remaining bag (native). Solana only. Frozen to 0 once fully sold.
unrealized_pnl_usd:
type:
- number
- 'null'
description: Unrealized PnL in USD. Solana only.
unrealized_pnl_pct:
type:
- number
- 'null'
description: Unrealized PnL percentage. Solana only.
remaining_sol:
type:
- number
- 'null'
description: Current value of the remaining bag (native). Solana only.
remaining_usd:
type:
- number
- 'null'
description: Current value of the remaining bag in USD. Solana only.
entry_market_cap:
type:
- number
- 'null'
description: Market cap in SOL when the wallet first bought, frozen. Solana only, null for older positions.
entry_market_cap_usd:
type:
- number
- 'null'
description: Entry market cap in USD, frozen at buy time. Solana only, null for older positions.
additionalProperties: true
securitySchemes:
ApiKeyQuery:
type: apiKey
in: query
name: api_key
description: Your API key as the api_key query parameter.
BearerAuth:
type: http
scheme: bearer
description: Your API key as an Authorization Bearer header.
externalDocs:
description: CabalSpy API documentation
url: https://docs.cabalspy.xyz/