Latest
curl --request GET \
--url https://api.cabalspy.xyz/v1/transactions/latestimport requests
url = "https://api.cabalspy.xyz/v1/transactions/latest"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.cabalspy.xyz/v1/transactions/latest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cabalspy.xyz/v1/transactions/latest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.cabalspy.xyz/v1/transactions/latest"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.cabalspy.xyz/v1/transactions/latest")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cabalspy.xyz/v1/transactions/latest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"blockchain": "solana",
"type": "kol",
"mode": "latest",
"currency": "SOL",
"count": 1,
"transactions": [
{
"tx_signature": "5xr8abc...",
"mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
"token_name": "invisibull",
"token_supply": 1000000000,
"token_decimals": 6,
"transaction_type": "buy",
"value": 1.66,
"value_usd": 137.44,
"currency": "SOL",
"token_amount": 22113972.03,
"price_per_token": 7.5e-8,
"price_per_token_usd": 6.2e-6,
"created_at": "2026-07-04 16:25:34",
"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"
}
}
Transactions
Latest
The most recent transactions of tracked wallets on a chain and wallet type, newest first, each with trader profile and position after the trade.
GET
/
v1
/
transactions
/
latest
Latest
curl --request GET \
--url https://api.cabalspy.xyz/v1/transactions/latestimport requests
url = "https://api.cabalspy.xyz/v1/transactions/latest"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.cabalspy.xyz/v1/transactions/latest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cabalspy.xyz/v1/transactions/latest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.cabalspy.xyz/v1/transactions/latest"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.cabalspy.xyz/v1/transactions/latest")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cabalspy.xyz/v1/transactions/latest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"blockchain": "solana",
"type": "kol",
"mode": "latest",
"currency": "SOL",
"count": 1,
"transactions": [
{
"tx_signature": "5xr8abc...",
"mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
"token_name": "invisibull",
"token_supply": 1000000000,
"token_decimals": 6,
"transaction_type": "buy",
"value": 1.66,
"value_usd": 137.44,
"currency": "SOL",
"token_amount": 22113972.03,
"price_per_token": 7.5e-8,
"price_per_token_usd": 6.2e-6,
"created_at": "2026-07-04 16:25:34",
"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"
}
}
The live trade feed. Returns the most recent transactions of tracked wallets for a chain and wallet type, newest first. Each entry carries the token, the trade value, the trader profile and the holder position right after the trade.
Use it to power a global live tape across all tracked wallets, or narrow it to a single token with the mint filter to get that token feed.
Optionally filter by a single token with mint. When you pass mint, the response also includes a token block. This is a live event feed, so entries do not carry unrealized PnL, but each includes holdings_after.
Query Parameters
string
required
Chain. One of solana, bnb, base, eth.
string
required
Wallet category kol, smart or whale. Availability per chain. Solana has kol, smart, whale. BNB and Base have kol, smart. ETH has kol.
string
Optional token mint to filter the feed to a single token. Adds a token block.
integer
Maximum number of transactions to return.
string
required
Your API key. Alternatively pass it as an Authorization Bearer header.
Usage Example
curl "https://api.cabalspy.xyz/v1/transactions/latest?blockchain=solana&type=kol&limit=50&api_key=YOUR_KEY"
import requests
params = {"blockchain": "solana", "type": "kol", "limit": 50, "api_key": "YOUR_KEY"}
r = requests.get("https://api.cabalspy.xyz/v1/transactions/latest", params=params)
for tx in r.json()["data"]["transactions"]:
print(tx["created_at"], tx["transaction_type"], tx["profile"]["name"], tx["token_name"], tx["value"])
const p = new URLSearchParams({
blockchain: "solana", type: "kol", limit: "50", api_key: "YOUR_KEY",
});
const res = await fetch(`https://api.cabalspy.xyz/v1/transactions/latest?${p}`);
const { data } = await res.json();
data.transactions.forEach(tx => console.log(tx.created_at, tx.transaction_type, tx.value));
Response
boolean
True on success.
object
Show data
Show data
string
Requested chain.
string
Requested wallet type.
string
latest.
string
Native currency.
integer
Number of transactions returned.
object
Only present when mint is passed. Token block with mint, token_name, blockchain, currency, token_supply, token_decimals.
array
Show transaction, newest first
Show transaction, newest first
string
Transaction signature.
string
Token mint.
string
Token name or symbol.
number
Total supply.
integer
Token decimals.
string
buy or sell.
number
Trade value (native).
number
Trade value in USD.
string
Native currency.
number
Number of tokens in the trade.
number
Price per token (native).
number
Price per token in USD.
string
Timestamp of the trade.
object
Wallet profile of the trader.
object
Holder position after this trade (token_amount, token_amount_peak, supply_pct, supply_pct_peak, bag_pct, still_holding).
object
Standard pagination object (limit, total, has_more, next_cursor).
{
"success": true,
"data": {
"blockchain": "solana",
"type": "kol",
"mode": "latest",
"currency": "SOL",
"count": 1,
"transactions": [
{
"tx_signature": "5xr8abc...",
"mint": "3Pkrq4MmLvDXyn1fa3sz5MekKRkZkc1iLDcz5AzWpump",
"token_name": "invisibull",
"token_supply": 1000000000,
"token_decimals": 6,
"transaction_type": "buy",
"value": 1.66,
"value_usd": 137.44,
"currency": "SOL",
"token_amount": 22113972.03,
"price_per_token": 7.5e-8,
"price_per_token_usd": 6.2e-6,
"created_at": "2026-07-04 16:25:34",
"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"
}
}
Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_parameter | blockchain or type missing or invalid. |
| 401 | unauthorized | API key missing. |
| 403 | forbidden | API key invalid or credits exhausted. |
| 429 | rate_limited | Rate limit exceeded. |
⌘I

