FinzData

Congressional trades, backtest-ready.

Every stock, option, bond and fund trade that members of the House and Senate disclose under the STOCK Act, since 2012, point in time.

New research: Capitol Alpha? Do politicians beat the market? 70,152 trades, 2012–2026, House vs Senate vs the President.

Get a free API key See pricing Download free samples

What you get

  • Every periodic transaction report from the House Clerk and the Senate, parsed to one row per trade.
  • filed_at (the day the public could see it) next to traded_at, with the filing lag and a late-filing flag.
  • Owner (self, spouse, joint, dependent); ticker and asset type; amount range low/high/mid.
  • Member identity that stays stable across terms (bioguide id), party, state, district, chamber; committee and subcommittee seats.
  • A link to the source filing on every row.
  • Daily updates.
  • Joins cleanly to FinzData prices (16,000+ US stocks since 2000, delisted included) for event studies and backtests.

Why it is different

Point in time

Test what you could have known on the filing date, not the trade date.

Survivorship-free prices

Every ticker joins to our price history, delisted names included.

Built for AI agents

REST API, pip client, MCP server.

Pricing

One-time purchase, plus $19.95/month for daily updates.

PlanPriceBuy
Free — every filing from the last 3 months$0—
One House member$29pick a member
One senator$39pick a member
House, every representative since 2012$195Buy
Senate, every senator since 2012$295Buy
House + Senate$395 best valueBuy

Member id is the bioguide id shown on each member's page. Institutional includes it.

API examples

curl "https://api.finzdata.com/v1/congress/trades?ticker=NVDA&since=2025-01-01" -H "X-API-Key: YOUR_KEY"
curl "https://api.finzdata.com/v1/congress/recent?days=7" -H "X-API-Key: YOUR_KEY"
curl "https://api.finzdata.com/v1/congress/members" -H "X-API-Key: YOUR_KEY"
curl "https://api.finzdata.com/v1/congress/members/{bioguide}" -H "X-API-Key: YOUR_KEY"
pip install finzdata
import finzdata, requests
headers = {"X-API-Key": "YOUR_KEY"}
r = requests.get("https://api.finzdata.com/v1/congress/trades?ticker=AAPL&since=2024-01-01", headers=headers)
print(r.json()[0])

FAQ

Where does the data come from?
House Clerk and Senate public disclosures; a source link on every row.
How fast?
Filings are collected daily.
Why amount ranges?
Members disclose ranges, not exact amounts; we give low, high and midpoint.
Scanned paper filings?
Electronic filings are parsed today; scanned paper filings are listed with a link to the original.

Public-record data; not investment advice; no allegation of wrongdoing is made or implied about any member.

The FinzData team
[email protected]