Tracking Congressional Stock Trades and Insider Form 4 Filings in One Pipeline
Key Takeaways
What's the legal basis for this data existing at all? Two disclosure laws. The STOCK Act (2012) requires members of Congress and senior staff to report trades over $1,000 within 45 days via Periodic Transaction Reports. Section 16 of the Securities Exchange Act requires corporate insiders (officers, directors, 10%+ owners) to file a Form 4 within two business days of a trade. Both are public filings, not leaked data.
Is congressional trading data actually timely? Not real-time — the 45-day disclosure window means you're seeing a trade that already happened over a month ago. It's directional research, not a signal you can act on before the market has already reacted to the underlying news.
How do insider Form 4 filings and superinvestor 13F filings differ? Form 4 is filed within two business days of a trade and covers company insiders. 13F filings (which is what superinvestor-tracking data is built from) are filed quarterly by institutional managers with $100M+ AUM and can lag a real trade by up to 45 days after quarter-end. Insider data is fresher; superinvestor data covers bigger, slower-moving positions.
Why This Data Is Public, Not Leaked
Every product in the "who's buying what" category — Capitol Trades, Unusual Whales' congress tracker, Quiver Quantitative — is built on the same two disclosure requirements. Nobody is leaking anything. Members of Congress must file a Periodic Transaction Report under the STOCK Act; corporate insiders must file Form 4 with the SEC. The only differentiator between these products is how cleanly they parse and present filings that are already sitting in public databases.
The Three Feeds Worth Combining
Congressional trades. The Congress Stock Trades & Financial Disclosures actor returns each disclosed trade with the member's name, ticker, transaction type, and — notably — only an amount range, not an exact dollar figure, because that's all the STOCK Act requires disclosed:
{
"First_Name": "Nancy", "Last_Name": "Pelosi", "Ticker": "PANW",
"Transaction_Type": "P", "Date": "2024-02-21",
"Amount_Range": "$100,001 - $250,000",
"Details": "Purchased 20 call options, strike $200, exp 1/17/25.",
"State_District": "CA11"
}
Corporate insider trades. The SEC Insider Scraper pulls Form 4 data with exact share counts and prices, which is a meaningfully more precise dataset than the congressional feed:
{
"filingDate": "15 Apr 2026 17:28", "symbol": "CAG",
"reportingName": "MULLIGAN JOHN J", "relationship": "Director",
"transactionDate": "14 Apr 2026", "transactionType": "Purchase",
"shares": 17500, "price": 14.3087, "amount": 250402, "directIndirect": "D"
}
Institutional superinvestors. The Superinvestor Portfolio Scraper tracks 82 well-known managers' quarterly 13F positions — slower-moving, but useful as a "smart money conviction" overlay on top of the faster insider and congressional feeds:
{
"superinvestorName": "Michael Burry - Scion Asset Management",
"symbol": "MOH", "percentOfPortfolio": 43.49, "recentActivity": "Buy",
"shares": 125000, "reportedPrice": 191.36, "currentPrice": 147.57,
"changeFromReportedPrice": -22.88
}
Building a Combined "Who's Buying" View
The three feeds don't share a schema, but they do share the one field that makes them worth combining: a ticker symbol and a buy/sell direction. Normalize each into a common shape and you get a single feed of every disclosed buy or sell signal for a given stock, ranked by disclosure freshness:
function normalizeSignal(record, source) {
if (source === "congress") {
return {
ticker: record.Ticker,
actor: `${record.First_Name} ${record.Last_Name} (Congress)`,
direction: record.Transaction_Type === "P" ? "buy" : "sell",
date: record.Date,
confidence: "range-only", // amount is a bracket, not exact
};
}
if (source === "insider") {
return {
ticker: record.symbol,
actor: `${record.reportingName} (${record.relationship})`,
direction: record.transactionType.toLowerCase(),
date: record.transactionDate,
confidence: "exact",
shares: record.shares,
amount: record.amount,
};
}
if (source === "superinvestor") {
return {
ticker: record.symbol,
actor: `${record.superinvestorName} (13F)`,
direction: record.recentActivity.toLowerCase(),
date: null, // quarterly, no exact trade date
confidence: "quarterly-lag",
pctOfPortfolio: record.percentOfPortfolio,
};
}
}
Filter this combined feed to a watchlist of tickers and you have, in one table, every congressional trade, insider filing, and superinvestor position change disclosed for that stock — sortable by which signal is fastest (insider, ~2 business days) versus slowest (superinvestor, up to 45 days post-quarter).
A Note on What This Data Can and Can't Tell You
None of these three feeds tell you why someone traded — insiders sell for tax planning, diversification, or a kid's tuition as often as they sell on negative conviction. Routine, disclosed insider selling is not what regulators pursue as illegal insider trading — the filings you're pulling here are the legal, mandatory disclosures, not enforcement actions. Because of that noise, clusters of buying by multiple insiders around the same date tend to be a more meaningful pattern than any single filing on its own. Build your combined feed to highlight clusters — three or more distinct filers on the same ticker within a short window — rather than treating one filing as a signal.
FAQ
Do you need an SEC EDGAR account or API key to access Form 4 data? No — Form 4 filings are public on SEC EDGAR with no login required. The scraper just saves you the parsing work across thousands of filings instead of one at a time.
Why does the congressional feed only show amount ranges instead of exact dollar amounts? Because that's what the STOCK Act itself requires — members disclose a bracket (e.g. "$100,001–$250,000"), not an exact figure. This is a limitation of the underlying law, not the data pipeline.
If you're building the prediction-market side of a similar signal-tracking dashboard, see Sourcing the Data Layer for a Polymarket / Kalshi Arbitrage Dashboard next, or browse the rest of the finance and news actors on ParseBird.