
Congress Stock Trades Scraper
hipersoft/congress-trades-scraper
Scrape U.S. Congress members' stock trades & financial disclosures: member, ticker, buy/sell, amount range and dates. One clean row per trade or filing as JSON, CSV or Excel.
Total users
1Monthly users
0Total runs
62Per item scraped
$0.003Last rebuilt
Oct 26, 2026Overview
Track U.S. Congress members' stock trades and financial disclosures and export clean, structured data. Get one tidy row per trade — member, ticker, buy or sell, amount range, and dates — or one row per filing, as JSON, CSV or Excel.
Perfect for investors, journalists, researchers, fintech builders and anyone who wants to follow congressional trading activity without copy-pasting from documents.
What you can scrape
- Individual trades — every reported stock transaction: the member who traded, the asset and its ticker, whether it was a purchase, sale or exchange, the disclosed amount range, the transaction date and the notification date.
- Disclosure filings — the full index of financial-disclosure filings: member, state and district, filing type, filing date and a direct link to the source document.
- Filter by member — narrow any run to a single representative by last name.
- Multiple years — pull one year or several in a single run.
Modes
Pick a mode in the input:
| Mode | What it does |
|---|---|
transactions |
One row per individual trade, with member, ticker, buy/sell, amount range and dates. |
filings |
One row per disclosure filing from the index (faster, no per-trade breakdown). |
Example input
Latest congressional stock trades:
{
"mode": "transactions",
"years": [2025],
"maxItems": 200
}
Every filing for one member:
{
"mode": "filings",
"years": [2025],
"member": "Greene",
"filingTypes": ["all"]
}
Example output (a single trade)
{
"memberName": "Hon. Marjorie Taylor Greene",
"state": "GA",
"district": "14",
"filingTypeLabel": "Periodic Transaction Report",
"filingDate": "2/24/2025",
"docId": "20026791",
"owner": null,
"assetName": "Apple Inc. - Common Stock",
"ticker": "AAPL",
"assetTypeCode": "ST",
"transactionType": "Purchase",
"transactionDate": "02/12/2025",
"notificationDate": "02/13/2025",
"amountRange": "$1,001 - $15,000",
"amountMin": 1001,
"amountMax": 15000,
"capitalGainsOver200": null,
"pdfUrl": "https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2025/20026791.pdf"
}
Input reference
| Field | Type | Description |
|---|---|---|
mode |
string | transactions (one row per trade) or filings (one row per disclosure). |
years |
array | Which disclosure years to collect, e.g. [2025] or [2025, 2024]. |
filingTypes |
array | Filing types to include. ["P"] = the stock-trade reports (default). Use ["all"] for every type. |
member |
string | Optional. Only include filings whose member last name contains this text. |
maxItems |
integer | Max rows to collect (0 = no limit). |
Output & export
Every run writes to a dataset you can download as JSON, CSV, Excel, XML or RSS, or pull through the Apify API. Each row is flat and typed, includes the member and a link to the underlying document, and numeric amountMin / amountMax fields make the disclosed value ranges easy to sort and filter.
Use cases
- Investing signals — watch what senators and representatives are buying and selling.
- Newsrooms — surface notable trades by member, ticker or date for reporting.
- Research & compliance — build datasets on congressional trading trends over time.
- Alerts & dashboards — feed a spreadsheet, database or BI tool on a schedule.
FAQ
What data do I get? Individual congressional stock trades (member, ticker, buy/sell, amount range, dates) or the full list of disclosure filings.
Can I follow one member? Yes — set member to their last name.
Can I collect several years at once? Yes — list them in years.
What formats can I export? JSON, CSV, Excel, XML and RSS, plus the Apify API and integrations.
How do I limit results? Set maxItems. Use 0 to collect everything the run returns.
Input
| Field | Type | Description |
|---|---|---|
modeWhat to collect | string · transactions, filings | transactions = one row per individual stock trade (parsed from Periodic Transaction Reports). filings = one row per disclosure filing from the index (faster, no trade breakdown). Default: "transactions" |
yearsYears | array | Which disclosure years to collect (e.g. 2025, 2024). Default: [2025] |
filingTypesFiling types | array | Which filing types to include. "P" = Periodic Transaction Reports (the stock trades). Use ["all"] to include every filing type. Default: ["P"] |
memberMember last name (optional) | string | Only include filings whose member last name contains this text (case-insensitive). Leave empty for all members. |
maxItemsMax items | integer | Maximum number of rows to collect in this run (0 = no limit). Default: 200 |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~congress-trades-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"years": [
"2025"
],
"filingTypes": [
"P"
]
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/congress-trades-scraper").call(run_input={
"years": [
"2025"
],
"filingTypes": [
"P"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/congress-trades-scraper').call({
"years": [
"2025"
],
"filingTypes": [
"P"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Item scraped Charged for each trade or filing row added to your dataset. | $0.003 | $0.0015 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Google Autocomplete Keyword Scraper
Generate long-tail keyword ideas from Google Autocomplete: alphabet-soup, question and preposition expansions with relevance scores. Fast SEO keyword research, per country and language. Clean, no setup.
118 runs · 7 users · $0.0013 / keyword scrapedESPN Sports Scraper
Scrape live and past scores, teams, standings and news across NBA, NFL, MLB, NHL, EPL, La Liga and more via ESPN's public data. For sports analytics, betting and fantasy. No setup.
111 runs · 1 users · $0.001 / item scrapedStockTwits Scraper
Scrape StockTwits messages and retail Bullish/Bearish sentiment for any ticker in bulk (stocks, ETFs, crypto, forex). One row per message with body, author, timestamp, sentiment, likes and replies. Fast, reliable and account-free.
73 runs · 2 users · $0.0008 / message scrapedJWT Decoder & Verifier
Decode JWT header and payload, and optionally verify the signature and expiry against a secret or JWKS. Debug and audit auth tokens in bulk.
70 runs · 2 users · $0.001 / jwt processedExchange Rates Scraper
Fetch live and historical foreign-exchange rates published by the European Central Bank: any base currency, any target symbols, plus full time series over a date range. Clean structured JSON, CSV or Excel for finance, invoicing, dashboards and n8n.
64 runs · 2 users · $0.0005 / rate scrapedForexFactory Economic Calendar Scraper
Scrape the ForexFactory economic calendar — every high, medium and low-impact macro event with its release time, forecast, previous and actual values. Pull this week, this month, today or tomorrow, filter by impact or currency, and export clean rows as JSON, CSV or Excel.
50 runs · 2 users · $0.003 / event scrapedSend the site and the fields. We build it and you get it first.