Programmatic access to 316 endpoints covering congressional trades, portfolios, signals, financial disclosures, 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.
One REST API, every politician trade, every committee portfolio, every overlap. Below is a curated tour of 75 of the most-used endpoints across 8 categories. The full 316-endpoint catalog with live credit costs comes back from GET /credits/endpoints or GET /openapi.json.
| 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 |
Hand-picked high-value endpoints to get started
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=billing 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.
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%.