| name | capitoltrades-cli |
| description | Use cli-web-capitoltrades to query US congressional stock trades, politicians, issuers, and insight articles from capitoltrades.com. Invoke this skill whenever the user asks about congressional trading, senator/representative stock trades, STOCK Act filings, insider trades by politicians, specific tickers (e.g. "what did Pelosi buy"), or US Capitol Trades data. Always prefer cli-web-capitoltrades over manually fetching the website — no auth is required and the CLI returns structured JSON. |
cli-web-capitoltrades
Browse US congressional stock trades tracked on capitoltrades.com (by 2iQ Research).
Installed at: cli-web-capitoltrades.
The site is a fully public data aggregator covering STOCK Act disclosures: ~35,000
trades, ~200 politicians, ~3,000 issuers. No authentication required.
Quick Start
cli-web-capitoltrades --json trades list --page-size 20
cli-web-capitoltrades --json trades list --politician P000197
cli-web-capitoltrades --json trades by-ticker NVDA --page-size 20
cli-web-capitoltrades --json trades list --size 1M-5M
cli-web-capitoltrades --json politicians top --by volume --page-size 10
cli-web-capitoltrades --json trades stats
cli-web-capitoltrades --json issuers search nvidia
Always pass --json when parsing output programmatically.
Commands
trades list
List trades, paginated and filterable.
cli-web-capitoltrades trades list [options] --json
Key options:
--page N / --page-size N — pagination (default 1, 12)
--politician <bioguide_id> — e.g. P000197 (Pelosi)
--issuer <issuer_id> — e.g. 429725 (Amgen)
--party republican|democrat|independent
--chamber house|senate
--tx-type buy|sell|exchange
--sector <name> (e.g. health-care, information-technology)
--size <bracket> — one of <1K, 1K-15K, 15K-50K, 50K-100K, 100K-250K, 250K-500K, 500K-1M, 1M-5M, 5M-25M, 25M-50M
--sort traded|pubDate|filedAfter|tradeSize — sort column
--sort-direction asc|desc (default desc)
Output fields: trade_id, politician_id, politician_name, politician_party,
politician_chamber, politician_state, issuer_id, issuer_name, ticker,
tx_type, size, price, traded, published, filed_after_days, owner.
trades get <trade_id>
Get full detail for a single trade (adds price, shares, filing_url, comment, reporting_gap).
trades by-ticker <SYM>
Convenience: resolve a ticker (e.g. NVDA, AMGN) via BFF search, then list trades for
that issuer. Accepts --party, --tx-type, --page, --page-size. Returned meta.resolved_issuer
includes name, ticker, sector, issuer_id.
trades stats
Overview stats from the /trades landing page. Returns trades, filings, volume,
politicians, issuers.
politicians list
List politicians with filters.
Key options: --party republican|democrat|independent, --chamber house|senate, --state <ST>.
Output fields: politician_id (bioguide), name, party, state, trades_count,
issuers_count, volume, last_traded.
politicians top
Leaderboard of politicians ranked by recent activity.
Key options: --by trades|volume (default trades), --page-size N, --party, --chamber.
politicians get <bioguide_id>
Politician detail + recent trades table. Example: cli-web-capitoltrades politicians get Y000067.
issuers list
List issuers (companies, funds, treasuries). Output: issuer_id, name, ticker.
issuers get <issuer_id>
Issuer detail + recent trades. Example: cli-web-capitoltrades issuers get 435544 (US Treasury Bills).
issuers search <query>
Richest endpoint. Uses the BFF JSON API — returns sector, market cap, 1-year price
history (performance.eodPrices), trailing returns, and stats.countPoliticians /
countTrades / volume / dateFirstTraded. Use --full to include the full eodPrices array.
articles list / articles get <slug>
List or view insight articles. Slug format: kebab-title-YYYY-MM-DD.
buzz list / buzz get <slug>
Third-party news snippets curated by Capitol Trades (Twitter, external articles about
companies and politicians). Same slug format as articles.
press list / press get <slug>
Press coverage about Capitol Trades data and congressional trading news (articles
published by external publications like CNN, Forbes, Politico).
Agent Patterns
cli-web-capitoltrades --json issuers search nvidia | \
python -c "import json, sys; d=json.load(sys.stdin); print(d['data'][0]['_issuerId'])"
cli-web-capitoltrades --json trades list --issuer 433382 --party republican --tx-type buy --page-size 50
cli-web-capitoltrades --json politicians get P000197 | \
python -c "import json, sys, collections; d=json.load(sys.stdin); \
trades=d['data']['recent_trades']; \
print(collections.Counter(t['ticker'] for t in trades).most_common(5))"
cli-web-capitoltrades --json trades list --page-size 50 | \
python -c "import json, sys; d=json.load(sys.stdin); \
for t in d['data'][:10]: print(f\"{t['traded']} {t['tx_type']:<5} {t['politician_name']:<25} {t['ticker']:<10} {t['size']}\")"
Data Model Notes
- Bioguide IDs (
politician_id): 7 chars, [A-Z]\d{6}, the same ID used by bioguide.congress.gov
- Issuer IDs: numeric strings assigned by 2iQ Research
- Trade IDs: 11-digit numeric strings
- Trade sizes are ranges (
1K–15K, 15K–50K, 50K–100K, 100K–250K, 250K–500K, 500K–1M, 1M–5M, 5M–25M, 25M–50M, >50M) — the STOCK Act only requires range disclosure, not exact amounts
owner = Self, Spouse, Child, Joint, Undisclosed, Dependent, etc.
filed_after_days = days between trade and disclosure (45 days = late, per STOCK Act)
Notes
- Auth: None — fully public site
- Rate limits: Site is served via AWS CloudFront; the CLI uses
curl_cffi with Chrome 136 TLS
fingerprinting, which is what makes the BFF accessible. No observed rate limits in normal use.
- Freshness: Data is typically <24h behind actual filings. Politician disclosures may lag up
to 45 days (legal requirement) after the trade date.
- Exit codes: 0 success, 1 user error (not found / invalid arg), 2 system error (network / 5xx).
- BFF quirks: Only
/issuers?search=... is exposed publicly. Other endpoints on bff.capitoltrades.com return 503.
Known limitations
- No full politician search in the BFF — use
politicians list with filters, or browse the
paginated list.
- No trades search by ticker directly — search the issuer by ticker first, take its
_issuerId,
then filter trades by --issuer <id>.
- Reading large result sets (
--page-size 100) may take a few seconds per page (HTML scraping).