Count
curl --request GET \
--url https://api.cabalspy.xyz/v1/transactions/countimport requests
url = "https://api.cabalspy.xyz/v1/transactions/count"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.cabalspy.xyz/v1/transactions/count', 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/count",
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/count"
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/count")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cabalspy.xyz/v1/transactions/count")
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": "count",
"count": 128,
"time_window_seconds": 3600
},
"meta": {
"request_id": "req_5162c7cf7f87",
"cached": false,
"cache_age_seconds": 0,
"version": "1.0.0",
"timestamp": "2026-07-06T11:01:57Z"
}
}
Transactions
Count
Count how many transactions tracked wallets made within a time window, up to 24 hours back, optionally filtered to a single token.
GET
/
v1
/
transactions
/
count
Count
curl --request GET \
--url https://api.cabalspy.xyz/v1/transactions/countimport requests
url = "https://api.cabalspy.xyz/v1/transactions/count"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.cabalspy.xyz/v1/transactions/count', 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/count",
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/count"
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/count")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cabalspy.xyz/v1/transactions/count")
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": "count",
"count": 128,
"time_window_seconds": 3600
},
"meta": {
"request_id": "req_5162c7cf7f87",
"cached": false,
"cache_age_seconds": 0,
"version": "1.0.0",
"timestamp": "2026-07-06T11:01:57Z"
}
}
A lightweight counter. Returns how many transactions tracked wallets made within a time window, up to 24 hours back. Optionally filter to a single token with mint.
Use it for activity indicators and sparklines, for example how many KOL trades happened in the last hour, without pulling the full transaction list.
The window is built from seconds, minutes and hours, summed, up to a maximum of 24 hours. Without a window you get the full available window. This endpoint returns only the count, not the transactions, so it is fast and cheap.
Query Parameters
string
required
Chain. One of solana, bnb, base, eth.
string
required
Wallet category kol, smart or whale.
integer
Seconds to look back. Combined with minutes and hours.
integer
Minutes to look back.
integer
Hours to look back. Maximum total window is 24 hours.
string
Optional token mint to count only that token transactions.
string
required
Your API key. Alternatively pass it as an Authorization Bearer header.
Usage Example
curl "https://api.cabalspy.xyz/v1/transactions/count?blockchain=solana&type=kol&hours=1&api_key=YOUR_KEY"
import requests
params = {"blockchain": "solana", "type": "kol", "hours": 1, "api_key": "YOUR_KEY"}
r = requests.get("https://api.cabalspy.xyz/v1/transactions/count", params=params)
d = r.json()["data"]
print("count", d["count"], "over", d["time_window_seconds"], "seconds")
const p = new URLSearchParams({
blockchain: "solana", type: "kol", hours: "1", api_key: "YOUR_KEY",
});
const res = await fetch(`https://api.cabalspy.xyz/v1/transactions/count?${p}`);
const { data } = await res.json();
console.log("count", data.count);
Response
boolean
True on success.
object
Show data
Show data
string
Requested chain.
string
Requested wallet type.
string
count.
integer
Number of transactions in the window.
integer
The effective window in seconds, after capping.
string
Present only when a mint filter was passed.
array
Present only if the requested window exceeded the 24 hour maximum and was capped.
{
"success": true,
"data": {
"blockchain": "solana",
"type": "kol",
"mode": "count",
"count": 128,
"time_window_seconds": 3600
},
"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. |

