Developer docs
Programmatic access to Capitol Gains' scoring data. Connect tier gets webhooks. API tier gets full REST access.
Authentication
Every request needs a bearer token with your API key.
curl https://capitol-gains-web-navy.vercel.app/api/v1/politicians \ -H "Authorization: Bearer cg_live_xxxxxxxxxxxxxxxxxxxx"
Endpoints
All scored politicians with luck scores and Interest Points. Params: limit, offset.
Individual disclosed trades. Params: limit, offset, politician, ticker.
Conviction Scores per trade, with the full feature vector. Params: limit, offset, min_score.
Backtest summary stats by Conviction Score bucket (avg return, win rate). For chart-ready equity curve data, use the web page at /proof.
{
"data": [ { "name": "...", "market_luck": 87, "capitol_luck": 92, ... } ],
"pagination": { "limit": 100, "offset": 0, "count": 100 },
"rate_limit": { "remaining_today": 947 }
}Rate limit: 1000 requests/day per key. Every response includes your remaining quota.
Webhooks (Connect tier)
Set a webhook URL on any alert at /alerts and we'll POST matching filings to it once a day, alongside (or instead of) the email digest. We emit data — what you connect it to is your business. We never integrate directly with any brokerage.
Using Zapier or Make: create a “Catch Hook” trigger (Zapier) or a webhook module (Make), copy the URL it gives you, and paste it as your webhook URL in the alert config. No code needed — from there you can route the event anywhere either platform supports.
{
"alert_label": "High signal tech",
"matched_at": "2026-08-17T13:00:00Z",
"filings": [
{
"politician_name": "Jane Example",
"ticker": "NVDA",
"transaction_type": "purchase",
"transaction_date": "2026-08-15",
"conviction_score": 12.4,
"tier": "Convicted"
}
]
}If you set a webhook secret, we sign the payload with it as an X-CG-Signature header (HMAC-SHA256 of the raw body) so you can verify requests actually came from us.