# Congressional Stock Trades Tracker (House & Senate STOCK Act) (`mrdoe/congress-trading-tracker`) Actor

Congress stock trades from official House and Senate STOCK Act filings: member, party, ticker, buy or sell, value range, disclosure lag and a link to the original filing. No API key.

- **URL**: https://apify.com/mrdoe/congress-trading-tracker.md
- **Developed by:** [MrDoe](https://apify.com/mrdoe) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $14.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

![Congressional Stock Trades Tracker (House & Senate STOCK Act) - Congressional stock trades tracker for House and Senate STOCK Act disclosures](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/congress-trading-tracker--hero.png)

### What does Congressional Stock Trades Tracker (House & Senate STOCK Act) do?

Congressional Stock Trades Tracker collects the stock trades that members of the US House and Senate report under the STOCK Act and returns one row per trade. Each row has the member, party, ticker, purchase or sale, transaction date, filing date, disclosure lag in days, the disclosed value range and a link to the original filing. Filter by chamber, member, ticker, filing date or minimum value, or leave the filters empty for the latest filings.

### Why use Congressional Stock Trades Tracker (House & Senate STOCK Act)?

- Data comes straight from the official House Clerk and Senate disclosure systems, so every row links back to the filing it came from.
- Disclosed value ranges are kept as a low and a high value, never collapsed into one invented number.
- Disclosure lag in days shows how close to the 45-day deadline each trade was reported.
- Names, tickers and dates are normalized, with the ticker matched from the company name when the filing leaves it out.
- No API key or account needed.

### What makes this different

Paid trackers charge a monthly fee for the same public filings. This Actor reads the official House and Senate systems directly, parses the House PDF filings for you, keeps the full disclosed value range, and adds disclosure lag and a source link to every trade.

### Who can use the Congressional Stock Trades Tracker and how?

- **Retail investors:** follow what members of Congress bought and sold, and how quickly they reported it, as one input to your own research.
- **Journalists and watchdogs:** find late filings (disclosure lag near or beyond 45 days) and large trades with a link to the original document for every claim.
- **Quant and data teams:** build a clean dataset of political trades with value ranges and lag for backtests and factor research.
- **Fintech and app developers:** power a congress-trades feed, widget or alert in your product through the Apify API instead of parsing PDFs yourself.
- **Researchers and academics:** study timing, committee overlap and disclosure compliance across House and Senate members.
- **Newsletter and social creators:** publish a weekly list of the biggest new trades by ticker or member, with sources.
- **Ethics and compliance analysts:** screen filings for gaps, late reports and unusually large ranges.
- **Advocacy groups:** track trading in the sectors your campaign covers, ticker by ticker.

### How it works

![Congressional Stock Trades Tracker (House & Senate STOCK Act) workflow: your input, collection, output](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/congress-trading-tracker--how-it-works.png)

1. **Your input** — choose a chamber and optional member, ticker and date filters.
2. **The Actor collects it** — the Actor reads the newest official periodic transaction reports and extracts every trade.
3. **Your output** — you get one normalized row per trade with the value range, lag and a link to the filing.

### What data can you extract?

The dataset has 19 fields per row:

| Field                  | Type   | Description                                                 |
| ---------------------- | ------ | ----------------------------------------------------------- |
| `member_name`          | string | Member of Congress, normalized to first and last name.      |
| `chamber`              | string | house or senate.                                            |
| `party`                | string | Party of a current member, otherwise null.                  |
| `ticker`               | string | Ticker symbol, null for assets without one.                 |
| `asset_description`    | string | Asset name as filed, without ticker and type code.          |
| `transaction_type`     | string | purchase, sale or exchange.                                 |
| `transaction_date`     | string | Date of the trade (YYYY-MM-DD).                             |
| `filed_date`           | string | Date the report was filed (YYYY-MM-DD).                     |
| `disclosure_lag_days`  | number | Filing date minus transaction date, in days.                |
| `value_range_low_usd`  | number | Low end of the disclosed value band.                        |
| `value_range_high_usd` | number | High end of the disclosed value band, null when open-ended. |
| `source_document_url`  | string | Link to the original filing.                                |
| `owner`                | string | Whose account: self, spouse, joint or dependent child.      |
| `asset_type`           | string | Asset type as reported, for example Stocks or Options.      |
| `ticker_source`        | string | filing or sec\_name\_match; null when there is no ticker.     |
| `source`               | string | house\_disclosures or senate\_disclosures.                    |
| `scraped_at`           | string | Collection time (ISO 8601).                                 |
| `actor_version`        | string | Output schema version.                                      |
| `fetch_path`           | string | How the filing was read: pdf\_text, pdf\_ocr or html.         |

### How to use Congressional Stock Trades Tracker (House & Senate STOCK Act)

![Congressional Stock Trades Tracker (House & Senate STOCK Act) input form](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/congress-trading-tracker--input.png)

1. Open the Actor and go to the **Input** tab.
2. Choose a **Chamber**, optionally add **Members** or **Tickers**, and set **Max trades per chamber**.
3. Optionally set filters and a **Max results** limit.
4. Click **Start**. A default run finishes in under a minute.
5. Open the **Output** tab, then download the dataset or connect it to your tools.

### Input Parameters

| Parameter            | Type    | Required | Default                   | Description                                                                                                                                                                                    |
| -------------------- | ------- | -------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `chamber`            | string  | No       | `"both"`                  | Which chamber's disclosures to read.                                                                                                                                                           |
| `members`            | array   | No       | `[]`                      | Only return trades by these members, for example Nancy Pelosi. Leave empty for all members.                                                                                                    |
| `tickers`            | array   | No       | `[]`                      | Only return trades in these tickers, for example NVDA or AAPL. Leave empty for all assets.                                                                                                     |
| `filedSince`         | string  | No       | —                         | Only read filings submitted on or after this date (YYYY-MM-DD). Leave empty for the latest filings.                                                                                            |
| `minValueUsd`        | number  | No       | `0`                       | Skip trades whose whole disclosed value range is below this amount. Trades with an open-ended range are kept.                                                                                  |
| `maxItems`           | integer | No       | `10`                      | Maximum number of trades returned for each chamber. Default is 10 for a quick test; set 0 to return everything that matches.                                                                   |
| `maxFilings`         | integer | No       | `200`                     | Safety cap on the number of filings read per chamber in one run.                                                                                                                               |
| `ocrFallback`        | boolean | No       | `true`                    | Some House filings are scanned images. Turn this on to try reading image-only copies of the standard report layout. Hand-filled paper forms cannot be read reliably and are listed as skipped. |
| `deltaMode`          | boolean | No       | `false`                   | Return and bill only trades not delivered by an earlier run with the same delta key. Ideal for scheduled monitoring.                                                                           |
| `deltaStateKey`      | string  | No       | `"default"`               | Name of the tracked stream. Use a different key per watchlist.                                                                                                                                 |
| `proxyConfiguration` | object  | No       | `{"useApifyProxy":false}` | Optional proxy. Government disclosure sites normally work without one.                                                                                                                         |

### Output Data

![Congressional Stock Trades Tracker (House & Senate STOCK Act) dataset table](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/congress-trading-tracker--output.png)

`value_range_low_usd` and `value_range_high_usd` are the disclosed band; members report ranges, not exact amounts, and an open-ended band such as "Over $50,000,000" has a null high value. `disclosure_lag_days` is the filing date minus the transaction date. `ticker` is null for assets without one, such as Treasury bills, and `ticker_source` says whether it came from the filing or from an exact company-name match.

![Congressional Stock Trades Tracker (House & Senate STOCK Act) field map of one record](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/congress-trading-tracker--fields.png)

A real dataset item:

```json
{
    "member_name": "Pete Sessions",
    "chamber": "house",
    "party": "Republican",
    "ticker": "AAPL",
    "asset_description": "Apple Inc. - Common Stock",
    "transaction_type": "sale",
    "transaction_date": "2026-09-22",
    "filed_date": "2026-09-22",
    "disclosure_lag_days": 0,
    "value_range_low_usd": 100001,
    "value_range_high_usd": 250000,
    "source_document_url": "https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2026/20035499.pdf",
    "owner": "spouse",
    "asset_type": "Stocks (including ADRs)",
    "ticker_source": "filing",
    "source": "house_disclosures",
    "fetch_path": "pdf_text",
    "scraped_at": "2026-09-25T19:47:20.879Z",
    "actor_version": "1.0.0"
}
```

### How to read and use the results

Each row is one disclosed trade. Sort and filter it the way you would a spreadsheet.

1. **Filter by member or ticker** to follow one person or one company.
2. **Sort by disclosure\_lag\_days** to find late reports; the STOCK Act asks for reports within 45 days.
3. **Use the value range.** Members report bands, so use value\_range\_low\_usd and value\_range\_high\_usd as a range, not a single amount.
4. **Verify every row** with source\_document\_url, which opens the original filing.
5. **Check owner** (self, spouse, joint, dependent child) to see whose account made the trade.
6. **Schedule it** with a Filed since date to receive only new filings, and send them to Slack, Google Sheets or your database.

### Usage Examples

#### Latest trades from both chambers

```json
{
    "chamber": "both",
    "maxItems": 10
}
```

#### One member's recent trades

```json
{
    "chamber": "house",
    "members": ["Nancy Pelosi"],
    "maxItems": 25
}
```

#### Nvidia trades filed this summer

```json
{
    "chamber": "both",
    "tickers": ["NVDA"],
    "filedSince": "2026-06-01",
    "maxItems": 25
}
```

#### New trades for a watchlist since the last run

```json
{
    "chamber": "both",
    "tickers": ["NVDA", "AAPL", "MSFT"],
    "deltaMode": true,
    "deltaStateKey": "tech-watchlist",
    "maxItems": 0
}
```

### Tips for Best Results

- Set Filed since to only read new filings on a schedule.
- Use Minimum value to skip the smallest disclosure bands.
- Check SKIPPED\_FILINGS in the run's storage for filings that could not be read; each has a link to the original.
- Read the disclosure lag: filings close to 45 days are often the interesting ones.
- Default is 5 results for a fast test. Set the max to 0 to return everything available.

### Reliability by mode

| Mode                                      | Status | Needs login or key? | Notes                                                 |
| ----------------------------------------- | ------ | ------------------- | ----------------------------------------------------- |
| House, electronic filings                 | ✅     | No                  | PDF text is parsed into trades.                       |
| Senate, electronic filings                | ✅     | No                  | Read from the official search site.                   |
| House scanned images of the standard form | 🟡     | No                  | OCR; check the source link for important rows.        |
| House hand-filled paper forms             | ❌     | No                  | Listed in SKIPPED\_FILINGS with a link, never guessed. |
| Senate paper filings                      | ❌     | No                  | Image only; listed in SKIPPED\_FILINGS.                |
| Party for former members                  | 🟡     | No                  | Null when the member no longer serves.                |

✅ works as described, 🟡 works with caveats, ❌ not supported.

### Only new records (delta mode)

Turn on **Only new trades (delta mode)** and set a **Delta key**. Each scheduled run then returns, and bills, only trades that earlier runs with the same key did not deliver, so you get "what was just filed" instead of the whole list again.

### Known Limitations

- Members report value ranges, not exact amounts, so the values are bands.
- Some House filings are hand-filled scanned paper forms and Senate paper filings are images; they cannot be read reliably and are listed in SKIPPED\_FILINGS instead of guessed.
- The ticker is null for assets without one, for example Treasury bills, bonds and private funds.
- Trades in a filing marked as an exchange keep both assets in the description and no ticker.
- Party is filled for current members of Congress only; it is null for former members.
- Filings are published with a delay of up to 45 days after the trade, so this is not real-time.
- This is public disclosure data, not investment advice.

### Integrations

Run it from the Apify API, on a schedule, or from a webhook. Send results straight to Google Sheets, Make, Zapier, Slack or your own database with Apify's built-in integrations.

### Export Formats

Download the dataset as JSON, CSV, Excel, XML, HTML table or RSS from the **Output** tab or the API.

### Frequently Asked Questions

#### Where does the data come from?

The official House Clerk financial disclosure system and the Senate electronic financial disclosure search. Both are public government records published under the STOCK Act. Filings are read from those official pages and PDF documents, not from a third-party aggregator.

#### Does it need an account or API key?

No. The Actor needs no account, login or API key.

#### Why is the value a range?

Members disclose a band such as $1,001 to $15,000, not an exact amount. The Actor returns both ends and leaves the choice of how to use the range to you.

#### Are scanned filings supported?

Electronic filings and image-only copies of the standard layout are read. Hand-filled paper forms are not machine-readable; they are listed in SKIPPED\_FILINGS with a link to the document.

#### Am I charged for failed results?

No. You are only charged for trades that are written to the dataset.

#### How do I track what a member of Congress is buying?

Enter the member name in Members (for example Nancy Pelosi), leave the chamber on both, and run or schedule the Actor. Each row is a disclosed trade with the ticker, buy or sell, value range and a link to the filing.

#### Can I get congressional trades as a CSV or in Google Sheets?

Yes. Export the dataset as CSV, Excel or JSON, or connect it to Google Sheets, Make, Zapier or the Apify API.

#### Do I need an account or login?

No. The Actor reads public government disclosure records and needs no account or API key.

#### Am I charged for failed runs or empty results?

You are only charged for results that are actually written to the dataset.

#### Can I run it on a schedule?

Yes. Create a Task with your input and add a schedule in Apify Console. With monitor mode on, each scheduled run returns only what changed since the previous one.

### Changelog

- **2026-09-26:** Added delta mode, separate House and Senate event pricing, and the fetch\_path provenance field.
- **2026-09-25:** First release: House PDF and Senate HTML trades with value ranges, disclosure lag and source links.

### Enterprise and custom work

Need higher volumes, a custom output schema, dedicated scheduling or a no-breaking-changes commitment for a production pipeline? Open an issue on the Actor page and describe your use case. Bulk terms and custom builds are available.

### Support

Questions or a missing field? Open an issue from the **Issues** tab on this Actor's page and it will be looked at.

### Legal / Responsible Use

This Actor reads public government financial disclosure records published for transparency under the STOCK Act. Use of the data is subject to the disclosure sites' terms and to 5 U.S.C. § 13107, which prohibits using the data for commercial purposes other than news and communications media distribution, or for credit rating or fundraising. You are responsible for compliance. This is not financial advice.

# Actor input Schema

## `chamber` (type: `string`):

Which chamber's disclosures to read.

## `members` (type: `array`):

Only return trades by these members, for example Nancy Pelosi. Leave empty for all members.

## `tickers` (type: `array`):

Only return trades in these tickers, for example NVDA or AAPL. Leave empty for all assets.

## `filedSince` (type: `string`):

Only read filings submitted on or after this date (YYYY-MM-DD). Leave empty for the latest filings.

## `minValueUsd` (type: `number`):

Skip trades whose whole disclosed value range is below this amount. Trades with an open-ended range are kept.

## `maxItems` (type: `integer`):

Maximum number of trades returned for each chamber. Default is 10 for a quick test; set 0 to return everything that matches.

## `maxFilings` (type: `integer`):

Safety cap on the number of filings read per chamber in one run.

## `ocrFallback` (type: `boolean`):

Some House filings are scanned images. Turn this on to try reading image-only copies of the standard report layout. Hand-filled paper forms cannot be read reliably and are listed as skipped.

## `deltaMode` (type: `boolean`):

Return and bill only trades not delivered by an earlier run with the same delta key. Ideal for scheduled monitoring.

## `deltaStateKey` (type: `string`):

Name of the tracked stream. Use a different key per watchlist.

## `proxyConfiguration` (type: `object`):

Optional proxy. Government disclosure sites normally work without one.

## Actor input object example

```json
{
  "chamber": "both",
  "members": [],
  "tickers": [],
  "minValueUsd": 0,
  "maxItems": 10,
  "maxFilings": 200,
  "ocrFallback": true,
  "deltaMode": false,
  "deltaStateKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "chamber": "both",
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrdoe/congress-trading-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "chamber": "both",
    "maxItems": 10,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("mrdoe/congress-trading-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "chamber": "both",
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call mrdoe/congress-trading-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrdoe/congress-trading-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5NiiUJyRyoQJ5Uc7N/builds/5qdXS5YKeE7DQXwGL/openapi.json
