How do Congressional stock disclosure portals work?
Congressional stock disclosures are published across two separate government portals under the Stop Trading on Congressional Knowledge Act of 2012, known as the STOCK Act. The House of Representatives and the Senate maintain separate reporting websites, filing schedules, and document formats.
Under federal law, lawmakers, their spouses, and their dependent children must report transactions in individual stocks, bonds, and commodities that exceed $1,000. Filers submit a document called a Periodic Transaction Report, or PTR. They must submit this report within 30 days of becoming aware of a transaction, and in no event later than 45 days after the trade occurred. You can read more about these reporting windows in our guide on how many days Congress has to report stock trades.
The Senate runs the Electronic Financial Disclosure system at efdsearch.senate.gov. Senators submit electronic filings that render as searchable HTML tables, although paper submissions still appear as scanned image files. The House publishes disclosures through the Clerk of the House at disclosures-clerk.house.gov. House reports appear almost entirely as PDF documents, accompanied by annual index files that catalog every document submitted by a representative.
Because Congress does not run a unified database or push notification service, automated alerts require monitoring both portals independently.
How can you build an automated scraper for disclosure filings?
You can automate PTR tracking by setting up a scheduled Python script on a cloud server or through GitHub Actions to poll government portals daily. The script checks for newly submitted documents, extracts trade records, and sends notifications through a messaging webhook.
Monitoring the Senate requires interacting with efdsearch.senate.gov. The site requires users to accept a statutory terms-of-use agreement before accessing records. A scraper sends an HTTP POST request to establish a session cookie, then queries the search endpoint for recent Periodic Transaction Reports. When the script identifies a new electronic PTR, an HTML parser extracts table rows containing the senator's name, the asset description, ticker symbol, transaction type (buy, sale, or exchange), transaction date, and dollar range.
Monitoring the House requires parsing the annual financial disclosure index. The Clerk publishes an index file in XML or CSV format that records every report filed during the calendar year. A scheduled script downloads this index, filters for rows with the PTR report type, and compares filing IDs against a local database. For any new filing ID, the script downloads the PDF from the House document directory.
Official Portals -> Scheduled Ingestion -> Text/OCR Parser -> Webhook Notification
(House XML/PDF) (Python / Cron) (Regex / LLM) (Discord / Email)
(Senate eFD HTML)
Extracting data from House PDFs introduces mechanical friction. Some representatives submit digitally generated PDFs with readable text layers, while others submit scanned, handwritten documents. A robust script attempts text extraction first and routes image-only pages through optical character recognition, known as OCR. Once rows are verified, the script posts a structured JSON payload to a Discord webhook, Slack channel, or automated email service.
What are the best pre-built APIs and tracking tools?
If you do not want to maintain scrapers and OCR parsers, commercial financial APIs and research platforms ingest Congressional disclosures directly into structured feeds. These services clean the data, normalize tickers, and deliver automated notifications via webhooks or daily emails.
Developer APIs, such as those from Financial Modeling Prep, offer dedicated endpoints for Senate and House financial disclosures. You can make GET requests filtered by date, politician, or ticker symbol to receive structured JSON objects. You can set a simple serverless function, such as an AWS Lambda script, to poll the API hourly and trigger an SMS or Discord alert whenever a targeted committee member files a trade.
Dedicated research apps handle the transcription and parsing automatically. Congressional stock trades on Cluenex come from official House and Senate disclosures, including paper filings Cluenex transcribes, refreshed nightly alongside corporate insider filings. This gives investors a cleaned overview of political trading activity without the burden of resolving messy PDF tables.
Live tracking data shows the 23 across Congress sits well behind real-time market trading, with a 5% that leaves some disclosures weeks overdue. You can view overall transaction volume and member trends on the Congress trading tracker.
| Alert Method | Technical Setup | Coverage Quality | Notification Latency |
|---|---|---|---|
| Custom Portal Scraper | High (Python, OCR, cron) | Raw source data, needs error handling | 15 to 60 minutes after filing |
| Developer Data API | Moderate (REST API, webhooks) | Structured JSON, tickers cleaned | 1 to 4 hours after filing |
| Dedicated Tracking App | Low (no code, email/app alerts) | Fully parsed, includes paper filings | Near real time after nightly ingest |
Why automated PTR alerts fail to provide an immediate trading edge
Automated Congressional alerts fail as short-term trading signals because the underlying disclosures are legally allowed to lag real-world transactions by weeks. By the time a notification reaches your phone, the market has already absorbed whatever catalyst prompted the trade.
The STOCK Act gives politicians up to 30 days after learning of a transaction, and a hard maximum of 45 days after the trade date, to disclose it. If a representative purchases a semiconductor stock on October 1 and files the PTR on November 14, an automated alert triggered on November 14 gives you information that is six weeks old. Major market catalysts, such as quarterly earnings reports or legislative package votes, often occur during that waiting period.
Disclosed transaction values are reported only in broad ranges rather than exact sums. Official filing categories use wide brackets:
- $1,001 to $15,000
- $15,001 to $50,000
- $50,001 to $100,000
- $100,001 to $250,000
- $250,001 to $500,000
- $500,001 to $1,000,000
- Over $1,000,000
A transaction listed as $50,001 to $100,000 provides no exact share price or trade size. An investor cannot calculate the lawmaker's average cost basis or portfolio weighting from these filings.
Many trades are executed by third-party financial advisors, qualified blind trusts, or spouses without direct input from the member of Congress. Attempting to correlate every trade with secret political intelligence leads to frequent false alarms. While tracking committee assignments and stock buys helps identify clear conflict areas, standard portfolio rebalancing makes up the majority of disclosed volume.
In contrast, corporate executives filing SEC Form 4 insider disclosures must submit reports within two business days. Form 4 filings provide exact share counts and execution prices, making them far more timely than Congressional PTRs.
What this means for you
For an everyday investor with a regular job and a brokerage account, automated Congressional alerts should serve as research prompts rather than buy or sell orders. Treating these notifications as late curiosity reports keeps you from chasing stale moves.
When an automated alert fires, apply a structured review process:
- Check the trade date before the filing date. Calculate how many calendar days passed between the actual purchase and the submission of the PTR. If 30 to 45 days have elapsed, the market has likely already reacted to the events that prompted the transaction.
- Contextualize the dollar range. Look at the value band. A purchase between $1,001 and $15,000 by a lawmaker with a net worth in the tens of millions represents trivial portfolio noise, not an aggressive bet.
- Evaluate the underlying business fundamentals. Never purchase shares simply because a member of Congress appeared in an alert feed. Review revenue growth, operating profit margins, debt ratios, and fair value estimates.
- Cross-reference corporate insider activity. Check whether company executives and board members are buying shares alongside the politician. If corporate insiders are selling while a lawmaker discloses a purchase, treat the politician's trade with extreme caution.