Skip to content

Congress Stock Trades Scraper

Try for free

Scrape US Congress stock trades from House and Senate Periodic Transaction Reports: member, party, ticker, asset, purchase/sale, amount range, trade and disclosure dates, owner and report link.

🏛️ Congress Stock Trades Scraper

Get every stock trade that US senators and representatives disclose under the STOCK Act, straight from the official House and Senate Periodic Transaction Reports. One clean row per transaction: member, party, state, ticker, asset, purchase or sale, amount range, trade date, disclosure date, owner and a link to the original report. No login, no API key.

✨ Why use Congress Stock Trades Scraper?

  • 🏛️ Both chambers — House reports (disclosures-clerk.house.gov PDFs) and Senate reports (efdsearch.senate.gov) in one dataset with the same fields.
  • ⚡ Always fresh — reads the official sources live on every run, so trades filed this morning are included. No stale third-party database.
  • 🎯 Precise filters — member names, tickers, transaction date range, disclosure date range, chamber and purchase/sale/exchange.
  • 🧾 Rich rows — party, state, district and Bioguide ID, numeric amount bounds, days between trade and disclosure, option and bond details, filing status and comments.
  • 🖨️ Honest about paper filings — handwritten or scanned reports are flagged (isScanned) with a link instead of being silently dropped, and they are free.
  • 💸 Pay per transaction — you only pay for parsed transactions.

🎯 Use cases

  • 📰 Journalism — spot trades made right before hearings, votes or big news.
  • 📈 Trading signals — follow purchases of specific tickers (NVDA, MSFT, ...) by members of Congress.
  • 🛡️ Compliance and research — measure late disclosures with daysToDisclose, map holdings against committee work.
  • 🔔 Daily monitoring — schedule a run with Disclosed from = 1 day and push new trades to Slack, a sheet or your database.
  • 📊 Dashboards — power "who traded what, when" widgets for civic transparency sites.

🚀 How to use

  1. Leave the input empty to get the newest disclosed trades from both chambers, or add member names (e.g. Pelosi, Tuberville) and/or tickers (e.g. NVDA).
  2. Optionally set a transaction or disclosure date range, a chamber and transaction types.
  3. Set Max transactions (0 = no limit) and click Start.
  4. Download the results as JSON, CSV or Excel, or read them through the API.

📥 Input

FieldDescription
membersMember names, partial names allowed (Pelosi, Nancy Pelosi, Tuberville).
tickersOnly trades in these tickers (NVDA, AAPL, BRK.B).
maxResultsHard cap on saved rows for the whole run (default 20, 0 = no limit): transactions plus free scanned-report rows count toward it. Newest disclosures first.
chamberboth (default), house or senate.
dateFrom / dateToTransaction date range (2025-01-01 or relative like 90 days).
filedFrom / filedToDisclosure (filing) date range of the report.
transactionTypespurchase, sale, exchange.
includeScannedReportsList scanned paper reports once each, free (default on).
includeMemberDetailsAdd party, state, district and Bioguide ID (default on).
{
  "members": ["Pelosi"],
  "tickers": ["NVDA", "AAPL"],
  "dateFrom": "2025-01-01",
  "chamber": "both",
  "transactionTypes": ["purchase"],
  "maxResults": 100
}

📤 Output

FieldDescription
memberName, firstName, lastNameMember of Congress who filed the report
chamber, party, partyCode, state, district, bioguideIdChamber, party and seat (party for current members)
ticker, assetName, assetType, assetTypeNameWhat was traded (House asset codes such as ST, OP, GS are spelled out)
transactionType, transactionTypeCodePurchase, Sale, Sale (Partial), Sale (Full), Exchange
transactionDate, notificationDate, disclosureDate, daysToDiscloseWhen it was traded, when the member was notified (House), when it was disclosed
amountRange, amountMin, amountMaxValue range as disclosed and as numbers
owner, ownerCodeSelf, Spouse, Joint, Dependent Child
description, comment, filingStatus, subholdingOf, capitalGainsOver200Extra details from the report (option strikes, bond coupons, amendments)
reportId, reportUrl, reportTitle, isScanned, parseStatusThe source report

Example (fictional member):

{
  "chamber": "House",
  "memberName": "Alex Rivera",
  "firstName": "Alex",
  "lastName": "Rivera",
  "party": "Democrat",
  "partyCode": "D",
  "state": "CA",
  "district": 99,
  "stateDistrict": "CA99",
  "ticker": "NVDA",
  "assetName": "NVIDIA Corporation - Common Stock",
  "assetType": "ST",
  "assetTypeName": "Stocks (including ADRs)",
  "transactionType": "Purchase",
  "transactionTypeCode": "P",
  "transactionDate": "2026-09-18",
  "notificationDate": "2026-09-19",
  "disclosureDate": "2026-10-14",
  "daysToDisclose": 26,
  "amountRange": "$15,001 - $50,000",
  "amountMin": 15001,
  "amountMax": 50000,
  "owner": "Spouse",
  "ownerCode": "SP",
  "description": "Purchased 200 shares.",
  "filingStatus": "New",
  "subholdingOf": "Example Brokerage Account",
  "reportId": "20099999",
  "reportUrl": "https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2026/20099999.pdf",
  "isScanned": false,
  "parseStatus": "parsed"
}

💰 Pricing

$1.50 per 1,000 transactions ($0.0015 each), plus a small amount of platform usage (compute and datacenter proxy). Example: 1,000 transactions ≈ $1.50 in transaction fees plus about a cent of usage. Scanned paper reports listed with isScanned: true are not charged.

❓ FAQ

Is it legal? Yes. Periodic Transaction Reports are public records published by the Clerk of the House and the Secretary of the Senate. Respect the Senate site's terms: the data may not be used for commercial purposes like credit ratings or soliciting money, except by news and communications media.

Do I need a login or proxy? No login. The default datacenter proxy works for both sites.

How far back does it go? House reports from 2008 and Senate reports from 2012, as far as the sources publish electronic reports.

Why are some reports marked isScanned? Some members file handwritten or scanned paper reports. Their trades exist only as an image, so there is no text to parse. The row gives you the member, the disclosure date and the PDF/page link.

Why is a field empty? The reports don't always contain it: Senate reports have no notification date or House asset codes, many assets (bonds, funds, private companies) have no ticker, and party is filled for current members only.

Can I schedule it or use the API? Yes. Schedule daily runs with Disclosed from set to 1 day or 7 days, and read the dataset over the API or through integrations.

⚠️ Limits

  • Scanned paper filings are listed but not transcribed (no OCR).
  • A ticker or transaction-type search has to open every report in the date range, so wide ranges take longer (a ticker search over one quarter of trades opened about 500 reports in under 2 minutes).
  • Trades filed more than 180 days after dateTo are only found if you widen filedTo.
  • Annual financial disclosures (holdings) are not covered, only periodic transaction reports.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.