Senate disclosure data API

Senate trades, normalized into clean JSON.

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.

normalized trade rowjson
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

Public data should not require scraping PDFs.

Senate trades are public record, but the useful signal is buried in disclosure portals, inconsistent filings, and provider-specific field names.

For agents

A machine-readable paid endpoint instead of a login wall or manual export.

For builders

A stable response shape for prototypes, research tools, and portfolio demos.

For researchers

Transaction dates, disclosure dates, tickers, types, and amount ranges in one JSON contract.

Live proof

See the JSON before the paywall.

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.

sample responsejson
{
  "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

Three steps. No account.

The payment rail stays out of the way: request the resource, satisfy the 402, and parse the same endpoint response.

01

Request the data

Ask for a senator's trade history by name, with optional transaction-date filters.

02

Pay only for the call

The API returns x402 payment requirements. No account, API key, or subscription is needed.

03

Parse stable JSON

After payment, the retry returns normalized trade rows from the cache-backed API.

Trust and scope

Scoped on purpose.

V1 is a complete vertical slice: two senators, one endpoint, one payment flow, and one stable response contract.

Source trail

Public U.S. Senate disclosure records via FMP.

Payment rail

x402 exact payments in USDC on Base Sepolia testnet.

Focused V1

Gary Peters and John Fetterman only, chosen to prove the full loop end to end.