Congress Trading Tracker: Monitor New Disclosures Over Time
Turn US Congressional financial disclosures into a tracker. Define what to watch (one member, one ticker, or all recent activity), poll on a schedule, keep only rows you have not seen, and deliver the new filings to an alert, a table, or a dashboard. Every row is a parsed House or Senate Periodic Transaction Report (PTR) line with the member, chamber, asset, transaction type, amount bracket, and filing IDs.
When to use this skill
- The user wants a congress trading tracker or asks to track congressional stock trades over time.
- They want to monitor one member's disclosures, or every member's activity in one ticker.
- They want alerts, a digest, or a database of newly filed trades.
- A compliance or ESG team wants to monitor disclosed congressional trades against holdings they oversee, as an auditable history.
- A journalist or researcher wants filings around a legislative event collected as they publish.
Not for: one-off historical pulls (use the congress-stock-trades-api skill), real-time signals (filings trail trades by 30 to 45 days by law), or investment recommendations (this is public-records monitoring, not advice).
What each poll returns (one row per transaction)
id (stable row identifier, the dedupe key), First_Name, Last_Name, House (House or Senate), State_District, Ticker (blank when the asset is not publicly listed), Asset, Asset_Type_Code, Transaction_Type (P, S, S (partial), E), Amount_Range (the filed bracket), Date (transaction date), Notification_Date (the freshness signal), Year, Details (when present), Capital_Gains_Over_200 (often blank), Filing_ID, DocID, PDF_Quality, created_at, plus a search_metadata object echoing the query for audit trails.
Prerequisites
The Actor
Run it with the Apify CLI
One tracker poll, watching a single member:
apify actors call "johnvc/us-congress-financial-disclosures-and-stock-trading-data" -i '{"Last_Name":"Pelosi","Max_Results":25}' \
--json \
--user-agent apify-awesome-skills/apify-congress-trading-tracker \
2>/dev/null
A ticker watch across all of Congress:
apify actors call "johnvc/us-congress-financial-disclosures-and-stock-trading-data" -i '{"Stock_Symbol":"NVDA","Max_Results":50}' \
--json \
--user-agent apify-awesome-skills/apify-congress-trading-tracker \
2>/dev/null
Read a finished run's rows later, for example from a scheduled run:
apify datasets get-items <DATASET_ID> --format json --user-agent apify-awesome-skills/apify-congress-trading-tracker 2>/dev/null
Every call carries the three flags this repo expects: --json (or --format json), --user-agent apify-awesome-skills/apify-congress-trading-tracker, and 2>/dev/null.
Run it from Claude or another AI agent (MCP)
The Actor is MCP-ready. Add the hosted server URL:
https://mcp.apify.com/?tools=actors,docs,johnvc/us-congress-financial-disclosures-and-stock-trading-data
Then ask, for example: "Check for new Congress trades in NVDA since last week and summarize who filed what." MCP setup docs: https://docs.apify.com/platform/integrations/mcp
Workflow
- Define the watch. One Actor input per tracker: a member (
First_Name plus Last_Name), a ticker (Stock_Symbol), or nothing for all recent activity across both chambers.
- Bound each poll. Keep
Max_Results at 25 to 50 per poll; a watch rarely produces more new filings than that between polls, and it is the hard cost cap.
- Pick the cadence. Daily fits the filing pace; PTRs are due 30 to 45 days after the trade, so hourly polling buys nothing. Wrap the input in an Apify Schedule or a cron job.
- Dedupe. Store seen
id values and keep only new rows each poll. Sort new rows by Notification_Date to lead with the freshest filings.
- Deliver. Send new rows to an alert (email, Slack), append them to a database so history accumulates, or refresh a dashboard. For compliance and ESG monitoring, keep
Filing_ID and search_metadata with each stored row so every entry traces to a source filing.
Inputs
First_Name and Last_Name (string): member watch, case-insensitive partial match
Stock_Symbol (string): ticker watch, for example NVDA, partial match
Start_Date and End_Date (string, YYYY-MM-DD): optional window, useful for backfilling a new tracker
Max_Results (integer, 1 to 1000, default 100): per-poll cap, keep small for trackers
Cost
Billing is per transaction returned plus a small per-run start fee, so a bounded poll is cheap: a daily 25-row member watch is about $0.05 per poll, around $1.50 per month. A 50-row ticker watch is about $0.10 per poll. Estimate per month before scheduling; live prices are in references/gotchas.md.
Honest limits
- This is a polled tracker over public filings, not a push feed; freshness is your poll interval plus the 30 to 45 day statutory filing lag.
Amount_Range is a bracket exactly as filed; no exact dollar values exist in the source.
Ticker is blank for unlisted assets, and Asset_Type_Code carries more codes than the common documented set.
- Rows where
PDF_Quality is "image" came from scanned filings via OCR; verify against the source PDF when a number matters.
- The tracker collects and organizes disclosure records. It does not evaluate, recommend, or time trades, and its output is research data, not investment advice.
Troubleshooting
- Nothing new in a poll: normal; members file in bursts. Do not widen the watch just to see activity.
- Duplicate rows across polls: expected; dedupe on
id before delivering.
- A trade you read about is missing: the filing deadline is 30 to 45 days; it will appear once filed.
- Backfill looks thin: add
Start_Date and End_Date with a higher Max_Results for the initial load, then drop back to small polls.
See references/gotchas.md for cost guardrails and error recovery, and references/actor-index.md for the Actor routing table.
Related financial-data Actors
1---2name: apify-congress-trading-tracker3description: Build a congress trading tracker with the Apify Congress Financial Disclosures and Stock Trades Actor (johnvc/us-congress-financial-disclosures-and-stock-trading-data). Watch a member of Congress or a ticker, poll for newly filed Periodic Transaction Reports from the House and Senate, dedupe on the stable row id, and route new disclosures to alerts, a database, or a dashboard, with member, chamber, Ticker, Transaction_Type, Amount_Range, Date, and Filing_ID on every row. Use when the user wants a congress trading tracker, wants to track congressional stock trades over time, monitor a member's disclosures, watch which members trade a ticker, get alerts on new filings, or run disclosure monitoring for compliance, ESG, or journalism research. Pay-per-transaction billing, MCP-ready for Claude and other AI agents.4license: MIT5---67# Congress Trading Tracker: Monitor New Disclosures Over Time89Turn US Congressional financial disclosures into a tracker. Define what to watch (one member, one ticker, or all recent activity), poll on a schedule, keep only rows you have not seen, and deliver the new filings to an alert, a table, or a dashboard. Every row is a parsed House or Senate Periodic Transaction Report (PTR) line with the member, chamber, asset, transaction type, amount bracket, and filing IDs.1011## When to use this skill1213- The user wants a congress trading tracker or asks to track congressional stock trades over time.14- They want to monitor one member's disclosures, or every member's activity in one ticker.15- They want alerts, a digest, or a database of newly filed trades.16- A compliance or ESG team wants to monitor disclosed congressional trades against holdings they oversee, as an auditable history.17- A journalist or researcher wants filings around a legislative event collected as they publish.1819Not for: one-off historical pulls (use the congress-stock-trades-api skill), real-time signals (filings trail trades by 30 to 45 days by law), or investment recommendations (this is public-records monitoring, not advice).2021## What each poll returns (one row per transaction)2223`id` (stable row identifier, the dedupe key), `First_Name`, `Last_Name`, `House` (House or Senate), `State_District`, `Ticker` (blank when the asset is not publicly listed), `Asset`, `Asset_Type_Code`, `Transaction_Type` (P, S, S (partial), E), `Amount_Range` (the filed bracket), `Date` (transaction date), `Notification_Date` (the freshness signal), `Year`, `Details` (when present), `Capital_Gains_Over_200` (often blank), `Filing_ID`, `DocID`, `PDF_Quality`, `created_at`, plus a `search_metadata` object echoing the query for audit trails.2425## Prerequisites2627- Apify account (sign up at https://apify.com?fpr=9n7kx3&fp_sid=skillrepo).28- Authentication via `apify login`, or an `APIFY_TOKEN` environment variable (Apify Console, Settings, Integrations).2930## The Actor3132- Store page: https://apify.com/johnvc/us-congress-financial-disclosures-and-stock-trading-data?fpr=9n7kx3&fp_sid=skillrepo33- Actor ID: `johnvc/us-congress-financial-disclosures-and-stock-trading-data`34- Pricing: pay per transaction returned, plus a small per-run start fee (see `references/gotchas.md`).3536## Run it with the Apify CLI3738One tracker poll, watching a single member:3940```bash41apify actors call "johnvc/us-congress-financial-disclosures-and-stock-trading-data" -i '{"Last_Name":"Pelosi","Max_Results":25}' \42 --json \43 --user-agent apify-awesome-skills/apify-congress-trading-tracker \44 2>/dev/null45```4647A ticker watch across all of Congress:4849```bash50apify actors call "johnvc/us-congress-financial-disclosures-and-stock-trading-data" -i '{"Stock_Symbol":"NVDA","Max_Results":50}' \51 --json \52 --user-agent apify-awesome-skills/apify-congress-trading-tracker \53 2>/dev/null54```5556Read a finished run's rows later, for example from a scheduled run:5758```bash59apify datasets get-items <DATASET_ID> --format json --user-agent apify-awesome-skills/apify-congress-trading-tracker 2>/dev/null60```6162Every call carries the three flags this repo expects: `--json` (or `--format json`), `--user-agent apify-awesome-skills/apify-congress-trading-tracker`, and `2>/dev/null`.6364## Run it from Claude or another AI agent (MCP)6566The Actor is MCP-ready. Add the hosted server URL:6768`https://mcp.apify.com/?tools=actors,docs,johnvc/us-congress-financial-disclosures-and-stock-trading-data`6970Then ask, for example: "Check for new Congress trades in NVDA since last week and summarize who filed what." MCP setup docs: https://docs.apify.com/platform/integrations/mcp7172## Workflow73741. Define the watch. One Actor input per tracker: a member (`First_Name` plus `Last_Name`), a ticker (`Stock_Symbol`), or nothing for all recent activity across both chambers.752. Bound each poll. Keep `Max_Results` at 25 to 50 per poll; a watch rarely produces more new filings than that between polls, and it is the hard cost cap.763. Pick the cadence. Daily fits the filing pace; PTRs are due 30 to 45 days after the trade, so hourly polling buys nothing. Wrap the input in an Apify Schedule or a cron job.774. Dedupe. Store seen `id` values and keep only new rows each poll. Sort new rows by `Notification_Date` to lead with the freshest filings.785. Deliver. Send new rows to an alert (email, Slack), append them to a database so history accumulates, or refresh a dashboard. For compliance and ESG monitoring, keep `Filing_ID` and `search_metadata` with each stored row so every entry traces to a source filing.7980## Inputs8182- `First_Name` and `Last_Name` (string): member watch, case-insensitive partial match83- `Stock_Symbol` (string): ticker watch, for example NVDA, partial match84- `Start_Date` and `End_Date` (string, YYYY-MM-DD): optional window, useful for backfilling a new tracker85- `Max_Results` (integer, 1 to 1000, default 100): per-poll cap, keep small for trackers8687## Cost8889Billing is per transaction returned plus a small per-run start fee, so a bounded poll is cheap: a daily 25-row member watch is about $0.05 per poll, around $1.50 per month. A 50-row ticker watch is about $0.10 per poll. Estimate per month before scheduling; live prices are in `references/gotchas.md`.9091## Honest limits9293- This is a polled tracker over public filings, not a push feed; freshness is your poll interval plus the 30 to 45 day statutory filing lag.94- `Amount_Range` is a bracket exactly as filed; no exact dollar values exist in the source.95- `Ticker` is blank for unlisted assets, and `Asset_Type_Code` carries more codes than the common documented set.96- Rows where `PDF_Quality` is "image" came from scanned filings via OCR; verify against the source PDF when a number matters.97- The tracker collects and organizes disclosure records. It does not evaluate, recommend, or time trades, and its output is research data, not investment advice.9899## Troubleshooting100101- Nothing new in a poll: normal; members file in bursts. Do not widen the watch just to see activity.102- Duplicate rows across polls: expected; dedupe on `id` before delivering.103- A trade you read about is missing: the filing deadline is 30 to 45 days; it will appear once filed.104- Backfill looks thin: add `Start_Date` and `End_Date` with a higher `Max_Results` for the initial load, then drop back to small polls.105106See `references/gotchas.md` for cost guardrails and error recovery, and `references/actor-index.md` for the Actor routing table.107108## Related financial-data Actors109110- Earnings Call Transcript API: https://apify.com/johnvc/earnings-call-transcript-api?fpr=9n7kx3&fp_sid=skillrepo111- Google Finance API: https://apify.com/johnvc/google-finance-api?fpr=9n7kx3&fp_sid=skillrepo112- Google News API: https://apify.com/johnvc/GoogleNewsAPI?fpr=9n7kx3&fp_sid=skillrepo