# Congress Stock Trades Pro (`red.cars/congress-stock-trades-pro`) Actor

Every stock trade filed by House members, parsed straight from the Clerk's Periodic Transaction Reports. Member, state, district, ticker, asset, buy/sell/partial, transaction and notification dates, and amount ranges with midpoints. Source: US House Clerk (public data). No API key.

- **URL**: https://apify.com/red.cars/congress-stock-trades-pro.md
- **Developed by:** [AutomateLab](https://apify.com/red.cars) (community)
- **Categories:** Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 trade rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Congress Stock Trades Pro (House PTRs)

Every STOCK Act Periodic Transaction Report (PTR) filed with the **US House Clerk** (disclosures-clerk.house.gov), parsed into clean transaction rows: member, state/district, asset with ticker, buy/sell, transaction date, notification date, official amount range **plus numeric min/max/midpoint**, description, filing ID, and a link to the original PDF.

No proxy. No API key. Reads the Clerk's public filing index directly - the primary source, not a repackaged dataset.

### Better than the incumbents

[johnvc/us-congress-financial-disclosures-and-stock-trading-data](https://apify.com/johnvc/us-congress-financial-disclosures-and-stock-trading-data) is the demand leader (38 monthly active users, 5.0 across 5 reviews, $1.63 per 1,000): strong product, but amounts stay as text ranges and no numeric midpoint. This actor reads the same official filings and adds: numeric `amountMin` / `amountMax` / `amountMidpoint` per row, office and district parsed out of the index row, per-transaction `description` (option strikes, share counts, partial-sale notes), and a hard `maxItems` cap so you never pay for rows you didn't ask for. Version 0.0 covers House PTRs; Senate eFD parsing is on the roadmap.

[scrapers_lat/us-house-financial-disclosures-scraper](https://apify.com/scrapers_lat/us-house-financial-disclosures-scraper) charges from $8.32 per 1,000 results for the same Clerk index (0.0 rating, 3 users) and makes transaction extraction opt-in. This actor parses transactions by default at roughly a fifth of that price.

### What one row looks like

```json
{
  "filingYear": 2026,
  "lastName": "Pelosi",
  "fullName": "Nancy Pelosi",
  "state": "CA",
  "district": "11",
  "docId": "20033725",
  "pdfUrl": "https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2026/20033725.pdf",
  "transaction": {
    "owner": "SP",
    "asset": "Alphabet Inc. - Class A Common Stock (GOOGL) [ST]",
    "ticker": "GOOGL",
    "assetTypeCode": "ST",
    "transactionType": "P",
    "partial": false,
    "transactionDate": "01/16/2026",
    "notificationDate": "01/16/2026",
    "amountMin": 500001,
    "amountMax": 1000000,
    "amountMidpoint": 750000.5,
    "description": "Exercised 50 call options purchased 1/14/25 (5,000 shares) at a strike price of $150 with an expiration date of 1/16/26."
  }
}
```

- `owner`: SP (self), JT (joint), DC (dependent child), SC/SU/JU (spouse/child variants as filed)
- `transactionType`: P (purchase), S (sale, `partial: true` for partial sales), E (exchange)
- `assetTypeCode`: ST stock, OP option, AB, GS, MF, FS, RE, IN, VL, CX, WN, TR and other Clerk codes

### Input

| Field | Type | Default | Notes |
| --- | --- | --- | --- |
| `filingYear` | integer | current year | Which Clerk filing-index year to read |
| `lastName` | string | empty | Case-insensitive member surname filter, e.g. `Pelosi` |
| `startDate` / `endDate` | string | empty | Optional YYYY-MM-DD filter on the transaction date |
| `maxItems` | integer | 1000 | Hard cap; the run stops at the cap so you don't pay for unrequested rows |
| `includeDetails` | boolean | true | Include description and filing status per row |

### Pricing

**$0.005 per run + $1.50 per 1,000 transaction rows.** No proxy, no residential fallback, no API key. Billed per row actually returned.

### How it works

1. Reads the House Clerk's public filing index for the chosen year (one POST, no login).
2. Filters PTR Original / PTR Amendment filings (annual disclosure reports are excluded).
3. Downloads each PTR PDF and extracts the transaction table, including multi-line asset names and split amount ranges.
4. Pushes one row per transaction, deduplicated within a filing.

A PDF that fails to parse is returned as a single filing-level row with a `parseError` note instead of being silently dropped, so you always know what you did and did not get.

### FAQ

**Is this the same data Capitol Trades or QuiverQuant shows?** The underlying source is the same: members' STOCK Act PTR filings. This actor reads the Clerk's own archive directly, so it can never lag behind a repackager's ingestion pipeline.

**Does it cover the Senate?** Not yet in version 0.0. The Senate eFD portal requires a separate search flow; Senate PTR parsing is on the roadmap. The House has the higher-profile traders and the largest PTR volume.

**Are amounts exact?** No - the STOCK Act requires reporting in ranges. `amountMidpoint` gives the range midpoint for sorting and aggregation; treat it as an estimate, not a fact.

**How fresh is the data?** As fresh as the Clerk's site. Every row links to the exact PDF it was parsed from (filing ID and URL included), so you can verify any row in one click.

**Is this legal advice or investment advice?** No. PTRs are delayed, self-reported filings. Use for research and transparency monitoring only.

# Actor input Schema

## `filingYear` (type: `integer`):

Calendar year of the House Clerk filing index to read. Defaults to the current year.

## `lastName` (type: `string`):

Optional case-insensitive member surname filter (e.g. Pelosi). Empty returns all members for the year.

## `startDate` (type: `string`):

Optional. Only keep transactions with transaction date on or after this date (YYYY-MM-DD).

## `endDate` (type: `string`):

Optional. Only keep transactions with transaction date on or before this date (YYYY-MM-DD).

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

Hard cap on transaction rows pushed. The run stops as soon as the cap is hit so you never pay for results you didn't ask for.

## `includeDetails` (type: `boolean`):

Set true to include the raw description text (e.g. option strike details) and filing status per row.

## Actor input object example

```json
{
  "filingYear": 2026,
  "lastName": "",
  "startDate": "",
  "endDate": "",
  "maxItems": 1000,
  "includeDetails": true
}
```

# Actor output Schema

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

Transaction rows: member name, state/district, owner code, asset with ticker and asset type, transaction type, transaction and notification dates, official amount range plus numeric min/max/midpoint, description, filing ID and PDF link.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("red.cars/congress-stock-trades-pro").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("red.cars/congress-stock-trades-pro").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 '{}' |
apify call red.cars/congress-stock-trades-pro --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,red.cars/congress-stock-trades-pro"
        }
    }
}
```

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/NMSnXXtY0wKmACufw/builds/CmhvJtEvCpOk0SQbf/openapi.json
