How to get congressional stock trades as data

The House publishes a free index of STOCK Act filings; the trades are inside PDFs. What breaks — scans with no text, value bands, owner codes and late reports.

The House Clerk publishes a free yearly index of every financial disclosure filing as a tab-separated file, and each periodic transaction report behind it is a PDF; the Senate runs a separate system. The index tells you a report exists, not what is in it. Getting rows out means parsing PDFs, some of them scans with no text layer at all, into trades that carry a value band rather than an amount, an optional owner code and two dates.

The short way

Congressional trades are not on EDGAR and never were. For the House, the Clerk publishes one zip per year that indexes every financial disclosure filing, and each periodic transaction report behind it is a PDF at a predictable address:

import csv, io, zipfile
import requests

year = 2026
base = "https://disclosures-clerk.house.gov/public_disc"

index = requests.get(f"{base}/financial-pdfs/{year}FD.zip", timeout=60)
z = zipfile.ZipFile(io.BytesIO(index.content))
rows = csv.DictReader(io.TextIOWrapper(z.open(f"{year}FD.txt"), encoding="utf-8-sig"),
                      delimiter="\t")

# FilingType "P" is a periodic transaction report; other letters are other report types
ptrs = [r for r in rows if r["FilingType"] == "P"]

for r in ptrs:
    print(r["FilingDate"], r["Last"], r["StateDst"],
          f"{base}/ptr-pdfs/{year}/{r['DocID']}.pdf")

The zip holds the same index twice, as tab-separated text and as XML: name, state and district, filing type, filing date and a document ID. The copy fetched on 27 September 2026 was stamped 25 September and listed 1,697 filings for the year, 400 of them transaction reports. That is the whole of the structured part. The trades themselves — asset, owner, transaction type, date, date notified and value band — are inside the PDF, and turning the PDF into rows is the job.

For the Senate, the equivalent reports sit in a separate electronic disclosure system run by the Secretary of the Senate, with its own search and its own format. It answered scripted requests from this site with HTTP 403 on the same day, so nothing on this page describes its format from first-hand reading, and any pipeline that needs both chambers should budget for two parsers.

What the options are

Parsed rows over an API. Quiver Quantitative is the cheapest key that returns congressional trades as JSON: its Hobbyist tier at $30 a month covers congress trading and holdings, politician net worth and the rest of the political datasets. The field that matters is that TransactionDate and ReportDate come back separately, which is the only way to measure the lag rather than assume it. Both published tiers are marked non-commercial; anything you ship needs the contact-priced Commercial plan. Unusual Whales carries congressional trades, late reports and per-politician histories in the same API as its options tape, from $150 a month on API Basic with a two-year lookback. That price only makes sense if you wanted the options data anyway.

The scraper, on your own hardware. Equibles is an AGPL-3.0 stack that scrapes SEC EDGAR, the congressional disclosure feeds and a dozen other public sources into a local Postgres, with no account and no key, and serves the result to an assistant through 62 MCP tools. It is the one option here that leaves you holding the database, and so the one where the parsing errors described below are yours to find.

Inside a backtest. QuantConnect resells Quiver's congress feed in its data library at $5 a month. If the only destination for the rows is a backtest on that platform, it is the shortest path; if you want the rows themselves, it is not a data product.

A reference to check against. Capitol Trades has no API and no export at any price, so it cannot be the source for a pipeline. It is useful beside one: every row prints the traded date, the published date and a "filed after N days" counter, the owner, and the band, over a rolling three-year window. When a parser disagrees with a person reading the same filing, this is the quickest second opinion. The rest of the shelf is in insider, 13F and congressional trade trackers.

Where this breaks

One report in nine has no text to parse. Of the 400 House transaction reports indexed for 2026 by 25 September, 46 are PDFs with no text layer at all — images of a paper form. Every one of them has a seven-digit document ID; a sample of twenty eight-digit IDs, the electronically filed ones, all carried text. Paper is still a lawful way to file: the House Ethics Committee's instructions accept an electronic filing or a paper copy delivered to the Clerk, and refuse only faxes and email. A text extractor returns an empty string for a scan rather than an error, so a naive pipeline drops roughly a tenth of the House's reports without saying so. The electronic ones are not clean either: extracted with macOS's PDFKit, their field labels come out interleaved with NUL bytes, which is enough to make grep call the file binary. Routing seven-digit IDs to OCR, or to a person, is the fix.

The law asks for documents, not data. The STOCK Act as passed in 2012 required databases that "allow the public to search, sort, and download data contained in the reports". Public Law 113-7 rewrote that paragraph without it in April 2013, a year later, and what remains is databases maintained on the House and Senate websites. The yearly index is a courtesy with no published schema and no promise attached, and the PDF layout can change between one filing season and the next.

A row does not have to carry a ticker. The instructions require the complete name of the asset and call adding the ticker best practice, not a requirement. Electronic filings print both where the filer supplied them — Amazon.com, Inc. - Common Stock (AMZN) [ST] — and a paper filing carries whatever the member's office wrote. An option is described in the same free-text cell, with its strike and expiry. Matching names to securities is a fuzzy join, and it is where most parsed datasets quietly disagree with each other.

An amount is a band, and the top of it depends on who owns the asset. The statute sets ten categories, from not more than $15,000 up to more than $50 million, and the reporting trigger is a transaction over $1,000 — so the smallest band a trade can land in runs from $1,001 to $15,000. When a trade shows up in the public record sets out why every dollar total built on those bands is a choice. The part a parser misses is the extra column: an asset owned only by a spouse or dependent child and in which the member has no interest may be reported as simply "over $1,000,000", while one the member holds must use the higher bands. Treat that column as a separate, open-ended category, not as the $1,000,001–$5,000,000 band.

The owner column is optional, and it is the one that matters. A report covers trades by the member, the spouse and dependent children, and the paper-form instructions say the filer may mark a row SP, DC or JT. A blank owner therefore does not establish that the member placed the trade. Any series labelled "trades by Representative X" is, unless it filters on that column and accepts its gaps, trades in a household's accounts, including managed ones the member never directed.

Days from trade to filing is not a compliance measure. A report is due by the earlier of 30 days after the filer learns of a trade and 45 days after the trade itself, and the form carries both the transaction date and the date notified. So a report filed on day 40 can be late, if the filer knew on day 1, and a report is late past day 45 whatever the notification date says — the instruction guide's own example is a spouse's purchase on 9 July disclosed to the member on 3 September, already past its 23 August due date. Lag from the transaction date measures how old the information is; whether a filing was on time needs both dates and the earlier of the two deadlines.

What is absent is not evidence. The House instructions exclude mutual fund and ETF transactions from these reports, along with Thrift Savings Plan assets and trades between the member and their own household. Some filers list ETFs anyway — one report indexed in March 2026 sells DIA and QQQ, coded [OT] rather than [ST], beside individual stocks — so ETF rows in any dataset are a voluntary, inconsistent sample. The guide also warns that the annual report can carry transactions a transaction report did not have to, which means the complete record for a year arrives the following May, in a different document.

The statute says what the reports may not be used for. 5 U.S.C. 13107(c), as printed in the 2024 edition of the U.S. Code, makes it unlawful for any person to obtain or use a report for any unlawful purpose; for any commercial purpose, other than by news and communications media for dissemination to the general public; to determine or establish an individual's credit rating; or, directly or indirectly, to solicit money for any political, charitable or other purpose. The Attorney General may bring a civil action, and the court may assess a penalty of up to $10,000. The statute does not define "commercial purpose", and this page does not try to. And the source does not keep the reports forever: a member's reports are made available for six years after the member leaves office, then destroyed. If history matters, store what you fetch.

If you outgrow this

When you need to ship the data, there are two documents to read, not one. The vendor's licence covers the vendor's rows: Quiver's published tiers are non-commercial and its Commercial plan is quoted on request, and Unusual Whales quotes redistribution separately under its business plans. The statute above covers the reports the rows come from, and a vendor's licence speaks only for the vendor.

When the question is how late the record is, rather than what is in it, when a trade shows up in the public record sets the congressional deadline beside Form 4, Schedule 13D and 13F, with the second 30-day publication clock that follows filing.

When you want disclosures that arrive faster and as data, the corporate side is structured where this one is not. A Form 4 is XML on EDGAR within two business days of an insider's trade, and How to get SEC filings as data covers it; institutional holdings are in How to get 13F holdings as data.

When a person is going to read it rather than a program, HedgeFollow puts congressional trades beside 13F and Form 4 on one page, and Capitol Trades does the congressional half alone with no account.

The tools that do this

In the order this page recommends trying them. Paid placement does not affect this order.

  1. Quiver Quantitative

    Congressional trades over REST from the $30-a-month Hobbyist tier, with transaction and report dates as separate fields. Non-commercial on both published tiers.

    US political and SEC disclosure data — congress, insiders, lobbying — over one REST API.

    $30/moFree tier

  2. Unusual Whales

    A congressional endpoint beside the options tape, from $150 a month on API Basic with a two-year lookback. Redistribution is quoted separately.

    US options tape, dark pool prints and congressional trades over one REST API.

    $50/moFree tier

  3. Equibles

    An AGPL server that scrapes the congressional disclosure feeds into your own Postgres with no key, then serves them to an assistant over MCP.

    Scrapes SEC, FINRA, FRED and CFTC data into your own Postgres and serves it over MCP.

    $9.99/moFree tierOpen source

  4. QuantConnect

    Quiver's congress feed inside QuantConnect's data library at $5 a month, for when the destination is a backtest rather than your own database.

    The open-source LEAN engine, plus a hosted cloud that runs it against real brokers.

    $84/moFree tierOpen source

  5. Capitol Trades

    Free, no account, a filed-after-N-days counter on every row — and no API or export. The place to check a parsed row by eye, over three rolling years.

    Three years of US congressional stock disclosures, filterable and free with no account.

    FreeFree tier

FAQ

Are congressional stock trades on SEC EDGAR?

No. Periodic transaction reports under the STOCK Act are filed with the Clerk of the House or the Secretary of the Senate, not with the SEC, so none of them is on EDGAR. The House publishes a yearly index file listing every filing with a document ID, and each transaction report is a PDF fetched by that ID.

Why do congressional trade datasets disagree with each other?

Because every one of them is a parse of PDFs, some of them scanned paper, into rows. The asset is free text with a ticker that is recommended rather than required, the amount is one of ten statutory bands, and the owner code is optional. Two parsers can read the same report and produce different tickers, dollar figures and owners without either being wrong about the document.

What does the law say about using these reports?

5 U.S.C. 13107(c), as printed in the 2024 edition of the U.S. Code, makes it unlawful for any person to obtain or use a report for any unlawful purpose, for any commercial purpose other than by news and communications media for dissemination to the general public, to determine an individual's credit rating, or to solicit money. The Attorney General may sue, and a court may assess a penalty of up to $10,000.

Sources

  1. Financial Disclosure — Office of the Clerk, U.S. House of Representatives, read
  2. Financial Disclosure Instruction Guide for calendar year 2025 reports — U.S. House of Representatives, Committee on Ethics,
  3. 5 U.S.C. 13107 — Custody of and public access to reports — U.S. Government Publishing Office, read
  4. Public Law 113-7 — modifying the STOCK Act's online access requirements — U.S. Government Publishing Office, . The 2024 edition of the Code prints STOCK Act section 8(b) in the form this law amended it to, as a note to 5 U.S.C. 13107.
  5. Public Law 112-105 — Stop Trading on Congressional Knowledge Act of 2012, section 8 — U.S. Government Publishing Office, . Cited for the section 8(b) wording as enacted, which Public Law 113-7 replaced in 2013; the page describes it as history.

The catalogue next door

This page names a handful of cards. The rest of them are in Insider, 13F & Congressional Trade Trackers, each filled in against the same schema, with the fields to narrow it yourself.

Last updated . Corrected in place: this is a reference page, not a dated post.