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.
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.
| Plan | Price | Buy |
|---|---|---|
| Free — every filing from the last 3 months | $0 | — |
| One House member | $29 | pick a member |
| One senator | $39 | pick a member |
| House, every representative since 2012 | $195 | Buy |
| Senate, every senator since 2012 | $295 | Buy |
| House + Senate | $395 best value | Buy |
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]