Congressional Trading Signals — STOCK Act Intelligence avatar

Congressional Trading Signals — STOCK Act Intelligence

Pricing

from $2.00 / 1,000 trade fetcheds

Go to Apify Store
Congressional Trading Signals — STOCK Act Intelligence

Congressional Trading Signals — STOCK Act Intelligence

Turn US congressional STOCK Act disclosures into signals. Parses House filings into trades, then detects late disclosures, buying clusters, new positions, committee activity, behaviour changes, and consensus scores. Official House & Senate data — no AI, no third-party sources.

Pricing

from $2.00 / 1,000 trade fetcheds

Rating

0.0

(0)

Developer

Ryan Clinton

Ryan Clinton

Maintained by Community

Actor stats

1

Bookmarked

40

Total users

8

Monthly active users

9 days ago

Last modified

Categories

Share

Congressional Trading Signals — turn STOCK Act disclosures into trading signals

The fastest way to discover unusual congressional trading activity from official STOCK Act disclosures. This actor doesn't just return filings — it parses the House PDFs into individual transactions and turns them into signals: clusters, late disclosures, new positions, committee-linked activity, behaviour changes, and emerging congressional consensus. Official House and Senate data only. No AI, no third-party datasets.

Under the STOCK Act of 2012, every member of Congress must publicly disclose stock transactions over $1,000 within 45 days. This actor collects, extracts, and analyses those filings so you get the signal, not 300 PDFs.


Detect signals like

Congressional accumulation — "PLTR accumulated: 9 purchases vs 1 sale across 6 members"

Trade cluster — "4 members bought NVDA within 12 days"

New position — "Jane Doe opened a new position in NVDA"

Behaviour change — "David Taylor made 12 trades in the last 30 days vs a ~1.8/month baseline"

Late disclosure — "AMZN disclosed 436 days after the transaction date"

Each is a structured, deterministic record your dashboard or automation can branch on — no prose parsing. The examples above are real signals generated from actual House filings.


Congressional Consensus Score

A deterministic 0-100 measure of congressional interest in a stock:

0 = little congressional activity
50 = moderate interest
100 = broad congressional accumulation

Derived from unique buyers, buy/sell ratio, new positions, and activity velocity — no market data required. It rides on every tickerSummary record (includeAggregates: true), which the actor sorts highest-consensus first.

{ "ticker": "NVDA", "consensusScore": 92, "purchaseCount": 9, "saleCount": 1, "memberCount": 6 }

Example investigation

Input: { "tickers": ["NVDA"], "includeAggregates": true, "includeEvents": true }
Output:
tickerSummary NVDA — 9 purchases, 0 sales, 6 members, consensusScore 92
event trade_cluster — 4 members bought NVDA within 12 days
event new_position — 2 members opened a first-time NVDA position
→ Congressional accumulation signal generated.

Questions this actor answers

Can I detect unusual congressional trading activity before it becomes a headline? Yes — set includeEvents: true and watch for trade_cluster, congressional_accumulation, behavior_change, and new_position.

Can I detect when Congress starts accumulating a stock? Yes — filter eventType = congressional_accumulation, or read tickerSummary.consensusScore.

Can I identify unusually late disclosures? Yes — set lateFilingsOnly: true, or read complianceStatus / the severely_late_filing event.

Can I find committee members trading companies in their oversight area? Yes — supply a committeeData map and enable committee_activity events.

Can I detect when a member opens a brand-new position? Yes — run in watchlist mode (watchlistName) with includeEvents: true; watch for new_position / position_exit.

Can I spot a member whose trading suddenly spikes? Yes — the behavior_change event fires when a member's recent rate runs well above their baseline.

Can I rank members by disclosure timeliness, or stocks by congressional interest? Yes — includeAggregates: true gives memberSummary.lateFilingRate and tickerSummary.consensusScore / momentum.


Why people switch

A raw congressional-trades CSV leaves you to download filings → parse PDFs → normalize amounts → calculate compliance → detect patterns → build alerts yourself. This actor already did that. You get trade, event, and summary records — not a folder of PDFs.


Why this is different

What you also get — why-it-matters signals, STOCK Act compliance, congressional consensus, automation-ready

Most congressional-trading tools return filings. This actor returns:

  • ✓ Parsed transactions (ticker, side, amount, dates) — not PDF links
  • ✓ STOCK Act compliance analysis (on-time / late / severely-late)
  • ✓ Alert-ready signals + importance scores
  • ✓ Trading clusters & congressional consensus scores
  • ✓ New-position / position-exit detection (cross-run)
  • ✓ Committee-linked activity (your roster)
  • ✓ Behaviour-change & momentum detection
  • ✓ Journalist-ready headlines

No AI required. No third-party datasets required. Only official government disclosures.

CapabilityGeneric trackerThis actor
Filing links
Parsed transactionssometimes
STOCK Act compliance scoringrare
New-position / exit detection
Trade clusters
Congressional consensus score
Behaviour-change detection
Committee-activity detection
Automation-ready event typespartial

Common use cases

  • Detect unusual congressional trading activitybehavior_change, trade_cluster, congressional_accumulation events.
  • Find late disclosureslateFilingsOnly: true, severely_late_filing events, memberSummary.lateFilingRate.
  • Monitor congressional accumulation — sort tickerSummary by consensusScore.
  • Track committee-linked trading — supply committeeData, enable committee_activity events.
  • Build automated alerts — branch on eventType / alertPriority / complianceStatus in Slack, Dify, Zapier, or Make.
  • Research congressional trading trendstrend records + structured per-transaction history.

What you get from one call

  • Real transactions, not just filing links. Each House PTR PDF is parsed into its individual trades — ticker, asset name, asset type, purchase/sale/exchange, transaction date, amount range, and owner.
  • STOCK Act compliance signal. Every trade carries a compliance block: days between the trade and its disclosure, the 45-day deadline, and a status of on-time, late, or severely-late. Late filings are the headline finding for journalists and watchdogs.
  • Estimated dollar volume. Amount ranges are parsed to amountMin / amountMax / amountMidpoint so you can sort, sum, and rank by size.
  • Run-level summary record. A single aggregate row (also mirrored to the key-value store SUMMARY) with total trades, buys vs sells, estimated volume, late-filing rate, top tickers, and most-active members.
  • Filterable signal tags + alert priority + importance score. Each trade carries deterministic signalTags (late-filing, large-trade, spouse-trade, stock/option/etf/crypto-related, new-trade), an alertPriority of high / medium / low, and an importanceScore (0-100, sortable; filter with minImportanceScore) — branch on them in Slack/Zapier/Dify without parsing prose.
  • Aggregate & trend records (opt-in). Turn on includeAggregates for one tickerSummary per ticker (buyers, sellers, buy/sell ratio, volume, a 0-100 consensusScore, and momentum/velocity) and one memberSummary per member (trade count, late-filing rate, average size, trading style, favorite tickers & sectors) — the "favorite stocks" and "most active members" answers as flat BI rows. Turn on includeTrends for per-ticker weekly/monthly trend records.
  • Event records — "why it matters" (opt-in). Turn on includeEvents for deterministic event records: large_purchase/large_sale, late_filing/severely_late_filing, trade_cluster (3+ members buying one ticker within 30 days), congressional_accumulation, new_position/position_exit (watchlist mode), committee_activity (with committeeData), and behavior_change (a member's trading rate spiking above their baseline). Each carries a plain-English reason. This is the layer most trackers don't expose.
  • Story records (opt-in). Turn on includeStories for templated journalist headlines composed from the strongest events — "4 Energy Committee members traded XOM," "Tim Walberg disclosed an AMZN trade 436 days late." Deterministic templates, no LLM, paste-ready.
  • Sector classification + committee enrichment. Trades carry sector/industry from a curated map (NVDA → Technology / Semiconductors), and committeeMemberships when you supply a committeeData map — so you can ask "Energy Committee members buying oil stocks?" null/empty when not covered — never guessed.
  • Audit-grade provenance. Every record carries a provenance block: source system, retrieval timestamp, parser version, parse confidence, and the SHA-256 hash of the source PDF.
  • Cross-run monitoring. Set a watchlistName and each record is tagged NEW or UNCHANGED versus prior runs — ideal for scheduled daily or weekly tracking.

Key features

  • Per-transaction House extraction — parses the official PTR PDFs (digitally filed reports) into structured trades, not placeholder rows
  • STOCK Act timeliness scoring — deterministic on-time / late / severely-late status per trade from the disclosed dates
  • Signal tags & alert priority — deterministic, filterable flags derived only from the disclosed data (no market interpretation)
  • Dual-chamber coverage — House and Senate disclosures in a single run
  • Official government sources onlydisclosures-clerk.house.gov and efdsearch.senate.gov, no third-party intermediaries
  • Precise multi-value filters — filter by lists of tickers, members, or states; by side; by minimum trade size; or by late filings only
  • Date-range controlfromDate/toDate on either the transaction date or the disclosure date
  • Provenance & audit artifacts — parse confidence + PDF hash on every record; optional original-PDF / raw-text storage
  • Aggregate intelligence — top tickers, most-active members, estimated volume, late-filing rate, and large-trade count per run
  • Watchlist mode — opt-in cross-run change detection (NEW / UNCHANGED) for scheduled monitoring, with a newOnly alert filter

How to use

Using Apify Console

  1. Open Congressional Trading Signals on the Apify Store.
  2. Click Try for free.
  3. Configure the input — or leave the defaults to pull the latest 90 days of House trades.
  4. Click Start.
  5. View results in the Dataset tab (the Trades view leads with the buy/sell side and ticker). Export as JSON, CSV, Excel, or push to Google Sheets.

Using the API

curl "https://api.apify.com/v2/acts/CkxfuZrYkYFMctI4R/runs" \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"member": "Gottheimer",
"chamber": "house",
"daysBack": 120,
"maxResults": 100
}'

Replace YOUR_API_TOKEN with your token from the Integrations page.


Input parameters

ParameterTypeDefaultDescription
membersArray(empty)Congress members to search (e.g. ["Pelosi", "Tuberville"]). Partial match. Empty = all.
tickersArray(empty)Filter House trades by extracted ticker (e.g. ["NVDA", "AAPL"]).
statesArray(empty)Two-letter state codes to filter by (House records).
chamberStringbothboth, house, or senate.
transactionTypeStringbothboth, purchase, sale, or exchange — matched against the real extracted side.
daysBackInteger90How many days back to fetch filings. 1–730.
fromDate / toDateString(empty)Optional YYYY-MM-DD bounds applied to dateBasis.
dateBasisStringdisclosureDateWhich date fromDate/toDate filter on: disclosureDate or transactionDate.
minAmountMidpointInteger0Only return trades whose disclosed amount midpoint is at least this value.
minImportanceScoreInteger0Only return trades with importanceScore (0-100) at least this value.
lateFilingsOnlyBooleanfalseReturn only trades disclosed outside the STOCK Act 45-day window.
newOnlyBooleanfalseWatchlist mode only: emit only filings not seen in prior runs.
watchlistNameString(empty)Set to enable cross-run NEW / UNCHANGED tagging (+ firstSeenAt/lastSeenAt).
includeAggregatesBooleanfalseEmit tickerSummary + memberSummary records. Not charged.
includeTrendsBooleanfalseEmit per-ticker trend records. Not charged.
includeEventsBooleanfalseEmit event records (large/late/cluster/accumulation/new-position/committee). Not charged.
includeStoriesBooleanfalseEmit templated journalist story records. Not charged.
committeeDataObject(empty)Your member→committees map for committeeMemberships + committee_activity events.
trendBucketStringweekweek (ISO) or month for trend records.
maxResultsInteger50Max records returned. House PDFs are parsed newest-first; higher values parse more filings.
outputProfileStringfullfull, minimal, dashboard (BI columns), or monitoring (automation columns).
saveSourcePdfs / saveRawTextBooleanfalseStore the source PDF / extracted text to the key-value store for audit.
proxyConfigurationObject(residential prefill)Enable a residential proxy to include Senate data reliably. House needs no proxy.
member / tickerString(empty)Legacy single-value aliases for members / tickers.

Example input

{
"tickers": ["NVDA", "MSFT"],
"chamber": "house",
"transactionType": "purchase",
"minAmountMidpoint": 50000,
"daysBack": 365,
"maxResults": 200
}

Output

Sample output — member, ticker, side, amount, compliance status, and importance score per disclosed trade

Each trade record is a single disclosed transaction. Example (House):

{
"recordType": "trade",
"schemaVersion": "2.5.0",
"eventId": "txn_87720b12d1dd9271",
"member": "Lloyd Doggett",
"chamber": "House",
"state": "TX",
"district": "37",
"ticker": "PG",
"assetDescription": "Procter & Gamble Company",
"assetType": "ST",
"transactionSide": "PURCHASE",
"transactionDate": "05/15/2026",
"disclosureDate": "6/4/2026",
"amount": "$1,001 - $15,000",
"amountMin": 1001,
"amountMax": 15000,
"amountMidpoint": 8001,
"owner": "",
"compliance": { "daysToDisclose": 20, "filingDeadlineDays": 45, "status": "on-time", "daysLate": 0 },
"complianceStatus": "on-time",
"complianceDaysLate": 0,
"signalTags": ["stock"],
"alertPriority": "low",
"importanceScore": 42,
"filingUrl": "https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2026/20034712.pdf",
"docId": "20034712",
"extractionStatus": "parsed",
"provenance": { "sourceSystem": "house_clerk", "retrievedAt": "2026-06-06T16:34:05Z", "parserVersion": "2.1.0", "parseConfidence": 1, "pdfSha256": "13b3a8..." },
"summary": "Lloyd Doggett (House) bought PG ($1,001 - $15,000) on 05/15/2026; disclosed 6/4/2026."
}

The final record of every run is a summary (also pinned to the SUMMARY key-value store record):

{
"recordType": "summary",
"totalTrades": 14,
"purchases": 11,
"sales": 3,
"totalEstimatedVolumeUsd": 2330014,
"lateFilingCount": 0,
"lateFilingRate": 0,
"topTickers": [{ "ticker": "MSFT", "count": 4, "estimatedVolumeUsd": 2250004 }],
"mostActiveMembers": [{ "member": "Josh Gottheimer", "chamber": "House", "count": 12 }],
"summary": "14 congressional trades (11 buys, 3 sells) worth ~$2,330,014 estimated; 0 disclosed late."
}

With includeAggregates: true you also get one tickerSummary per ticker and one memberSummary per member:

{ "recordType": "tickerSummary", "ticker": "NVDA", "purchaseCount": 9, "saleCount": 1, "memberCount": 6, "buySellRatio": 9, "consensusScore": 84, "momentum": { "last30dPurchases": 7, "prior30dPurchases": 2, "changePct": 250, "velocityRatio": 4.3 }, "estimatedVolumeUsd": 1250000, "lateFilingCount": 0 }
{ "recordType": "memberSummary", "member": "Tim Walberg", "tradeCount": 15, "purchaseCount": 13, "saleCount": 2, "lateFilingRate": 0.93, "tradingStyle": "active", "favoriteTickers": ["FSSL"], "favoriteSectors": ["Financials"], "topTicker": "FSSL" }

With includeTrends: true, per-ticker time buckets:

{ "recordType": "trend", "ticker": "AAPL", "period": "2025-02", "bucket": "month", "purchaseCount": 1, "saleCount": 0, "tradeCount": 1, "estimatedVolumeUsd": 32501 }

With includeEvents: true, deterministic "why it matters" records (10 eventType values; a representative few):

{ "recordType": "event", "eventType": "congressional_accumulation", "ticker": "PLTR", "purchaseCount": 9, "saleCount": 1, "buySellRatio": 9, "reason": "PLTR accumulated: 9 purchases vs 1 sales across 6 members" }
{ "recordType": "event", "eventType": "new_position", "ticker": "NVDA", "member": "Jane Doe", "reason": "Jane Doe opened a new position in NVDA" }
{ "recordType": "event", "eventType": "committee_activity", "committee": "Energy and Commerce", "ticker": "XOM", "memberCount": 4, "reason": "4 Energy and Commerce Committee members traded XOM" }
{ "recordType": "event", "eventType": "behavior_change", "member": "David J. Taylor", "purchaseCount": 12, "reason": "David J. Taylor made 12 trades in the last 30 days vs a ~1.8/month baseline" }

With includeStories: true, one templated journalist headline per top event:

{ "recordType": "story", "headline": "4 Energy and Commerce Committee members traded XOM", "category": "committee-cluster", "ticker": "XOM", "committee": "Energy and Commerce", "memberCount": 4 }

Output fields

FieldDescription
recordTypetrade, filing, tickerSummary, memberSummary, trend, event, story, summary, or error.
eventIdStable hash identifying the transaction across runs (for dedup / watchlists).
member / chamber / state / districtWho filed and where.
tickerExtracted stock ticker (House trades).
assetDescription / assetTypeAsset name and the House asset-type code (e.g. ST = stock).
transactionSidePURCHASE, SALE, PARTIAL_SALE, EXCHANGE, or UNKNOWN.
transactionDateDate the trade occurred.
disclosureDateDate the filing was submitted.
amount / amountMin / amountMax / amountMidpointDisclosed dollar range, parsed to numbers.
ownerSpouse / Dependent Child / Joint when disclosed (blank = the member).
sector / industryCurated classification for the ticker (e.g. Technology / Semiconductors). null when not in the curated map.
committeeMembershipsMember's committees (when committeeData supplied; empty array otherwise).
compliance{ daysToDisclose, filingDeadlineDays: 45, status, daysLate } — STOCK Act timeliness.
complianceStatus / complianceDaysLateFlattened compliance fields for spreadsheet filtering.
signalTagsDeterministic tags: late-filing, large-trade, spouse-trade, family-trade, stock, option, etf, crypto-related, new-trade.
alertPriorityhigh (large AND late, or severely-late) / medium / low.
importanceScoreDeterministic 0-100 from size + lateness + asset/owner flags + recency. Sortable; filter with minImportanceScore.
provenance{ sourceSystem, retrievedAt, parserVersion, parseConfidence (0-1), pdfSha256 }.
filingUrl / docIdLink to the original PDF/report and its document ID.
extractionStatusparsed, parsed-no-transactions, scanned-no-text, or metadata-only.
sourcePdfKey / rawTextKeyKV keys for the stored source PDF / text (when saveSourcePdfs / saveRawText enabled).
summaryOne-line plain-English description of the trade.
changeFlagNEW / UNCHANGED (watchlist mode only).

How it works

Intelligence stack — official filings through PDF extraction, compliance, signal tagging, pattern detection, consensus scoring, to alert-ready records

  1. House filing index — download the House Clerk annual XML feed and select PTR filings (types P and X) in your window.
  2. Per-transaction extraction — fetch each PTR PDF, read its text layer, and parse the individual transactions (ticker, side, dates, amount, owner). Newest filings are parsed first; the parse count scales with maxResults.
  3. Senate filings — query the Senate EFD portal and return filing-level metadata + a link to each report.
  4. Compliance + amounts + signals — compute days-to-disclose against the 45-day deadline, parse each dollar range to min/max/midpoint, and derive the signal tags + alert priority.
  5. Filter, sort, summarize — apply the member/ticker/state/side/amount/date filters, stream newest-first, and emit a run-level aggregate summary.

Use in Dify

Drop this actor into Dify workflows via the Apify plugin's Run Actor node. Each trade returns parsed, classified, and compliance-scored as structured JSON — transactionSide (PURCHASE / SALE / EXCHANGE) and compliance.status (on-time / late / severely-late) plus the recordType discriminator your downstream node branches on. A generic scraper pointed at the disclosure portals returns PDF links; this returns decisions.

  • Actor ID: ryanclinton/congress-stock-tracker
  • Sample input (monitor a member's recent purchases for late filings):
{
"member": "Gottheimer",
"chamber": "house",
"transactionType": "purchase",
"daysBack": 90,
"watchlistName": "gottheimer-watch"
}

A Dify if/else node branches cleanly on the stable enums — no prose parsing:

  • recordType == "trade" → process the transaction; recordType == "event" → route the signal by eventType (e.g. trade_cluster → notify); recordType == "summary" → read the run aggregate; recordType == "error" → alert.
  • compliance.status == "late" OR compliance.status == "severely-late" → STOCK Act late-filing alert.
  • transactionSide == "PURCHASE" → buy-signal branch; transactionSide == "SALE" → sell-signal branch.
  • importanceScore >= 75 OR alertPriority == "high" → high-priority queue.
  • In watchlist mode, changeFlag == "NEW" → act only on filings not seen in prior runs.

The run-level summary record (top tickers, most-active members, estimated volume, late-filing rate) is usable verbatim in a notification or digest node — no LLM rewriting needed.


Limitations

  • Senate is filing-level. The Senate EFD portal restricts automated access and gates per-transaction detail behind a session. Senate records return filing metadata plus a link to the official report; enable proxyConfiguration (residential) to reach the portal reliably.
  • Scanned House filings. A small number of older PTRs are scanned images with no text layer. These return a filing record (extractionStatus: scanned-no-text) with the PDF link rather than parsed transactions.
  • Party affiliation is not published in either source feed; the party field is reserved.
  • Disclosure lag. Filings appear in government systems 1–2 business days after submission; this actor returns whatever is published at run time.

Responsible use

  • Public government data. All filings are legally required public disclosures under the STOCK Act. No private data is collected.
  • Respect government servers. Daily or hourly scheduling is reasonable; avoid per-minute runs.
  • Not investment advice. Congressional disclosure data is informational. The actor reports trades and disclosure timeliness; it does not predict prices or recommend positions.
  • Verify before publishing. Always check findings against the original filing linked in each record.

FAQ

Q: Does this return the actual trades or just links? A: Actual trades for the House — each PTR PDF is parsed into individual transactions with ticker, side, amount, and dates. Senate records are filing-level (metadata + report link) because the Senate portal gates transaction detail behind a session.

Q: What is the compliance block? A: The STOCK Act requires disclosure within 45 days of a trade. compliance reports daysToDisclose and a status of on-time, late, or severely-late, computed deterministically from the disclosed dates.

Q: How does the ticker filter work now? A: It matches the real extracted ticker on House trades, so ticker: "AAPL" returns only Apple transactions. Senate filing-level rows (which carry no extracted ticker) are kept so you don't lose Senate coverage.

Q: Why are some records filing instead of trade? A: When a PTR is a scanned image with no text layer, or a Senate report, the actor returns a filing record with the link instead of fabricating transaction detail. The extractionStatus field tells you why.

Q: How do I monitor new trades over time? A: Set a watchlistName and schedule the actor. Each record is tagged NEW or UNCHANGED versus prior runs on that watchlist, so you only act on genuinely new filings.

Q: What is the STOCK Act? A: The Stop Trading on Congressional Knowledge Act of 2012 requires members of Congress to publicly disclose financial transactions over $1,000 within 45 days.

Q: How is this different from the SEC Insider Trading actor? A: This tracks trades by members of Congress (STOCK Act PTRs). The SEC Insider Trading actor tracks SEC Form 4 filings by corporate insiders — different people, different framework.


ActorDescription
SEC Insider TradingSEC Form 4 trades by corporate officers, directors, and major shareholders.
SEC EDGAR Filing AnalyzerSearch and analyze SEC EDGAR filings (10-K, 10-Q, 8-K, and more).
Congress Bill SearchSearch U.S. Congress bills by keyword, sponsor, or status.
FEC Campaign Finance SearchFederal Election Commission contributions, expenditures, and committee filings.
Federal Register SearchProposed rules, final rules, executive orders, and agency notices.