LIVE · data.insiders.bot

insiders Data API

Live prediction-market data over REST + WebSocket. Query markets, trades, OHLCV, holders and wallet analytics — or tap the global trade firehose in real time. Backed by insiders' 2.58 billion-row on-chain dataset.

2.58B
Trades indexed
1.92M
Markets
REST + WS
Transports
<5s
Data lag

Quickstart

Three steps to live data

No SDK required. Mint a free key, call any endpoint over HTTPS, then open the WebSocket for the real-time firehose. The API is same-origin at /v1/*; the socket lives at the endpoint below.

wss://data.insiders.bot/stream
1

Get a key

Self-serve a free key with your email. Free tier is 60 rpm / 10k per day.

terminal
curl -s -X POST https://data.insiders.bot/v1/keys \
  -H 'content-type: application/json' \
  -d '{"email":"you@co.com","label":"my-app"}'
2

Call the REST API

Send your key as a Bearer token. Every list response carries count + meta.

terminal
curl -s https://data.insiders.bot/v1/markets?sort=volume_24h \
  -H 'Authorization: Bearer ik_live_...'
3

Connect the socket

Open /stream, subscribe to channels, receive frames as they land.

javascript
const ws = new WebSocket(
  'wss://data.insiders.bot/stream?key=ik_live_...');
ws.onopen = () => ws.send(JSON.stringify(
  {type:'subscribe', channels:['trades','markets:new']}));
ws.onmessage = e => console.log(JSON.parse(e.data));

Authentication

API keys & tiers

Every /v1/* data endpoint requires a valid key (only POST /v1/keys and /health are open). Keys look like ik_live_<40 hex>. Send them as either header:

Header · Bearer

http
Authorization: Bearer ik_live_...

Header · X-API-Key

http
X-API-Key: ik_live_...
Free tier
60
req / min
10,000
req / day
  • Self-serve — mint instantly with your email.
  • Full REST + WebSocket access.
  • Default tier for every new key.
Partner tier
300
req / min
200,000
req / day
  • Higher throughput for production integrations.
  • Provisioned by the insiders team.
  • Contact us to upgrade an existing key.

Rate-limit headers

Returned on every response so you can back off gracefully.

X-RateLimit-LimitYour tier's per-minute cap
X-RateLimit-RemainingRequests left in the window
X-RateLimit-ResetUnix seconds until the window resets
Retry-AfterSeconds to wait (sent on 429)

Error responses

All errors are clean JSON: {"error":"..."}.

401missing_api_key · invalid_api_key · revoked_api_key
429Rate limit hit, or daily_quota_exceeded. Honour Retry-After.
503server_busy — ClickHouse queue full. Retry with backoff.
400Bad/invalid params. Every input is validated.

Get a key

Mint a free API key

Self-serve issuance is IP-rate-limited (5 keys / hour). Your key is shown once — store it somewhere safe. It's saved to this browser so the playground and socket demo below can reuse it.

Store this now — it won't be shown again. We only keep a hash. If you lose it, mint a new one.
ik_live_…
Tier
Per minute
Per day

REST reference

Endpoints

Base URL https://data.insiders.bot. All responses are JSON with a meta:{cached, age_sec, took_ms} envelope; amounts are USD decimals, timestamps epoch ms. Expand any endpoint to see params and run it live against the API.

Not set — the playground & socket demo need a key.

WebSocket

Real-time stream

Connect to the socket endpoint below with your key (?key= query or a first {"type":"auth"} message within 5s). On connect you receive a welcome frame with your limits and the channel list. Max 50 subscriptions per connection.

wss://data.insiders.bot/stream

Channels · subscribe

  • tradesglobal firehose
  • trades:asset:<id>one asset
  • trades:market:<cid>both sides of a market
  • trades:user:<wallet>one wallet
  • markets:newnewly created markets

Frames · wire protocol

client → server
{"type":"subscribe","channels":["trades","markets:new"]}
{"type":"unsubscribe","channels":["trades"]}
{"type":"auth","key":"ik_live_..."}
{"type":"ping"}
server → client
welcome · ack · pong · error
{"type":"trade","channel":"trades","trade":{...}}
{"type":"market_new","market":{...}}
Disconnected
tap a chip to toggle before connecting
Not connected. Set a key above, then hit Connect to stream live trades.
Frames0 Trades0 New markets0

Rate limits & fair use

Play nice with the firehose

The API runs a single process with exact global counters and a ClickHouse concurrency backstop — designed so partner traffic can never endanger insiders.bot itself.

Per-minute + daily

Two windows per key: a fixed per-minute cap and a UTC-day quota. Watch the X-RateLimit-* headers and back off on 429.

ClickHouse backstop

A global semaphore caps concurrent queries. A burst past the queue returns 503 server_busy — retry with exponential backoff.

Cache & paginate

Responses are cached (10s markets, 1–3s trades/holders). Use keyset next_cursor pagination instead of hammering large offsets.