Congress Stock Trades API: US House STOCK Act since 2014
Pricing
from $1.80 / 1,000 house member trades
Congress Stock Trades API: US House STOCK Act since 2014
Congress stock trades: stock, option, fund and bond trades that US House members disclose in STOCK Act Periodic Transaction Reports, from the Clerk's official filings since 2014 (no Senate). Each row: ticker, amount range, owner, disclosure delay. Filter by member, ticker, type, amount, date.
Pricing
from $1.80 / 1,000 house member trades
Rating
0.0
(0)
Developer
Bosco Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 minutes ago
Last modified
Share
Get congress stock trades: every stock, option, fund and bond trade that members of the US House of Representatives disclose in their Periodic Transaction Reports (PTRs) under the STOCK Act, one clean row per transaction: member, state/district, filing date, trade date, days to disclose, owner (self, spouse, joint, child), ticker, asset type, purchase/sale/exchange and the amount range as numbers. Straight from the official filings of the Clerk of the House, with a link to the PTR PDF on every row. Pricing: $1.80 per 1,000 trades ($0.0018 per trade), no start fee. You only pay for trades delivered, and the Actor stops at your max charge limit.
History goes back to the first online PTRs in January 2014. The Clerk publishes one index per year; the Actor reads the index, downloads each online PTR PDF and parses its transaction table. No logins, no third-party copies.
What you get
One row per transaction. Real output from Nancy Pelosi's PTR of 24 October 2025:
{"schema_version": "1","transaction_id": "20033337-1","member_name": "Nancy Pelosi","first_name": "Nancy","last_name": "Pelosi","state_district": "CA11","state": "CA","filing_date": "2025-10-24","transaction_date": "2025-10-22","notification_date": "2025-10-22","days_to_disclose": 2,"owner": "SP","ticker": "AAPL","asset_description": "Apple Inc. - Common Stock (AAPL) [ST]","asset_type": "stock","asset_type_code": "ST","option_type": null,"transaction_type": "sale","is_partial": true,"amount_min": 100001,"amount_max": 250000,"amount_text": "$100,001 - $250,000","is_amendment": false,"doc_id": "20033337","pdf_url": "https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2025/20033337.pdf","source_url": "https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2025/20033337.pdf","retrieved_at": "2026-11-05T16:38:21+00:00"}
| Field | Meaning |
|---|---|
member_name, first_name, last_name | As listed in the Clerk's index |
state_district, state | e.g. CA11, CA |
filing_date | When the PTR was filed, i.e. when the trade became public |
transaction_date, notification_date | Trade date and the date the member was notified |
days_to_disclose | filing_date - transaction_date in days (the STOCK Act asks for 30 days after notification, 45 at most after the trade) |
owner | SP spouse, JT joint, DC dependent child, null the member |
ticker | Only when the filing gives it in parentheses, upper-cased; otherwise null |
asset_description, asset_type_code | Asset as filed, and the Clerk's code (ST, OP, EF, GS, ...) |
asset_type | stock, option, fund, bond or other (from the code) |
option_type | call or put for options |
transaction_type, is_partial | purchase, sale (full or partial) or exchange |
amount_min, amount_max, amount_text | The reported range, e.g. 15001 / 50000 / $15,001 - $50,000; both equal the value when a filer reports an exact amount; amount_max is null for "Over" ranges |
is_amendment | The transaction was filed as an amendment |
doc_id, transaction_id, pdf_url, source_url | The filing, a stable row id, and the PDF |
schema_version, retrieved_at | Output version and fetch time (UTC) |
Input
{ "members": ["Pelosi"], "years": ["2024", "2025"], "transactionTypes": ["purchase"], "maxResults": 500 }
| Field | Meaning |
|---|---|
members | Name contains, e.g. "Pelosi", "Josh Gottheimer". Empty = all members |
tickers | Only these tickers, e.g. ["NVDA", "MSFT"] |
transactionTypes | purchase, sale, exchange. Default all |
filedFrom / filedTo | Filing date range. Default: the last 30 days, or the last 365 days when you set members (unless you set years) |
years | Whole filing years for history, e.g. ["2020"] |
minAmountUsd | Lower bound of the range at least this, e.g. 15001, 1000001 |
maxResults | Max trades, newest filings first. Default 100 |
onlyNewSinceLastRun | For schedules: skip trades you already received with the same filters |
Running without input returns up to 100 trades filed in the last 30 days. A run also stores a
SUMMARY record in its key-value store: trades delivered, and the URLs of paper PTRs it skipped.
Use cases
- Journalism and research: who traded what, and how late it was disclosed
(
days_to_disclose), across all members since 2014. - Transparency and watchdog tools: a member's full trading history in one call.
- Alerts: schedule the Actor daily with
onlyNewSinceLastRunand send new filings to Slack, email or a spreadsheet; you only pay for new trades. - Data pipelines: export to CSV, Excel, Google Sheets or your warehouse via the Apify API.
Use with AI agents (MCP)
Agents can call this Actor as a tool through the Apify MCP server. Add this server URL to your MCP client (Claude, Cursor, VS Code, ...):
https://mcp.apify.com?tools=bosco_labs/us-house-trades
It loads this Actor as a tool, plus the tools that read its results (get-actor-run,
get-dataset-items). The hosted server signs you in with OAuth, or accepts your Apify token as
Authorization: Bearer <APIFY_TOKEN>. On the default server (https://mcp.apify.com), agents
can also find this Actor with search-actors and run it with call-actor.
Example prompts this Actor answers:
- "Which options did Nancy Pelosi's household trade in 2025, and how many days after the trade were they disclosed?"
- "Which House members disclosed NVDA trades in the last 30 days?"
- "List House trades over $1 million filed in 2024."
For the first one, the agent passes:
{"members": ["Pelosi"], "years": ["2025"]}
Output for agents: stable, typed JSON, one row per transaction. Every row has schema_version and a source_url pointing to the PTR PDF on the Clerk's site, so the agent can cite its source. House only: Senate trades are not included.
Cost: $0.0018 per trade, billed to the Apify account the MCP server is signed in with.
FAQ
Which filings are covered? Periodic Transaction Reports of House members filed online, from January 2014 to the latest update of the Clerk's index. Annual financial disclosure reports and the Senate are not included.
What about paper filings? Some PTRs are scanned paper forms (about 12% in 2026, more than
half in 2014). They have no text, so they are skipped rather than guessed; the run log and the
SUMMARY record list their PDF links so you can read them yourself.
Why is the ticker empty? The ticker is taken only from the filing, when the member wrote it in parentheses. Bonds, Treasury bills, private funds and many older filings have none. Nothing is looked up or guessed.
Why is asset_type empty on old rows? Filings before about 2018 carry no asset type code.
Options are still recognised from their description; other rows stay null.
Amendments? is_amendment is true when the transaction was filed as an amendment. Its
filing_date is the amendment's date, not when the trade first became public, so
days_to_disclose overstates the delay for those rows.
Why upper/lower case oddities? Some older PDFs garble the case of the asset text (e.g.
(bAbA)). asset_description is kept as filed; ticker is upper-cased.
How fresh? As fresh as the Clerk's yearly index, which is regenerated regularly: the copy fetched on 2026-11-05 was dated 2026-11-04 and listed filings up to 2026-11-03.
Is this trading advice? No. This is a copy of public disclosures, with ranges instead of exact amounts and trades that become public weeks after they happen.
Legal? These are public disclosures published by the Clerk under the STOCK Act. Users are responsible for complying with applicable law on the use of these disclosures, including 5 U.S.C. 13107.