Programmatic access to 90+ endpoints covering congressional trades, portfolios, signals, wealth data, and more.
Every request needs an API key, passed as a DC-API-Key header. Base URL is https://api.disclosedcapitol.com.
curl https://api.disclosedcapitol.com/trades?limit=5 \ -H "DC-API-Key: dc_your_key_here"
Keep keys server-side. If a key is exposed, rotate it from Account → API Keys.
Pay per request, billed in credits. Credit packs start at $5 for 5,000 credits. Pro subscribers ($14.99/mo) get 15,000 credits/month included.
Chad AI (POST /chad/chat) is billed separately at 30–90 credits per query based on complexity. Exact per-endpoint cost is returned by GET /credits/endpoints and shown on your account after every call.
Two independent guards: a per-minute burst limit on request rate, and your credit balance as a hard ceiling on volume. Both fail closed with a clear retry signal.
| Starter ($5+/30d) | 60 req/min |
| Plus ($25+/30d, Pro/Dev) | 240 req/min |
| Power ($100+/30d) | 600 req/min |
On 429: response includes a Retry-After: 60 header. Back off, then retry.
Each request deducts credits. When balance hits zero, the API returns 402 Payment Required until you top up.
Check remaining balance any time: GET /credits/balance
Tip: track the balance returned in /credits/balance and alert your own system below 20%.
Every error returns a JSON body of the form { "detail": "..." } with an appropriate HTTP status. Build retry logic against these codes — most are recoverable without manual intervention.
| Code | What it means · How to recover |
|---|---|
| 400 | Bad Request. Malformed parameters or missing required fields. Check parameter names + types against the endpoint spec; do not retry as-is. |
| 401 | Unauthorized. Missing or invalid DC-API-Key header. Verify the key is active in Account → API Keys. If recently rotated, update your client. |
| 402 | Payment Required. Credit balance is zero — request would deduct below zero. Top up at /account?tab=credits or wait for the next monthly Pro allowance. |
| 403 | Forbidden. Your tier does not include this endpoint. Upgrade or use an equivalent lower-tier endpoint listed below. |
| 404 | Not Found. Endpoint path or resource ID does not exist. Check the politician_id / ticker / committee_code against /search before retrying. |
| 422 | Unprocessable Entity. Parameter values failed validation (e.g. malformed date, out-of-range limit). Inspect the response body for the field name. Fix and retry. |
| 429 | Too Many Requests. Per-minute rate limit exceeded for your priority tier. Back off for the seconds in the Retry-After header (default 60), then retry. Increase tier by raising 30-day spend. |
| 500 | Internal Server Error. Unexpected server failure — we log + alert on these. Retry with exponential backoff. If persistent, email support@disclosedcapitol.com. |
| 502 | Bad Gateway. Upstream data source (e.g. SEC, House clerk) is temporarily unreachable. Retry after 30–60s. The data layer falls back to cached values when possible. |
Tip: never deduct credits on the client. Always read the actual balance from GET /credits/balance after a request — it reflects retries, partial deductions, and refunds.
Real-shaped JSON for four flagship endpoints. Click any row in the catalog below to see the request and response for that endpoint inline.
/tradesRecent congressional trades with enrichment (price, return, alpha)
GET https://api.disclosedcapitol.com/trades?limit=2
[
{
"id": 249075,
"politician_id": 7,
"politician_name": "Ed Case",
"party": "D",
"state": "HI",
"chamber": "House",
"ticker": "AAPL",
"trade_type": "Buy",
"asset_type": "Stock",
"amount_range": "$1,001 - $15,000",
"amount_low": 1001.0,
"amount_high": 15000.0,
"transaction_date": "2026-05-14",
"disclosure_date": "2026-05-31",
"days_to_disclose": 17,
"sector": "Technology",
"industry": "Consumer Electronics",
"price_on_trade_date": 298.21,
"price_on_disclosure": 312.06,
"gain_7d": 2.27,
"current_return": null,
"days_held": 18,
"source": "house.gov"
},
{
"id": 249066,
"politician_id": 178,
"politician_name": "Marjorie Taylor Greene",
"party": "R",
"state": "GA",
"chamber": "House",
"ticker": "PLTR",
"trade_type": "Buy",
"asset_type": "Stock",
"amount_range": "$1,001 - $15,000",
"transaction_date": "2026-05-12",
"disclosure_date": "2026-05-30",
"days_to_disclose": 18,
"price_on_trade_date": 28.47,
"price_on_disclosure": 30.12,
"gain_7d": 5.79
}
]/politicians/{id}Politician stats: CAGR, Sharpe, alpha, conflict score, holdings
GET https://api.disclosedcapitol.com/politicians/411
{
"politician_id": 411,
"name": "Ann Wagner",
"party": "R",
"state": "MO",
"chamber": "House",
"bioguide_id": "W000812",
"trade_count": 177,
"enriched_trades": 62,
"win_rate": 54.8,
"avg_alpha_30d": -0.12,
"sharpe_ratio": 0.168,
"sortino_ratio": 0.629,
"max_drawdown": -7.8,
"beta_to_sp500": 0.109,
"total_return_pct": 7.78,
"annualized_return_pct": 0.77,
"annualized_alpha_pct": -12.57,
"realized_pnl": 23492.99,
"unrealized_pnl": 969767.16,
"total_invested": 6708527.50,
"estimated_value": 7326787.16,
"position_count": 9,
"conflict_score": 3.9,
"predictive_edge_score": null,
"avg_disclosure_lag_return": 0.213,
"avg_trade_size": 167704.92
}/clusters/recentCoordinated trading clusters — 3+ politicians, same ticker, same week
GET https://api.disclosedcapitol.com/clusters/recent?limit=2
{
"clusters": [
{
"ticker": "INTC",
"window_start": "2026-04-02",
"window_end": "2026-04-09",
"politician_count": 3,
"trade_count": 7,
"dominant_side": "Mixed",
"sector": "Technology",
"politicians": [
"Cliff Bentz",
"Michael McCaul",
"Ro Khanna"
],
"trade_ids": [247916, 248108, 248547, 248613]
},
{
"ticker": "GE",
"window_start": "2026-03-24",
"window_end": "2026-03-31",
"politician_count": 3,
"trade_count": 3,
"dominant_side": "Buy",
"sector": "Industrials",
"politicians": [
"Jared Moskowitz",
"Maria Elvira Salazar",
"Michael McCaul"
],
"trade_ids": [246948, 247120, 247455]
}
]
}/portfolio/{id}/positionsLive portfolio: open positions with unrealized P&L and weight
GET https://api.disclosedcapitol.com/portfolio/411/positions
{
"politician_id": 411,
"name": "Ann Wagner",
"as_of": "2026-06-01",
"positions": [
{
"ticker": "SPY",
"asset_type": "ETF",
"shares_estimate": 12500,
"avg_cost": 425.13,
"current_price": 588.40,
"market_value": 7355000.00,
"unrealized_pnl": 2040875.00,
"unrealized_pnl_pct": 38.4,
"weight_pct": 78.6,
"first_bought": "2024-08-12",
"last_traded": "2026-04-22"
},
{
"ticker": "MSFT",
"asset_type": "Stock",
"shares_estimate": 220,
"avg_cost": 312.07,
"current_price": 459.85,
"market_value": 101167.00,
"unrealized_pnl": 32511.40,
"unrealized_pnl_pct": 47.4,
"weight_pct": 1.4
}
]
}Showing curated highlights from our 90+ endpoints. For the complete list with exact per-endpoint credit costs, call GET /credits/endpoints or use the Copy for AI button to share with your AI assistant.
| GET | /trades | |
| GET | /trades/bulk-latest | |
| GET | /politicians | |
| GET | /politicians/{id} | |
| GET | /politicians/{id}/trades | |
| GET | /tickers/{ticker}/trades | |
| GET | /tickers/top | |
| GET | /feed/live | |
| GET | /feed/recent | |
| GET | /search | |
| GET | /stats/summary |