Congressional trade disclosures put the member name, symbol, transaction type, and USD value on the same row.
This guide covers GET /v1/markets/insider-trades with politiciansOnly=true. That filter returns trades from U.S. Congressmen and Senators. The example below does not also send type.
To access this endpoint, you must obtain an API key: Get your API key
The Endpoint
Insider and congressional trade rows live under GET /v1/markets/insider-trades. The sample request uses only politiciansOnly=true and page=1, so you can confirm pagination meta and the row shape before you add filters.
Parameters
- ticker: Optional. Add it when you care about one symbol. Leave it off the first call in this example.
- type: Optional. Use
Buy,Sell, orTransferwhen you want to restrict the rows. Do not also sendtypeon the first call that only setspoliticiansOnly=trueandpage=1. - minValue: Optional dollar floor. The example is
10000. Use it when you need that floor. Leave unused optional parameters off the query string. - politiciansOnly: Optional string
trueorfalse.truereturns trades from U.S. Congressmen and Senators.falsedoes not apply that filter. The example usestrue. - page: Optional. The example is
1. Keep paging withpagewhilemeta.totalis larger than the current page.
Python Example
The script requests page 1 with politiciansOnly set to true and prints firstName, lastName, symbol, transactionType, and usdValue for the first few rows. Send a Bearer token from your Mboum API key.
import requests
url = "https://api.mboum.com/v1/markets/insider-trades"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
params = {"politiciansOnly": "true", "page": "1"}
response = requests.get(url, headers=headers, params=params)
response.raise_for_status()
for row in response.json().get("body", [])[:5]:
print(row["firstName"], row["lastName"], row["symbol"], row["transactionType"], row["usdValue"])
Understanding the Response
A successful response has meta and body. Meta includes count, total, and page. Each body row is one disclosure. The shortened example below shows the key names only.
{
"meta": {
"count": "...",
"total": "...",
"page": 1
},
"body": [
{
"transactionDate": "...",
"firstName": "...",
"lastName": "...",
"shortJobTitle": "...",
"symbol": "...",
"symbolShortName": "...",
"usdValue": "...",
"transactionType": "...",
"noteText": "..."
}
]
}
Use count, total, and page to decide whether you need another page. For a quick screen, print the name fields with symbol, transactionType, and usdValue, then open noteText when you need the disclosure detail. Keep symbol and symbolShortName distinct. One is the ticker. The other is the short name string returned with the trade.
Key Fields
- count, total, and page: Pagination meta. The shortened example sets
pageto 1 and leavescountandtotalas placeholders. - firstName, lastName, and shortJobTitle: The member on the row and the short job title returned with the trade.
- symbol and symbolShortName: The ticker and the short name string. Keep them distinct if you map rows into a portfolio book.
- transactionDate, transactionType, usdValue, and noteText: When the trade was disclosed, the transaction type, the USD value, and the disclosure note.
Practical Use Cases
Reading page 1 of congressional trades
Start with politiciansOnly=true and page=1. Confirm meta.page against meta.total. Open the first row and record firstName, lastName, symbol, transactionType, and usdValue. politiciansOnly true returns trades from U.S. Congressmen and Senators. false does not apply that filter.
Narrowing a later call
Once page 1 parses cleanly, decide whether to page further, add ticker, or add type or minValue on a later call. type is Buy, Sell, or Transfer. minValue can be a dollar floor such as 10000. Leave unused optional parameters off the query string, and keep paging while meta.total is larger than the current page.
Learn more or explore other endpoints: Insider trades