CrowdIntel
OpenAPI 3.1 · Bearer auth · snake_case JSON

CrowdIntel API

Read-only Polymarket smart-money intelligence: wallet signals, full wallet intel, leaderboards, market sentiment, on-chain trades, sybil clusters, and investigations. Mint a key in Settings → API (Terminal $99+), then call the base URL https://crowdintel.xyz/api.

Free50 / hr · 500 / moSingle wallet/market lookup + top leaderboards
Terminal · $991k / hr · 50k / moFull read API + bundled MCP server
Terminal Pro · $2995k / hr · 250k / mo+ analyze, clusters, investigations

Quickstart

Every request needs an Authorization: Bearer cint_api_… header. Responses are snake_case; errors use { error: { code, message, request_id } }; lists return { data, next_cursor }.

curl
curl https://crowdintel.xyz/api/v1/signals/wallet/0xYOUR_WALLET \
  -H "Authorization: Bearer cint_api_xxxxxxxxxxxxxxxxxxxxxxxx"
JavaScript (fetch)
const res = await fetch(
  "https://crowdintel.xyz/api/v1/signals/wallet/0xYOUR_WALLET",
  { headers: { Authorization: `Bearer ${process.env.CROWDINTEL_API_KEY}` } },
);

if (!res.ok) {
  const { error } = await res.json();
  throw new Error(`${error.code}: ${error.message} (${error.request_id})`);
}

const signal = await res.json();
console.log(signal.smart_money_score, signal.confidence);

// Cursor pagination
let cursor = null;
do {
  const url = new URL("https://crowdintel.xyz/api/v1/leaderboards/pnl");
  url.searchParams.set("limit", "100");
  if (cursor) url.searchParams.set("cursor", cursor);
  const page = await fetch(url, {
    headers: { Authorization: `Bearer ${process.env.CROWDINTEL_API_KEY}` },
  }).then((r) => r.json());
  for (const row of page.data) console.log(row.address, row.total_pnl);
  cursor = page.next_cursor;
} while (cursor);
Python (requests)
import os
import requests

API = "https://crowdintel.xyz/api"
HEADERS = {"Authorization": f"Bearer {os.environ['CROWDINTEL_API_KEY']}"}

# Single lookup
res = requests.get(f"{API}/v1/signals/wallet/0xYOUR_WALLET", headers=HEADERS)
res.raise_for_status()
signal = res.json()
print(signal["smart_money_score"], signal["confidence"])

# Cursor pagination
cursor = None
while True:
    params = {"limit": 100}
    if cursor:
        params["cursor"] = cursor
    page = requests.get(f"{API}/v1/leaderboards/pnl", headers=HEADERS, params=params).json()
    for row in page["data"]:
        print(row["address"], row["total_pnl"])
    cursor = page.get("next_cursor")
    if not cursor:
        break
CrowdIntel needs a newer browser

Your device is on iOS 15 or older. CrowdIntel uses features (color-mix, WebGL2, modern auth) that require iOS 16+ / Safari 16+.

iPhone 7 maxes out at iOS 15, so the site can't render here. Open CrowdIntel on a desktop browser or a newer phone.

crowdintel.xyz

◆ legacy browser fallback