Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Congress Stock Trades Scraper icon

Congress Stock Trades Scraper

Stock trades members of Congress report, read from the official House and Senate filings: ticker, purchase or sale, dates, amount range and filing link.

30 runs on Apify $0.00065 per trade ($0.65 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust lastDays, disclosedFrom, disclosedTo (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.00065 per trade = $0.65 per 1,000

You are charged forWhenPrice
Trade returnedOne congressional stock trade returned in the dataset. Paper filings are not charged.$0.00065

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-14, and they are what you are actually charged.

Inputs

FieldWhat it doesType
lastDaysFilings disclosed in the last N days, today included. 7 means this week's filings, which suits a daily or weekly schedule. Used when Disclosed from is empty.integer
disclosedFromThe first day a filing was disclosed, as YYYY-MM-DD. Periodic transaction reports start in 2012. Leave it empty to use Last days instead.string
disclosedToThe last day. Leave it empty to run up to today.string
chamberWhich chamber's filings to read.string
membersNames, whole or in part: Pelosi, Nancy Pelosi, Tuberville. A filing matches when the member's name holds every word of one of these. Leave it empty for everyone.array
statesMembers from these states. The House also has delegates for DC and the territories. Leave it empty for every state.array
districtsSeats written like CA11 or NY14. An at-large seat is 00, as in AK00. Senators have no district, so giving one reads House filings only.array
tradedFromOnly trades made on or after this day. Members have up to 45 days to disclose a trade, so a trade from last month can sit in a filing disclosed this week.string
tradedToOnly trades made on or before this day.string
tickersOnly these tickers, such as NVDA or BRK.B. Many rows have no ticker at all (bonds, private companies, funds held in an account), and those never match.array
transactionTypesLeave it empty for all four.array
minAmountFilings give an amount range, not a figure. This keeps trades whose range starts at or above the one you pick.string
assetTypesEach row's category comes from how the member filed it. The Senate files most ETFs under Stock, for instance, so ETF finds mostly House rows.array
ownersWhose holding the trade was in. Leave it empty for all.array
includePaperFilingsSome members still file on paper. Those filings are scans, so their trades aren't read; each one comes back as a single row with its link, and none of them is charged. The trade filters above can't see inside them.boolean
maxTradesThe most trades returned in one run, newest filings first. Each trade returned is one charge.integer

What you get

A structured dataset — each result includes fields like:

memberNamechamberstatedistrictownertickerassetNametransactionTypetransactionDatedisclosureDateamountRangepaperFilingreportUrl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Congress Stock Trades Scraper

The stock trades members of Congress report in their Periodic Transaction Reports, one row per trade. Each row has the member, their chamber, state and district, whose account it was, the asset and its ticker, the kind of trade, the day it was made and the day it was disclosed, the amount range, and a link to the filing it came from.

It reads the two official sources and nothing else: the House Clerk's financial disclosure site and the Senate's eFD search. There's no API key to get and no account to open.

The law on these reports

Federal law, 5 U.S.C. § 13107, makes it unlawful to obtain or use these reports for any commercial purpose other than by news and communications media for dissemination to the general public. It also rules out using them to set anyone's credit rating, or to ask people for money for a political, charitable or other cause. The Attorney General can sue over it, and a court can add a penalty of up to $10,000.

The Senate site asks every visitor to confirm they understand those rules before it shows a single report. This actor gives that confirmation when it opens the site for you. Whether your use is allowed is your decision to make, with a lawyer if you're unsure.

What it doesn't do

  • Paper filings aren't read. Some members still file on paper, and those filings are scanned forms. Each one comes back as a single row with paperFiling set to true and a link to the scan. None of them is charged, and the trade filters can't see inside them.
  • Mostly ranges, not amounts. Members report a range, such as $1,001 - $15,000, and you get it with both ends as numbers too. Now and then a member writes an exact figure instead, like $2,722.50, and then both ends are that figure.
  • House filings start in 2015. The Clerk's yearly lists hold no periodic transaction reports before then. The Senate's search goes back to 2012.
  • Older House filings mix up capital letters. In House filings from 2015 to 2021 the text itself reads "apple Inc." for Apple Inc. and "(TsLa)" for TSLA. Tickers are put back in capitals. Names are left the way the filing's text has them.
  • Categories follow the filing. The Senate files most ETFs as plain Stock, so an ETF filter finds mostly House trades. A trade with no ticker (a bond, a private company, a fund inside an account) never matches a ticker filter.
  • Amended trades come back twice. When a member amends a filing, the amendment repeats its trades. You get both copies, and filingStatus tells them apart.
  • No prices or returns. Only what the filings say.

Input

Last days. Filings disclosed in the last few days, today included. Set it to 7 on a weekly schedule, or 2 on a daily one so a late filing isn't missed.

Disclosed from, Disclosed to. A range of disclosure dates instead, written like 2026-08-01. Leave the end empty to run up to today.

Chamber. House and Senate together, or just one.

Members. Names, whole or in part: Pelosi, Nancy Pelosi, Tuberville. A filing matches when the member's name contains every word you typed.

States, House districts. Two-letter states, and House seats written like CA11. An at-large seat is 00, as in AK00. A district only exists in the House, so setting one leaves the Senate out.

Traded from, Traded to. The day the trade was made, which is usually weeks before it's disclosed. Members have 30 days from being told about a trade, and never more than 45 days from the trade itself, to report it.

Tickers, Transaction types, Minimum amount, Asset types, Owners. Narrow the trades down. The minimum amount keeps trades whose range starts at or above the one you pick.

List paper filings. On unless you switch it off.

Maximum trades. 1,000 unless you change it, up to 50,000, newest filings first.

{
  "lastDays": 30,
  "chamber": "both",
  "tickers": ["NVDA", "MSFT"],
  "transactionTypes": ["purchase"],
  "minAmount": "15001",
  "maxTrades": 500
}

Output

One row per trade, newest filing first, in the order each filing lists its trades.

FieldExampleNotes
memberNameKevin Hernas the chamber's own list writes it
chamberHouseor Senate
state, districtOK, 01district is empty for senators; 00 is an at-large seat
ownerJointSelf, Spouse, Joint or Dependent child
tickerADBEempty for bonds, private companies and anything filed without one; an exchange can carry two, as OLD/NEW
assetNameAdobe Inc. - Common Stock
assetTypeStocks (including ADRs)the filing's own words; the Senate writes them out (Municipal Security)
assetCategorystockone of the nine the Asset types filter uses
transactionTypePartial salePurchase, Sale, Partial sale or Exchange
transactionDate2026-08-14the day of the trade
notificationDate2026-08-27House only: the day the member learned of it
disclosureDate2026-09-01the day the filing was received
amountRange$15,001 - $50,000as filed
amountMin, amountMax15001, 50000amountMax is empty for "Over" ranges; an exact figure fills both
capitalGainsOver200falsethe House form's "Cap. Gains > $200?" box; empty for the Senate and for House filings from 2015 to 2017, which have no box
commentthe Senate's comment column
descriptionPurchased 100 call options with a strike price of $100 and an expiration date of 6/17/27.the House's description line, or the Senate's details under the asset (coupon, maturity, company)
subholdingOfHern Family FoundationHouse only: the account or trust that holds the asset
filingStatusNewHouse: New or Amended for each trade; Senate: New or the amendment number
paperFiling, notefalsetrue on the one row a paper filing gets
reportId, reportUrl20035326, the PDFthe filing itself, to check any row against

The run also leaves a report, RUN_REPORT, in its key-value store: how many filings each chamber listed and matched, which ones were read, trades your filters left out, and why the run stopped.

What you pay

Each trade in your dataset is one charge. Nothing else costs anything: not a paper filing, not a trade your filters leave out, not a filing that couldn't be read, not the sample row you get when no dates are set. If you set a maximum charge for the run, it stops when that's reached. The price is on the Pricing tab.

Limits

  • 50,000 trades and 3,000 filings per run, newest filings first. A run that reaches either stops and says where.
  • It reads one House file every half second and one Senate page a second, so a long range takes a while.
  • A filing is only used after it has been checked against the list that pointed to it: the House PDF must carry the same filing number and the member's name, and a Senate page must name the member and hold as many trades as it says it has. A filing that fails is listed in the run report and not charged.

Where the data comes from

The House Clerk's financial disclosure reports (disclosures-clerk.house.gov), through its yearly list of filings, and the Senate's Electronic Financial Disclosure search (efdsearch.senate.gov). Every row links to the filing it was read from.

Questions

Can I get new trades every morning? Schedule the actor with Last days set to 2. Filings arrive through the day, so a two-day window catches the ones that came in after yesterday's run.

Why was this trade made weeks before it was disclosed? That's normal. The law gives members up to 45 days from the trade.

Why do some rows have no trade in them? Those are paper filings, marked paperFiling. Open reportUrl to see the scan.

Is a missing trade my fault or the filing's? Check the filing's own link first. If the trade is there and not in your data, RUN_REPORT shows whether that filing was read, and which filter left the trade out.