Live

API overview

Auth, base URL, pagination, rate limits, error shape, and the endpoint groups that make up the CrowdIntel REST surface.

Everything the terminal reads is a REST endpoint you can call yourself. This page covers the conventions that hold across all of them — auth, pagination, limits, errors — and points at the group you need. For request and response schemas endpoint by endpoint, use the API reference.

Base URL and auth

http
https://crowdintel.xyz/api/v1

Every endpoint takes a bearer token. Mint one at Settings → API — free, no card. Keys are prefixed cint_api_ and shown once at creation.

http
Authorization: Bearer cint_api_your_key_here

Every endpoint has a minimum tier of free, so a free key reaches all 41 of them and no endpoint answers a valid free key with a 403. What a paid tier buys is throughput and depth: more calls per hour, more rows per ranking (the screener pages to 25 rows on free and 1,000 on Terminal Pro), more backtest runs, more webhook endpoints, and the full wallet dossier rather than the lite profile.

Conventions

  • JSON in, JSON out. Response keys are snake_case throughout.
  • Timestamps are ISO 8601 strings in UTC.
  • Addresses are lowercase 0x-prefixed hex.
  • Collections return { data, next_cursor } with any per-request context as siblings of data. GET /api/v1/webhooks is the one exception still on an older shape — it returns { webhooks: [...] } and does not paginate.
  • Money is USDC as a JSON number. Prices are decimals in 0..1, not cents.
  • Single-object reads — a wallet, a market, a backtest job — return the object directly, with no envelope around it.

Pagination

List endpoints are cursor-paginated. Read next_cursor from a page and pass it back as cursor to get the following one; null means there are no more pages. Cursors are opaque — do not parse or construct them.

Paging through a collection
# first page
curl -G "https://crowdintel.xyz/api/v1/trades" \
-H "Authorization: Bearer $CROWDINTEL_KEY" \
--data-urlencode "limit=100"

# next page
curl -G "https://crowdintel.xyz/api/v1/trades" \
-H "Authorization: Bearer $CROWDINTEL_KEY" \
--data-urlencode "limit=100" \
--data-urlencode "cursor=eyJ2Ijo..."

A cursor is bound to the query that issued it. Replaying one against different filters returns 400 rather than a silently different page, so keep the rest of the query string identical while paging.

Errors

Failures use one envelope. Branch on error.code — the message is for humans and may change.

403 Forbidden
{
"error": {
  "code": "forbidden",
  "message": "Free tier allows 1 webhook endpoint. Terminal ($99) allows 10 — https://crowdintel.xyz/pricing",
  "request_id": "b9f1e0c4-..."
}
}
CodeStatusMeaning
unauthorized401Missing, invalid or revoked token.
forbidden403Token is valid, but an allowance on your plan is exhausted.
rate_limited429Over the hourly or monthly call cap, or over your monthly backtest allowance.
not_found404No such wallet, market, cluster or job. Also returned for a job that belongs to someone else.
bad_request400Malformed parameter, unsortable sort key, or a cursor that does not match the query.
internal_error500Our fault. Quote request_id to support. Also used with 503 when the backtest queue is saturated.

request_id is also returned in the X-Request-Id header, and it is what we search on — include it in any bug report.

Rate limits

Two rolling windows are enforced on every call, hourly and monthly. Whichever is closer to its cap is the binding one, and it is the one the headers describe.

HeaderMeaning
X-RateLimit-LimitCap of the binding window.
X-RateLimit-RemainingCalls left in that window.
X-RateLimit-ResetUnix seconds when that window rolls.
Retry-AfterSeconds to wait. Present on 429 only.
TierPer hourPer monthBacktest runsWebhook endpoints
Free — $0505003 / month, 1 concurrent1
Terminal — $99/mo1,00050,000uncapped, 3 concurrent10
Terminal Pro — $299/mo5,000250,000uncapped, 3 concurrent10

Read X-RateLimit-Remaining instead of backing off blindly — it already accounts for whichever cap you will hit first. Pro ($29/mo) is a terminal plan: it raises your MCP allowance to 50 calls a day and keeps the free REST limits, so pick Terminal if what you need is REST volume. The full ladder is on pricing.

Endpoint groups

All 41 endpoints, grouped. Follow a link for the schemas.

GroupEndpointsWhat it serves
Screener1The ranked wallet board with the same state codec as the UI. See Screener.
Wallets7Dossier, category breakdown, entry timing, correlated wallets, funding connections, fill history, search.
Signals4Per-wallet and per-market signal reads, the edge screen, and movers.
Leaderboards3Whales, PnL, and per-category boards.
Cohorts2The cohort registry and one cohort's ranked members. See Cohorts and lists.
Markets8List and search, detail, sentiment, flow, 1-minute candles, per-market TWAP, trending, moving.
Trades2The raw fill tape and a lookup by transaction hash.
Clusters3A cluster by id, the funding graph around a funder, and the sybil screen.
Investigations2Published investigations, list and detail.
Backtests2Enqueue a signal replay and poll it. See Backtests.
Webhooks2Create, list and delete delivery endpoints. See Webhooks.
Crypto TWAP2The Chainlink settlement series and its coverage. See TWAP settlement feed.
Analyze1A composed read for one market.
Status1Nightly PnL parity against Polymarket's own profit API.
Ping1Key check — returns the tier the key resolved to.

Two worth knowing about

GET /api/v1/screener is the screener itself, not a summary of it. It shares the state codec with the UI, so a link someone pastes you and a call your bot makes encode the same screen.

GET /api/v1/crypto/twap is the Chainlink series Polymarket settles crypto up/down markets against. The upstream feed is live-stream only — there is no history endpoint anywhere, so an hour nobody recorded is gone. We started recording when the settlement rule changed on 2026-08-07.

Checking a key

GET /api/v1/ping is the cheapest way to tell a bad key from a bad query. It returns the tier the key resolved to.

GET /api/v1/ping
curl https://crowdintel.xyz/api/v1/ping \
-H "Authorization: Bearer $CROWDINTEL_KEY"

Next

  • Quickstart — key to first response in about five minutes.
  • Webhooks — get pushed to instead of polling.
Live
Beta
···v0.1.0
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