OTHER

Congressional Stock Trade Tracker

Track stock trades by US Congress members. Search House and Senate financial disclosures by member name, ticker symbol, or transaction type. Returns trade details and filing dates.

Try on Apify Store
$0.002per event
3
Users (30d)
54
Runs (30d)
92
Actively maintained
Maintenance Pulse
$0.002
Per event

Maintenance Pulse

92/100
Last Build
1d ago
Last Version
5d ago
Builds (30d)
7
Issue Response
N/A

Cost Estimate

How many results do you need?

trade-fetcheds
Estimated cost:$0.20

Pricing

Pay Per Event model. You only pay for what you use.

EventDescriptionPrice
trade-fetchedCharged per congressional stock trade disclosure retrieved.$0.002

Example: 100 events = $0.20 · 1,000 events = $2.00

Documentation

Track stock trades and financial disclosures filed by members of the United States Congress. This actor pulls Periodic Transaction Reports (PTRs) from both the House Clerk's official XML feed and the Senate Electronic Financial Disclosures (EFD) portal, giving you a single consolidated dataset of congressional trading activity sourced directly from government systems.

Under the STOCK Act of 2012, every member of Congress must publicly disclose stock transactions exceeding $1,000 within 45 days. This actor automates the collection of those filings so you can monitor, analyze, and research congressional trading patterns without manually navigating two separate government websites.


Why use Congressional Stock Trade Tracker?

Manually tracking congressional stock trades means checking two completely different government systems -- the House Clerk Financial Disclosure portal and the Senate EFD search system -- each with its own interface, data format, and quirks. The House publishes a structured XML feed, while the Senate uses a session-based search portal that requires accepting a legal agreement and handling CSRF tokens before you can even query it. This actor handles all of that complexity behind a single, clean API call.

Whether you are a retail investor curious about what Congress is buying before a big vote, a journalist investigating potential conflicts of interest, or a data scientist building quantitative models around political trading signals, this actor delivers clean, structured output you can pipe directly into spreadsheets, databases, dashboards, or automated workflows. Every result includes a direct link to the official PDF disclosure document so you can verify the raw data yourself.


Key features

  • Dual-chamber coverage -- Retrieves filings from both the U.S. House of Representatives and the U.S. Senate in a single run
  • Official government sources only -- Pulls directly from disclosures-clerk.house.gov (House Clerk XML feed) and efdsearch.senate.gov (Senate EFD portal) with no third-party intermediaries
  • Member name search -- Filter by any congressperson's name with partial matching (e.g., "Pelosi", "Tuberville", "Cruz")
  • Chamber selection -- Focus on House-only, Senate-only, or both chambers simultaneously
  • Transaction type filtering -- Narrow results to purchases, sales, or both
  • Configurable time window -- Search anywhere from the last 1 day up to 730 days (2 years) of filings
  • Ticker annotation -- Enter a stock ticker to annotate results with your search context for easier cross-referencing with filing PDFs
  • Direct PDF links -- Every result includes a URL to the original disclosure document on official government servers
  • Sorted by recency -- Results are automatically ordered by disclosure date with the newest filings first
  • Lightweight and fast -- Typical runs complete in 10-30 seconds using only 256 MB of memory

How to use

Using Apify Console

  1. Navigate to the Congressional Stock Trade Tracker on the Apify Store.
  2. Click Try for free to open the actor in your Apify Console.
  3. Configure the input parameters -- or leave the defaults to pull the latest 90 days of filings from both chambers.
  4. Click Start and wait for the run to complete (typically 10-30 seconds).
  5. View results in the Dataset tab. Export as JSON, CSV, Excel, or connect directly to Google Sheets.

Using the API

You can start the actor programmatically via the Apify API or any official client library. Here is a basic cURL example:

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

Replace YOUR_API_TOKEN with your actual Apify API token from the Integrations page.


Input parameters

ParameterTypeDefaultDescription
memberString(empty)Congress member name to search. Partial match supported (e.g., "Pelosi", "Tuberville"). Leave empty for all members.
tickerString(empty)Stock ticker symbol to annotate results with (e.g., "AAPL", "MSFT", "NVDA"). See tips below.
chamberStringbothFilter by congressional chamber: both, house, or senate.
transactionTypeStringbothFilter by transaction type: both, purchase, or sale.
daysBackInteger90How many days back to search for filings. Range: 1 to 730.
maxResultsInteger50Maximum number of results to return. Range: 1 to 1000.

Example input

{
  "member": "Tuberville",
  "chamber": "senate",
  "transactionType": "both",
  "daysBack": 365,
  "maxResults": 200
}

Tips

  • Start broad, then narrow down. Run with no filters first to see what data is available, then add member name or chamber filters to focus your search.
  • Check the filing PDFs. The metadata from official feeds provides filing-level information (who filed, when, and what type). The actual stock tickers, transaction amounts, and detailed asset descriptions are inside the linked PDF documents -- this is an important distinction.
  • Ticker annotation is contextual. The ticker input does not filter results server-side because ticker data lives inside the PDF filings, not in the feed metadata. Instead, it annotates your results so you know which ticker you were researching.
  • Longer time windows for historical analysis. Set daysBack to 730 to pull up to 2 years of filings for comprehensive research.
  • Senate site maintenance. The Senate EFD portal occasionally goes offline for scheduled maintenance. If Senate results come back empty, try again later -- House results via the XML feed are always available.

Output

Each item in the dataset represents a single financial disclosure filing. Here is an example of a House filing:

{
  "member": "Nancy Pelosi",
  "chamber": "House",
  "party": "",
  "state": "CA",
  "district": "11",
  "ticker": "",
  "assetDescription": "See filing PDF for transaction details",
  "transactionType": "Periodic Transaction Report",
  "transactionDate": "",
  "disclosureDate": "01/15/2025",
  "amount": "",
  "owner": "",
  "filingUrl": "https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2025/20012345.pdf"
}

And here is an example of a Senate filing:

{
  "member": "Tommy Tuberville",
  "chamber": "Senate",
  "party": "",
  "state": "",
  "district": "",
  "ticker": "",
  "assetDescription": "See filing for transaction details",
  "transactionType": "Periodic Transaction Report",
  "transactionDate": "",
  "disclosureDate": "02/03/2025",
  "amount": "",
  "owner": "",
  "filingUrl": "https://efdsearch.senate.gov/search/view/ptr/12345678-abcd-1234-efgh-123456789012/"
}

Output fields

FieldDescription
memberFull name of the Congress member who filed the disclosure.
chamberCongressional chamber -- House or Senate.
partyPolitical party affiliation (when available from the source data).
stateTwo-letter state abbreviation (e.g., CA, TX, NY). Parsed from the House Clerk StateDst code.
districtCongressional district number (House members only, e.g., 11).
tickerStock ticker symbol (when extractable from filing metadata).
assetDescriptionDescription of the asset, or a note directing you to the linked filing PDF for details.
transactionTypeType of filing -- Periodic Transaction Report, Periodic Transaction Notification, Amendment, etc.
transactionDateDate the transaction occurred (when available in feed metadata).
disclosureDateDate the disclosure was filed with the House Clerk or Senate EFD system.
amountTransaction amount range (when available in feed metadata).
ownerAsset owner -- the member, spouse, dependent child, or joint.
filingUrlDirect URL to the official PDF disclosure document on government servers.

Use cases

  • Retail investors -- Track whether Congress members are buying or selling stocks in specific sectors before major legislation votes
  • Investigative journalists -- Research potential conflicts of interest, late filings, or patterns of trading around committee assignments
  • Financial analysts -- Build datasets of congressional trading activity for quantitative research and signal generation
  • STOCK Act compliance monitoring -- Verify that elected officials are meeting the 45-day disclosure requirement
  • Political watchdog organizations -- Create public-facing transparency dashboards around congressional financial activity
  • Data scientists -- Build models correlating congressional trades with stock price movements or legislative outcomes
  • Academic researchers -- Study the information advantages (or lack thereof) held by elected officials in financial markets
  • Hedge funds and trading desks -- Monitor disclosure filings as an alternative data signal for investment decisions
  • Civic technology platforms -- Integrate congressional trading data into voter information tools and accountability apps

API & Integration

Python

from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run_input = {
    "member": "Pelosi",
    "chamber": "house",
    "daysBack": 180,
    "maxResults": 100,
}

run = client.actor("CkxfuZrYkYFMctI4R").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['member']} -- {item['transactionType']} -- {item['disclosureDate']}")
    print(f"  Filing: {item['filingUrl']}")

JavaScript

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "YOUR_API_TOKEN" });

const run = await client.actor("CkxfuZrYkYFMctI4R").call({
    member: "Tuberville",
    chamber: "senate",
    daysBack: 365,
    maxResults: 200,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.log(`${item.member} -- ${item.transactionType} -- ${item.disclosureDate}`);
    console.log(`  Filing: ${item.filingUrl}`);
});

cURL

# Start a run
curl "https://api.apify.com/v2/acts/CkxfuZrYkYFMctI4R/runs" \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{"chamber": "both", "daysBack": 90, "maxResults": 50}'

# Fetch results from the default dataset
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Integrations

  • Google Sheets -- Export results directly to a spreadsheet using the Apify Google Sheets integration
  • Slack / Discord -- Set up webhook notifications to get alerts when new congressional trades are filed
  • Zapier / Make -- Trigger automated workflows whenever new dataset items appear
  • PostgreSQL / MongoDB -- Push results to a database using Apify integrations for long-term storage and querying
  • Power BI / Tableau -- Export CSV data for visualization in business intelligence dashboards

How it works

The actor fetches data from two official U.S. government disclosure systems and merges the results into a single, unified dataset.

  1. Determine year range -- Based on the daysBack parameter, calculate which calendar years need to be queried (e.g., 365 days back from mid-2025 requires both 2024 and 2025 data).
  2. Fetch House filings -- Download the House Clerk's annual XML feed from disclosures-clerk.house.gov/public_disc/financial-pdfs/{year}FD.xml. Parse the XML using fast-xml-parser and filter for PTR filings (filing types P and X).
  3. Fetch Senate filings -- Navigate the Senate EFD portal at efdsearch.senate.gov: obtain a CSRF token, accept the site agreement via POST, then query the DataTables search API for Periodic Transaction Reports (report type 11, filer type 1).
  4. Parse and normalize -- Extract member names, states, districts, filing dates, and construct PDF URLs. House PDFs use ptr-pdfs/{year}/{docId}.pdf for type P filings and financial-pdfs/{year}/{docId}.pdf otherwise.
  5. Apply filters -- Filter by member name (partial match), chamber, and transaction type. Annotate with the requested ticker symbol if provided.
  6. Sort and limit -- Sort all results by disclosure date descending (newest first) and apply the maxResults cap.
  7. Push to dataset -- Output the final results to the Apify dataset for download or API access.
                         User Input
                             |
              +--------------+--------------+
              |                             |
     House Clerk XML Feed          Senate EFD Portal
     (fast-xml-parser)         (CSRF + Agreement + Search)
              |                             |
     Filter PTR filings            Parse HTML table rows
     (types P and X)              (report_type=11)
              |                             |
     Build PDF URLs                Extract member + date
              |                             |
              +--------------+--------------+
                             |
                    Merge + Filter + Sort
                             |
                      Apify Dataset

Performance & cost

ScenarioMemoryRun timeCompute unitsApprox. cost
Default (90 days, both chambers, 50 results)256 MB10-20 sec~0.001 CUFree tier
Single member, single chamber256 MB5-15 sec~0.001 CUFree tier
Full 730 days, both chambers, 1000 results256 MB20-40 sec~0.002 CUFree tier
Scheduled daily run (30 days per month)256 MB10-20 sec each~0.03 CU/monthFree tier
Scheduled hourly run (720 per month)256 MB10-20 sec each~0.72 CU/month~$0.36/month

On the Apify Free plan you get approximately 0.1 compute units per day, which supports roughly 100 runs per day of this actor at no cost.


Limitations

  • Detailed transaction data lives in PDFs. The official XML and search feeds provide filing-level metadata (who filed, when, and filing type). Specific stock tickers, transaction amounts, exact dates, and asset descriptions are inside the linked PDF documents -- not in the structured feed data.
  • Party affiliation not included in feeds. Neither the House XML feed nor the Senate EFD search results consistently include political party information. The party field is included in the output schema for future enhancement.
  • Senate EFD portal availability. The Senate EFD system occasionally goes offline for maintenance. When this happens, the actor gracefully logs a warning and returns House-only results. Senate data will be available again once the portal is restored.
  • House data is annual XML files. The House Clerk publishes one XML file per calendar year. For searches spanning year boundaries, the actor fetches multiple XML files automatically.
  • No real-time streaming. Filings appear in government systems 1-2 business days after submission. This actor retrieves whatever has been published at the time of the run.
  • Transaction type filtering is approximate. Since detailed transaction types (purchase vs. sale) are inside filing PDFs, the transaction type filter works on filing metadata categories rather than individual transaction-level data.
  • Rate limits on government portals. The actor uses reasonable delays and standard request patterns, but extremely frequent runs may encounter temporary rate limiting from government servers.

Responsible use

  • This is public government data. All filings accessed by this actor are legally required public disclosures under the STOCK Act of 2012. No private or non-public information is collected.
  • Respect government server resources. Avoid running the actor at extremely high frequency (e.g., every minute). Daily or hourly scheduling is reasonable for monitoring new filings.
  • Verify before publishing. If using this data for journalism, research, or investment decisions, always verify findings against the original PDF filings linked in each result.
  • Not investment advice. Congressional trading data is informational only. Trading decisions should not be based solely on congressional disclosure filings without independent analysis.
  • Comply with terms of use. The Senate EFD portal has a usage agreement that prohibits commercial redistribution of bulk data. Ensure your use case complies with applicable terms.

FAQ

Q: Where does this data come from? A: House filings come from the official House Clerk Financial Disclosure XML feed at disclosures-clerk.house.gov. Senate filings come from the Senate Electronic Financial Disclosures (EFD) search system at efdsearch.senate.gov. Both are official U.S. government sources mandated by the STOCK Act of 2012.

Q: Why are fields like ticker, amount, and transactionDate empty? A: The official government feeds provide filing-level metadata -- who filed, when, and what type of report. The detailed transaction information (specific stock tickers, dollar amounts, exact transaction dates) is contained within the linked PDF documents. Each result includes a filingUrl that points directly to that PDF.

Q: How often is the source data updated? A: The House Clerk publishes new filings to their XML feed as they are received. The Senate EFD system updates in near-real-time as filings are submitted. New filings typically appear within 1-2 business days of the member submitting their report.

Q: What is the STOCK Act? A: The Stop Trading on Congressional Knowledge (STOCK) Act of 2012 requires all members of Congress, the President, the Vice President, and senior executive and legislative branch officials to publicly disclose financial transactions exceeding $1,000 within 45 days. This actor collects the resulting Periodic Transaction Reports (PTRs).

Q: Can I filter by political party? A: Not directly. The official data feeds do not consistently include party affiliation. You can filter by member name and cross-reference party information from a separate source.

Q: Why do I see "Periodic Transaction Report" for all House results? A: This actor specifically targets PTR filings (filing types P and X in the House Clerk system), which are the stock trade disclosures required by the STOCK Act. Other filing types such as annual reports, amendments, and termination filings are excluded to keep results focused on trading activity.

Q: What happens when the Senate EFD portal is down for maintenance? A: The actor handles this gracefully. It logs a warning about the maintenance and continues to return House filing data normally. Senate results will be empty until the portal is restored. The House XML feed is generally always available.

Q: Can I search for multiple members at once? A: The member input accepts a single name string with partial matching. To search for multiple specific members, run the actor separately for each name, or leave the member field empty to retrieve all filings and filter the results afterward.

Q: How far back can I search? A: Up to 730 days (approximately 2 years). The House Clerk maintains annual XML files for recent years, and the Senate EFD portal supports date-range queries within this window.

Q: Does the ticker filter actually filter results? A: Not in the traditional sense. Since ticker information is inside the PDF filings rather than the feed metadata, the ticker input annotates your results with the searched ticker symbol to help you cross-reference when reviewing the linked PDFs. It does not exclude filings that do not mention that ticker.

Q: How is this different from the SEC Insider Trading actor? A: This actor tracks stock trades by members of Congress (required by the STOCK Act). The SEC Insider Trading actor tracks SEC Form 4 filings by corporate insiders (officers, directors, and 10% shareholders). They cover different groups of people under different regulatory frameworks.

Q: Can I schedule this actor to run automatically? A: Yes. Use the Apify scheduling feature to run the actor daily, weekly, or at any interval. Combine with webhooks or integrations to get notified whenever new filings appear.

Q: Why are Senate results missing state and district information? A: The Senate EFD search API returns limited metadata compared to the House Clerk XML feed. Senate results include the member name, filing date, and a link to the disclosure document, but do not include state information in the search response. The House XML feed includes a StateDst code (e.g., "CA33") from which state and district are parsed.

Q: What filing types does the actor target? A: For the House, the actor filters for filing type P (Periodic Transaction Report) and type X (Periodic Transaction Notification). For the Senate, it queries report type 11 (Periodic Transaction Report) with filer type 1 (Senator). These are the filing types that contain stock trade disclosures as required by the STOCK Act.


Related actors

ActorDescription
SEC Insider TradingTrack SEC Form 4 filings for corporate insider stock trades by officers, directors, and major shareholders.
SEC EDGAR Filing AnalyzerSearch and analyze SEC EDGAR filings including 10-K, 10-Q, 8-K, and other report types.
EDGAR Filing SearchSearch the full EDGAR database for any filing type by company, CIK, or form type.
Congress Bill SearchSearch current and historical bills in the U.S. Congress by keyword, sponsor, or status.
FEC Campaign Finance SearchSearch Federal Election Commission data for campaign contributions, expenditures, and committee filings.
Federal Register SearchSearch the Federal Register for proposed rules, final rules, executive orders, and agency notices.

How it works

01

Configure

Set your parameters in the Apify Console or pass them via API.

02

Run

Click Start, trigger via API, webhook, or set up a schedule.

03

Get results

Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.

Use cases

Sales Teams

Build targeted lead lists with verified contact data.

Marketing

Research competitors and identify outreach opportunities.

Data Teams

Automate data collection pipelines with scheduled runs.

Developers

Integrate via REST API or use as an MCP tool in AI workflows.

Ready to try Congressional Stock Trade Tracker?

Start for free on Apify. No credit card required.

Open on Apify Store