Skip to main content
GET
Get politician trades

Overview

The Financial Datasets politician trades API returns the stock trades that members of the US House of Representatives disclose. It tells you which stocks members of the House bought or sold, within minutes after each report goes public. Every trade is read directly from the official disclosure reports, which come from authoritative government sources (data provenance). You can call it as a REST endpoint with an API key, or from Claude, ChatGPT, Cursor, and other AI apps through the MCP server, or pay per request with x402. Pricing starts at $20. With no filter, the endpoint is a feed of the newest disclosures from every member. Add filters to answer questions like:
  • Which members of the House sold Nvidia this year?
  • What did members from Texas buy last month?
  • Which trades over $1,000,000 did a member’s spouse make?
To get started, please create an account and grab your API key at financialdatasets.ai. You will use the API key to authenticate your API requests.

Coverage

Senate trades are coming soon. Reports that a member filed on paper are not included. Trade date and filing date: a member has up to 45 days to report a trade, so a trade’s transaction_date is often weeks before its filing_date. Use filing_date to see what became public, and transaction_date to see when the trade happened.

Available Members

You can fetch the list of members with a trade on record, with their chamber and state, with a GET request to: https://api.financialdatasets.ai/politician-trades/names/

Getting Started

There are only 3 steps for making a successful API call:
  1. Add your API key to the header of the request as X-API-KEY.
  2. Add query params like ticker and limit to filter the data.
  3. Execute the API request.

The Response

Each trade is one row of a member’s report. Most fields are as filed. These need a word:
  • amount_low and amount_high: members report a dollar range, not an exact amount. A trade of “$1,001 - $15,000” has amount_low 1001 and amount_high 15000. When a member reports an exact amount, amount_low and amount_high are equal.
  • owner: whose account made the trade: self, spouse, joint, or dependent_child.
  • transaction_type: purchase, sale, or exchange.
  • sale_type: partial when the report marks a sale as partial, full when it marks it as full, and null when the report does not say.
  • filing_status: new for a first report of the trade, amended for a corrected row, and deleted for a row the member withdrew.
  • ticker: the ticker as the member reported it, or null when the member did not report one.
  • report_url: the official report the trade comes from.

Filtering the Data

No parameter is required. With no filter, you get the newest disclosures first. You can filter the data by ticker, name, chamber, transaction_type, state, owner, amount_gte, filing_date, and transaction_date, and sort with order_by. All filters combine. Note: by default, limit is 10 and order_by is filing_date. The ticker parameter is used to filter trades in one stock (e.g., NVDA). Share classes match in both forms: BRK.B and BRK-B give the same trades. The name parameter is used to filter trades by a member. Every word you send must be in the name, in any case, so a last name alone is enough. You can get the list of names from the /names endpoint above. The chamber parameter is house or senate. The transaction_type parameter is purchase, sale, or exchange. The state parameter is the member’s two-letter state code (e.g., TX), in any case. The owner parameter is self, spouse, joint, or dependent_child. The amount_gte parameter keeps trades whose amount_low is at least this many whole dollars. For example, amount_gte=1000001 keeps the “$1,000,001 - $5,000,000” range and up. The filing_date and transaction_date parameters filter by date in YYYY-MM-DD format. For example, transaction_date_gte=2025-01-01 and transaction_date_lte=2025-12-31 give the trades made in 2025. The available date operations are:
  • filing_date, filing_date_gte, filing_date_lte, filing_date_gt, filing_date_lt
  • transaction_date, transaction_date_gte, transaction_date_lte, transaction_date_gt, transaction_date_lt
The order_by parameter sets the order:
  • filing_date (default): newest disclosure first.
  • transaction_date: newest trade first.
The limit parameter is the total number of trades to return across all pages. Each page holds up to 10 trades, linked by next_page_url. The maximum value is 5000.

Example (the feed)

Politician Trades

Example (with ticker)

Politician Trades

Example (with name)

Politician Trades

Example (with state and transaction_date)

Politician Trades

Example (with owner and amount_gte)

Politician Trades

Example (newest trades first)

Politician Trades

FAQ

Where does the politician trading data come from?

From authoritative government sources: the official trade reports that members of the House file. Each report is read into one structured record per trade.

How fast do new trades show up?

Within minutes after each report goes public.

Why is the trade date weeks before the filing date?

A member has up to 45 days to report a trade. The trade happened on transaction_date; it became public on filing_date.

Why is the amount a range?

Members report a dollar range, not an exact amount. We serve the range as filed in amount_low and amount_high, and never guess a figure inside it.

Do you cover the Senate?

Not yet. Senate trades are coming soon.

Can an AI agent use this data?

Yes. Claude, ChatGPT, Cursor, and other MCP clients reach it through the Financial Datasets MCP server. An agent with a wallet can also pay per request with x402, with no account.

Authorizations

X-API-KEY
string
header
required

API key for authentication.

Query Parameters

ticker
string

Filter by stock ticker (e.g., 'NVDA'). Share classes match in both forms: 'BRK.B' and 'BRK-B' give the same trades.

name
string

Filter by member name. Every word must be in the name, in any case, so a last name alone is enough. Use the /politician-trades/names endpoint to get the names.

chamber
enum<string>

Filter by chamber of Congress.

Available options:
house,
senate
transaction_type
enum<string>

Filter by type of trade.

Available options:
purchase,
sale,
exchange
state
string

Filter by the member's two-letter state code (e.g., 'TX'), in any case.

Required string length: 2
owner
enum<string>

Filter by whose account made the trade.

Available options:
self,
spouse,
joint,
dependent_child
amount_gte
integer

Keep trades whose amount_low is at least this many whole dollars (e.g., 1000001 keeps the $1,000,001 - $5,000,000 range and up).

Required range: x >= 0
filing_date
string<date>

Filter by the date the report was filed: equal to this date (YYYY-MM-DD).

filing_date_gte
string<date>

Filter by the date the report was filed: on or after this date (YYYY-MM-DD).

filing_date_lte
string<date>

Filter by the date the report was filed: on or before this date (YYYY-MM-DD).

filing_date_gt
string<date>

Filter by the date the report was filed: after this date (YYYY-MM-DD).

filing_date_lt
string<date>

Filter by the date the report was filed: before this date (YYYY-MM-DD).

transaction_date
string<date>

Filter by the date of the trade: equal to this date (YYYY-MM-DD).

transaction_date_gte
string<date>

Filter by the date of the trade: on or after this date (YYYY-MM-DD).

transaction_date_lte
string<date>

Filter by the date of the trade: on or before this date (YYYY-MM-DD).

transaction_date_gt
string<date>

Filter by the date of the trade: after this date (YYYY-MM-DD).

transaction_date_lt
string<date>

Filter by the date of the trade: before this date (YYYY-MM-DD).

order_by
enum<string>
default:filing_date

The order of the trades: filing_date (default) puts the newest disclosure first; transaction_date puts the newest trade first.

Available options:
filing_date,
transaction_date
limit
integer
default:10

The maximum number of trades to return (default: 10, max: 5000). This is the total across all pages, not a page size: each page holds up to 10 records, linked by next_page_url.

cursor
string

Opaque pagination cursor from a previous response's next_page_url. When provided, all other query parameters are ignored: the cursor carries the original request's filters. Treat it as opaque; do not construct or modify it.

Response

Politician trades response

politician_trades
object[]
next_page_url
string

Absolute URL of the next page of results. Present only when more results remain; request it as-is to continue. Each page holds up to 10 records.