For agents
A machine-readable paid endpoint instead of a login wall or manual export.
Senate disclosure data API
Capitol Gains turns public U.S. Senate trade disclosures into a structured API for agents, research tools, and developers who do not want to scrape disclosure portals or parse inconsistent filings.
See what senators traded, when they disclosed it, and the reported amount range in one cache-backed response.
Pay per request in USDC on Base Sepolia. No API keys, no accounts, no subscription. V1 covers Gary Peters and John Fetterman.
GET /v1/trades?member=John%20Fetterman
HTTP/2 200 OK
{
"symbol": "BXSL",
"transaction_type": "Sale",
"transaction_date": "2026-04-13",
"disclosure_date": "2026-05-06",
"amount_raw": "$1,001 - $15,000"
}Price
$0.05
Network
Base Sepolia
Format
JSON
Problem
Senate trades are public record, but the useful signal is buried in disclosure portals, inconsistent filings, and provider-specific field names.
A machine-readable paid endpoint instead of a login wall or manual export.
A stable response shape for prototypes, research tools, and portfolio demos.
Transaction dates, disclosure dates, tickers, types, and amount ranges in one JSON contract.
Live proof
Before setting up a wallet or paying a request, inspect the exact kind of normalized response the API returns.
Free static sample
This is committed fixture data, not a live paid request.
{
"member": {
"id": "7bb1c798-afe2-4ba4-bdff-cb7cf1d8bbf6",
"normalized_name": "john fetterman",
"display_name": "John Fetterman",
"first_name": "John",
"last_name": "Fetterman",
"chamber": "senate",
"office": "John Fetterman",
"party": "D",
"state": "PA",
"bioguide_id": "F000479"
},
"trades": [
{
"id": "b127c34f-3a6d-4419-a9d9-3f47e1c8edbf",
"member_id": "7bb1c798-afe2-4ba4-bdff-cb7cf1d8bbf6",
"symbol": "BXSL",
"transaction_date": "2026-04-13",
"disclosure_date": "2026-05-06",
"owner": "",
"asset_description": "BLACKSTONE SECURED LENDING F",
"asset_type": "Corporate Bond",
"transaction_type": "Sale",
"amount_raw": "$1,001 - $15,000",
"amount_range_low": 1001,
"amount_range_high": 15000,
"comment": null,
"source_link": "https://efdsearch.senate.gov/search/view/ptr/f34c4d7a-29ba-48fb-beea-d94c1368cc99/",
"fetched_at": "2026-05-26T15:45:13.448Z"
},
{
"id": "725aab07-37d2-4f98-a407-40d965f44711",
"member_id": "7bb1c798-afe2-4ba4-bdff-cb7cf1d8bbf6",
"symbol": "ATH",
"transaction_date": "2026-04-10",
"disclosure_date": "2026-05-06",
"owner": "",
"asset_description": "Athene Holding Ltd",
"asset_type": "Corporate Bond",
"transaction_type": "Purchase",
"amount_raw": "$1,001 - $15,000",
"amount_range_low": 1001,
"amount_range_high": 15000,
"comment": null,
"source_link": "https://efdsearch.senate.gov/search/view/ptr/f34c4d7a-29ba-48fb-beea-d94c1368cc99/",
"fetched_at": "2026-05-26T15:45:13.448Z"
}
],
"metadata": {
"count": 2,
"cache_hit": true,
"as_of": "2026-05-26T15:45:14.471Z",
"fetched_at": "2026-05-26T15:45:14.471Z"
}
}How it works
The payment rail stays out of the way: request the resource, satisfy the 402, and parse the same endpoint response.
01
Ask for a senator's trade history by name, with optional transaction-date filters.
02
The API returns x402 payment requirements. No account, API key, or subscription is needed.
03
After payment, the retry returns normalized trade rows from the cache-backed API.
Trust and scope
V1 is a complete vertical slice: two senators, one endpoint, one payment flow, and one stable response contract.
Public U.S. Senate disclosure records via FMP.
x402 exact payments in USDC on Base Sepolia testnet.
Gary Peters and John Fetterman only, chosen to prove the full loop end to end.