# US House Financial Disclosures & Congress Stock Trades (PTR) (`scrapers_lat/us-house-financial-disclosures-scraper`) Actor

Scrape official US House financial disclosures: annual filings and Periodic Transaction Reports (PTR) of member stock trades, with a PDF link per filing and opt-in transaction extraction. Filter by year, member, state or PTR only.

- **URL**: https://apify.com/scrapers\_lat/us-house-financial-disclosures-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.32 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![US House Financial Disclosures & Congress Stock Trades (PTR)](https://scrapers.lat/banners/us-house-financial-disclosures-scraper.png)](https://apify.com/scrapers_lat/us-house-financial-disclosures-scraper)

## US House Financial Disclosures & Congress Stock Trades (PTR) Scraper

Pull the official **US House of Representatives financial disclosures** straight from the House Clerk's public filing index: annual Financial Disclosure reports **and** Periodic Transaction Reports (PTR), the filings where members of Congress report their stock and bond trades. Every row links to the original filing PDF, and an opt-in add-on best-effort extracts the individual reported transactions (asset, ticker, buy or sell, dates, amount range).

Unlike "Congress stock trades" repackagers, this actor reads the **authoritative primary source** (disclosures-clerk.house.gov), so you get the raw filing index with a direct PDF link for every record and full control over the year range, member, state and filing type.

### What you get

- One clean record per filing: member name, state, district, filing type and label, year, filing date, and a direct link to the official PDF.
- A dedicated **PTR only** switch for a pure "Congress stock trades" feed.
- Opt-in **transaction extraction** from PTR PDFs: asset name, ticker, owner (self, spouse, joint), transaction type, transaction and notification dates, and the reported amount range.
- Opt-in **AI trade summary** of a PTR: net buying or selling, notable tickers, sector focus, and a short plain-English summary.
- Filter by year (or a year range), member name, state, or filing type code.

### Example output

```json
{
  "docId": "20033589",
  "memberName": "Hon. Richard W. Allen",
  "firstName": "Richard W.",
  "lastName": "Allen",
  "state": "GA",
  "district": "12",
  "filingType": "P",
  "filingTypeLabel": "Periodic Transaction Report (PTR)",
  "year": "2025",
  "filingDate": "12/9/2025",
  "isPtr": true,
  "pdfUrl": "https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2025/20033589.pdf",
  "transactions": [
    {
      "owner": null,
      "asset": "US TREASUR NOTE 3.75% DUE 08/15/27 (91282CLG4) [GS]",
      "ticker": null,
      "assetType": "GS",
      "transactionType": "Purchase",
      "partial": false,
      "transactionDate": "11/14/2025",
      "notificationDate": "12/05/2025",
      "amount": "$50,001 - $100,000"
    }
  ],
  "transactionCount": 1,
  "aiNetDirection": "net buying",
  "aiNotableTickers": [],
  "aiSectorFocus": "Government Bonds",
  "aiSummary": "Hon. Richard W. Allen made a purchase of US Treasury Notes, indicating a focus on government securities. The transaction reflects a net buying position in fixed-income investments.",
  "source": "US House Clerk",
  "observedAt": "2026-08-17T02:31:21.955Z",
  "error": null
}
```

### Input

| Field | Type | Description |
|-------|------|-------------|
| `year` | integer | Disclosure year to pull (one index per calendar year). Defaults to the current year. |
| `yearFrom` | integer | Optional. Start of a year range (inclusive). |
| `yearTo` | integer | Optional. End of a year range (inclusive). |
| `ptrOnly` | boolean | Keep only Periodic Transaction Reports (the stock-trade filings). |
| `filingType` | string | Optional. One filing type code: O = Original FD, P = PTR, A = Amendment, C = Candidate, D = Termination, W = Withdrawal, X = Extension. |
| `memberName` | string | Optional. Keep only filings whose first or last name contains this text. |
| `state` | string | Optional. Two-letter state code, for example CA, TX, NY. |
| `maxResults` | integer | Maximum filings to return. Free Apify plans are capped at 10 per run. |
| `includeTransactions` | boolean | Paid add-on. Extract the reported trades from PTR PDFs. |
| `withAiSummary` | boolean | Paid add-on. AI summary of a PTR's trades (requires transaction extraction). |

### Output fields

| Field | Description |
|-------|-------------|
| `docId` | House Clerk document ID for the filing. |
| `memberName` | Full name of the filer (prefix, first, last, suffix). |
| `firstName`, `lastName` | Parsed name parts. |
| `state`, `district` | Two-letter state and district number. |
| `filingType` | Raw filing type code. |
| `filingTypeLabel` | Human-readable filing type. |
| `year`, `filingDate` | Disclosure year and the date the filing was submitted. |
| `isPtr` | True when the filing is a Periodic Transaction Report. |
| `pdfUrl` | Direct link to the official filing PDF. |
| `transactions` | Array of extracted PTR trades (add-on). Null when not requested or not extractable. |
| `transactionCount` | Number of transactions extracted. |
| `aiNetDirection`, `aiNotableTickers`, `aiSectorFocus`, `aiSummary` | AI trade summary fields (add-on). |
| `source`, `observedAt` | Provenance and capture timestamp. |
| `error` | Populated only if the index could not be read. |

### Use cases

- **Congress stock trades**: build a feed of member PTR filings and the tickers they buy and sell, the same raw data behind popular political-finance trackers.
- **Political finance and trading signals**: monitor new PTRs by member or state and turn reported trades into watchlists or alerts.
- **Compliance and ethics monitoring**: track STOCK Act disclosures, late filings, and members with active brokerage activity.
- **Journalism and research**: pull every disclosure PDF for a member or a year for investigations and data stories.
- **Academic and NGO analysis**: study conflict-of-interest patterns across the House with a clean, structured dataset.

### Billing

This actor uses pay-per-event pricing:

| Event | Price (USD) | When charged |
|-------|-------------|--------------|
| `result` | $0.008 | One filing index record in the dataset. |
| `transactions` | $0.008 | Only when at least one transaction is extracted from a PTR PDF. |
| `ai_summary` | $0.012 | Only when the AI returns a usable trade summary. |

Free Apify plans are capped at 10 filings per run, and the paid add-ons are disabled for free plans.

### Honest note on transaction extraction

Transaction extraction is **best-effort** and works on **text-layer PDFs only**. Modern e-filed PTRs carry a text layer and parse cleanly with asset names, tickers, dates and amounts. Older or **scanned** PTRs have no text layer, so no transactions can be extracted from them. In that case the actor extracts nothing and does **not** charge the `transactions` or `ai_summary` events for that filing. You always still get the base filing record with the direct PDF link, so you can open the original document yourself.

### Data source

All data comes from the public US House of Representatives financial disclosure index published by the Clerk of the House at disclosures-clerk.house.gov. This actor reads only publicly available filings.

# Actor input Schema

## `year` (type: `integer`):

Disclosure year to pull (the House Clerk publishes one index per calendar year). Use yearFrom/yearTo for a range. Defaults to the current year.

## `yearFrom` (type: `integer`):

Optional. Start of a year range (inclusive). Overrides 'year' when set together with Year to.

## `yearTo` (type: `integer`):

Optional. End of a year range (inclusive).

## `ptrOnly` (type: `boolean`):

Keep only Periodic Transaction Reports (PTR) - the filings where members report individual stock and bond trades. Turn this on for a 'Congress stock trades' feed.

## `filingType` (type: `string`):

Optional. Keep only one filing type by its code: O = Original FD, P = PTR, A = Amendment, C = Candidate, D = Termination, W = Withdrawal, X = Extension. Ignored when 'PTR only' is on.

## `memberName` (type: `string`):

Optional. Keep only filings whose first or last name contains this text, for example 'Pelosi' or 'greene'.

## `state` (type: `string`):

Optional. Two-letter state code to keep only members from that state, for example CA, TX or NY.

## `maxResults` (type: `integer`):

Maximum number of filing records to return. Free Apify plans are capped at 10 per run.

## `includeTransactions` (type: `boolean`):

Opt-in. For PTR filings, download the PDF and best-effort extract the reported trades (asset, ticker, owner, buy/sell, dates, amount range). Works only on text-layer (e-filed) PDFs; older scanned PDFs return nothing and are not charged. Disabled on free plans.

## `withAiSummary` (type: `boolean`):

Opt-in. For PTRs where transactions were extracted, generate an AI summary of the trades (net direction, notable tickers, sector focus). Requires 'Extract PTR transactions'. Disabled on free plans.

## Actor input object example

```json
{
  "year": 2025,
  "ptrOnly": false,
  "maxResults": 50,
  "includeTransactions": false,
  "withAiSummary": 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 = {
    "year": 2025,
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/us-house-financial-disclosures-scraper").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 = {
    "year": 2025,
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/us-house-financial-disclosures-scraper").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 '{
  "year": 2025,
  "maxResults": 50
}' |
apify call scrapers_lat/us-house-financial-disclosures-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/us-house-financial-disclosures-scraper"
        }
    }
}

```

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/xUmp4BILXasqMU2NS/builds/pJdPm3W3B2HeLmZQZ/openapi.json
