Get
One enriched Form 4 transaction. Pass fields to select a subset of snake_case columns. feed_ids is always included.
curl --request GET \
--url https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"accession_number": "<string>",
"transaction_id": 123,
"filed_at": "<string>",
"code": "<string>",
"is_aggregated": true,
"is_synthetic": true,
"period_of_report": "<string>",
"trading_item_id": 123,
"issuer_cik": "<string>",
"issuer_name": "<string>",
"filing_ticker_symbol": "<string>",
"reporting_owner_cik": "<string>",
"reporting_owner_name": "<string>",
"is_director": true,
"is_officer": true,
"is_other": true,
"is_ceo": true,
"is_cfo": true,
"is_cto": true,
"is_coo": true,
"is_10_percent_owner": true,
"officer_title": "<string>",
"security_title": "<string>",
"is_direct_ownership": true,
"conversion_or_exercise_price": 123,
"transaction_date": "<string>",
"nature_of_ownership": "<string>",
"underlying_security_title": "<string>",
"shares_owned_following_transaction": 123,
"underlying_security_shares": 123,
"percent_change": 123,
"equity_swap_involved": true,
"transaction_value": 123,
"number_of_shares": 123,
"is_derivative": true,
"price_per_share": 123,
"expiration_date": "<string>",
"acquired_disposed_code": "<string>",
"exercise_date": "<string>",
"simple_industry_id": 123,
"created_at": "<string>",
"updated_at": "<string>",
"is_espp": true,
"is_purchase_agreement": true,
"is_public_offering": true,
"is_private_placement": true,
"is_dividend_reinvestment": true,
"is_10b51": true,
"is_for_taxes": true,
"filing_delay_days": 123,
"has_irregular_transaction_date": true,
"has_mismatched_codes": true,
"has_irregular_share_price": true,
"is_anomalous_transaction": true,
"is_weekend_filing": true,
"ticker_symbol": "<string>",
"company_name": "<string>",
"market_cap_at_filing": 123,
"price_at_transaction": 123,
"price_1d_ago": 123,
"transaction_value_market_cap_pct": 123,
"is_buying_dip": true,
"is_selling_rip": true,
"is_high_signal": true,
"returns_1d_ago": 123,
"returns_1w_ago": 123,
"returns_1m_ago": 123,
"returns_3m_ago": 123,
"returns_6m_ago": 123,
"returns_latest": 123,
"returns_1w": 123,
"returns_1m": 123,
"returns_3m": 123,
"returns_6m": 123,
"returns_1y": 123,
"excess_returns_1w": 123,
"excess_returns_1m": 123,
"excess_returns_3m": 123,
"excess_returns_6m": 123,
"excess_returns_1y": 123,
"win_rate_1w_pct": 123,
"win_rate_1m_pct": 123,
"win_rate_3m_pct": 123,
"win_rate_6m_pct": 123,
"win_rate_1y_pct": 123,
"win_rate_2y_pct": 123,
"win_rate_bullish_1w_pct": 123,
"win_rate_bullish_1m_pct": 123,
"win_rate_bullish_3m_pct": 123,
"win_rate_bullish_6m_pct": 123,
"win_rate_bullish_1y_pct": 123,
"win_rate_bullish_2y_pct": 123,
"win_rate_bearish_1w_pct": 123,
"win_rate_bearish_1m_pct": 123,
"win_rate_bearish_3m_pct": 123,
"win_rate_bearish_6m_pct": 123,
"win_rate_bearish_1y_pct": 123,
"win_rate_bearish_2y_pct": 123,
"win_rate_1w_wins": 123,
"win_rate_1m_wins": 123,
"win_rate_3m_wins": 123,
"win_rate_6m_wins": 123,
"win_rate_1y_wins": 123,
"win_rate_2y_wins": 123,
"win_rate_bullish_1w_wins": 123,
"win_rate_bullish_1m_wins": 123,
"win_rate_bullish_3m_wins": 123,
"win_rate_bullish_6m_wins": 123,
"win_rate_bullish_1y_wins": 123,
"win_rate_bullish_2y_wins": 123,
"win_rate_bearish_1w_wins": 123,
"win_rate_bearish_1m_wins": 123,
"win_rate_bearish_3m_wins": 123,
"win_rate_bearish_6m_wins": 123,
"win_rate_bearish_1y_wins": 123,
"win_rate_bearish_2y_wins": 123,
"win_rate_1w_total": 123,
"win_rate_1m_total": 123,
"win_rate_3m_total": 123,
"win_rate_6m_total": 123,
"win_rate_1y_total": 123,
"win_rate_2y_total": 123,
"win_rate_bullish_1w_total": 123,
"win_rate_bullish_1m_total": 123,
"win_rate_bullish_3m_total": 123,
"win_rate_bullish_6m_total": 123,
"win_rate_bullish_1y_total": 123,
"win_rate_bullish_2y_total": 123,
"win_rate_bearish_1w_total": 123,
"win_rate_bearish_1m_total": 123,
"win_rate_bearish_3m_total": 123,
"win_rate_bearish_6m_total": 123,
"win_rate_bearish_1y_total": 123,
"win_rate_bearish_2y_total": 123,
"insider_returns_1m": 123,
"insider_returns_3m": 123,
"insider_returns_6m": 123,
"insider_returns_1y": 123,
"insider_returns_2y": 123,
"insider_returns_1m_bearish": 123,
"insider_returns_3m_bearish": 123,
"insider_returns_6m_bearish": 123,
"insider_returns_1y_bearish": 123,
"insider_returns_2y_bearish": 123,
"insider_returns_1m_bullish": 123,
"insider_returns_3m_bullish": 123,
"insider_returns_6m_bullish": 123,
"insider_returns_1y_bullish": 123,
"insider_returns_2y_bullish": 123,
"insider_excess_returns_3m": 123,
"insider_excess_returns_1y": 123,
"insider_excess_returns_3m_bullish": 123,
"insider_excess_returns_3m_bearish": 123,
"cluster_num_trades_30d": 123,
"cluster_insider_count_30d": 123,
"is_cluster_trade_30d": true,
"transaction_value_zscore_3m": 123,
"transaction_value_zscore_6m": 123,
"transaction_value_zscore_1y": 123,
"transaction_value_median_3m": 123,
"transaction_value_median_6m": 123,
"transaction_value_median_1y": 123,
"has_20d_sma_crossover": true,
"has_50d_sma_crossover": true,
"has_100d_sma_crossover": true,
"has_200d_sma_crossover": true,
"streak_length": 123,
"previous_streak_length": 123,
"previous_streak_direction": "<string>",
"is_reversal": true,
"rank": 123,
"total": 123,
"notes": "<string>",
"feed_ids": [
0
]
}{
"type": "<string>",
"title": "<string>",
"status": 0,
"detail": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 0,
"detail": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 0,
"detail": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 0,
"detail": "<string>"
}Authorizations
Key from the Developer page. Send Authorization: Bearer cw_....
Path Parameters
SEC accession number, e.g. 0001234567-24-000001.
1Transaction id within the filing.
1Query Parameters
Optional. Vercel Protection Bypass for Automation — use when calling the Staging server.
Comma-separated snake_case column names from the transactions view. Defaults to the product detail set. feed_ids is always included.
Response
Transaction
Enriched Form 4 transaction (snake_case). Default field set shown; pass fields for a subset or additional view columns. feed_ids is always included.
SEC accession number.
Transaction id within the filing.
Filing timestamp (ISO).
Form 4 transaction code.
Aggregated row flag.
Synthetic row flag.
Period of report date.
Trading item id.
Issuer CIK.
Issuer legal name.
Ticker on the filing.
Reporting owner CIK.
Reporting owner name.
Director.
Officer.
Other relationship.
CEO.
CFO.
CTO.
COO.
10% owner.
Officer title text.
Security title.
Direct ownership.
Conversion or exercise price.
Transaction date (YYYY-MM-DD).
Nature of ownership.
Underlying security title.
Shares owned after the trade.
Underlying security shares.
Holdings percent change (fraction).
Equity swap involved.
Transaction value (USD).
Shares in this transaction.
Derivative transaction.
Price per share.
Derivative expiration date.
A or D.
Exercise date when applicable.
CapIQ simple industry id.
Row created at.
Row updated at.
Employee Stock Purchase Plan.
Purchase agreement.
Public offering.
Private placement.
Dividend reinvestment.
Rule 10b5-1 plan.
Tax-related.
Days between trade and filing.
Irregular transaction date flag.
Mismatched codes flag.
Irregular share price flag.
Anomalous transaction.
Filed on a weekend.
Analysis ticker.
Company name.
Market cap at filing (millions).
Price at transaction.
Price one day before.
Transaction value as % of market cap.
Buying-the-dip signal.
Selling-the-rip signal.
High-signal trade.
Return over the prior 1 day.
Return over the prior 1 week.
Return over the prior 1 month.
Return over the prior 3 months.
Return over the prior 6 months.
Latest forward return.
Forward return 1W.
Forward return 1M.
Forward return 3M.
Forward return 6M.
Forward return 1Y.
Excess forward return 1W.
Excess forward return 1M.
Excess forward return 3M.
Excess forward return 6M.
Excess forward return 1Y.
Insider win rate 1W (%).
Insider win rate 1M (%).
Insider win rate 3M (%).
Insider win rate 6M (%).
Insider win rate 1Y (%).
Insider win rate 2Y (%).
Bullish win rate 1W (%).
Bullish win rate 1M (%).
Bullish win rate 3M (%).
Bullish win rate 6M (%).
Bullish win rate 1Y (%).
Bullish win rate 2Y (%).
Bearish win rate 1W (%).
Bearish win rate 1M (%).
Bearish win rate 3M (%).
Bearish win rate 6M (%).
Bearish win rate 1Y (%).
Bearish win rate 2Y (%).
Wins counted in 1W window.
Wins counted in 1M window.
Wins counted in 3M window.
Wins counted in 6M window.
Wins counted in 1Y window.
Wins counted in 2Y window.
Bullish wins 1W.
Bullish wins 1M.
Bullish wins 3M.
Bullish wins 6M.
Bullish wins 1Y.
Bullish wins 2Y.
Bearish wins 1W.
Bearish wins 1M.
Bearish wins 3M.
Bearish wins 6M.
Bearish wins 1Y.
Bearish wins 2Y.
Total trades in 1W window.
Total trades in 1M window.
Total trades in 3M window.
Total trades in 6M window.
Total trades in 1Y window.
Total trades in 2Y window.
Bullish total 1W.
Bullish total 1M.
Bullish total 3M.
Bullish total 6M.
Bullish total 1Y.
Bullish total 2Y.
Bearish total 1W.
Bearish total 1M.
Bearish total 3M.
Bearish total 6M.
Bearish total 1Y.
Bearish total 2Y.
Insider avg return 1M.
Insider avg return 3M.
Insider avg return 6M.
Insider avg return 1Y.
Insider avg return 2Y.
Insider avg bearish return 1M.
Insider avg bearish return 3M.
Insider avg bearish return 6M.
Insider avg bearish return 1Y.
Insider avg bearish return 2Y.
Insider avg bullish return 1M.
Insider avg bullish return 3M.
Insider avg bullish return 6M.
Insider avg bullish return 1Y.
Insider avg bullish return 2Y.
Insider excess return 3M.
Insider excess return 1Y.
Insider excess bullish return 3M.
Insider excess bearish return 3M.
Trades in the 30-day cluster.
Insiders in the 30-day cluster.
30-day cluster trade.
Transaction value z-score vs 3M history.
Transaction value z-score vs 6M history.
Transaction value z-score vs 1Y history.
Median transaction value over 3M.
Median transaction value over 6M.
Median transaction value over 1Y.
20-day SMA crossover.
50-day SMA crossover.
100-day SMA crossover.
200-day SMA crossover.
Current streak length.
Previous streak length.
Previous streak direction.
Reversal trade.
Rank within scored set when present.
Total in scored set when present.
Analyst notes when present.
Curated feed ids this trade belongs to. Always included.
-9007199254740991 <= x <= 9007199254740991curl --request GET \
--url https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ceowatcher.com/api/v1/transactions/{accessionNumber}/{transactionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"accession_number": "<string>",
"transaction_id": 123,
"filed_at": "<string>",
"code": "<string>",
"is_aggregated": true,
"is_synthetic": true,
"period_of_report": "<string>",
"trading_item_id": 123,
"issuer_cik": "<string>",
"issuer_name": "<string>",
"filing_ticker_symbol": "<string>",
"reporting_owner_cik": "<string>",
"reporting_owner_name": "<string>",
"is_director": true,
"is_officer": true,
"is_other": true,
"is_ceo": true,
"is_cfo": true,
"is_cto": true,
"is_coo": true,
"is_10_percent_owner": true,
"officer_title": "<string>",
"security_title": "<string>",
"is_direct_ownership": true,
"conversion_or_exercise_price": 123,
"transaction_date": "<string>",
"nature_of_ownership": "<string>",
"underlying_security_title": "<string>",
"shares_owned_following_transaction": 123,
"underlying_security_shares": 123,
"percent_change": 123,
"equity_swap_involved": true,
"transaction_value": 123,
"number_of_shares": 123,
"is_derivative": true,
"price_per_share": 123,
"expiration_date": "<string>",
"acquired_disposed_code": "<string>",
"exercise_date": "<string>",
"simple_industry_id": 123,
"created_at": "<string>",
"updated_at": "<string>",
"is_espp": true,
"is_purchase_agreement": true,
"is_public_offering": true,
"is_private_placement": true,
"is_dividend_reinvestment": true,
"is_10b51": true,
"is_for_taxes": true,
"filing_delay_days": 123,
"has_irregular_transaction_date": true,
"has_mismatched_codes": true,
"has_irregular_share_price": true,
"is_anomalous_transaction": true,
"is_weekend_filing": true,
"ticker_symbol": "<string>",
"company_name": "<string>",
"market_cap_at_filing": 123,
"price_at_transaction": 123,
"price_1d_ago": 123,
"transaction_value_market_cap_pct": 123,
"is_buying_dip": true,
"is_selling_rip": true,
"is_high_signal": true,
"returns_1d_ago": 123,
"returns_1w_ago": 123,
"returns_1m_ago": 123,
"returns_3m_ago": 123,
"returns_6m_ago": 123,
"returns_latest": 123,
"returns_1w": 123,
"returns_1m": 123,
"returns_3m": 123,
"returns_6m": 123,
"returns_1y": 123,
"excess_returns_1w": 123,
"excess_returns_1m": 123,
"excess_returns_3m": 123,
"excess_returns_6m": 123,
"excess_returns_1y": 123,
"win_rate_1w_pct": 123,
"win_rate_1m_pct": 123,
"win_rate_3m_pct": 123,
"win_rate_6m_pct": 123,
"win_rate_1y_pct": 123,
"win_rate_2y_pct": 123,
"win_rate_bullish_1w_pct": 123,
"win_rate_bullish_1m_pct": 123,
"win_rate_bullish_3m_pct": 123,
"win_rate_bullish_6m_pct": 123,
"win_rate_bullish_1y_pct": 123,
"win_rate_bullish_2y_pct": 123,
"win_rate_bearish_1w_pct": 123,
"win_rate_bearish_1m_pct": 123,
"win_rate_bearish_3m_pct": 123,
"win_rate_bearish_6m_pct": 123,
"win_rate_bearish_1y_pct": 123,
"win_rate_bearish_2y_pct": 123,
"win_rate_1w_wins": 123,
"win_rate_1m_wins": 123,
"win_rate_3m_wins": 123,
"win_rate_6m_wins": 123,
"win_rate_1y_wins": 123,
"win_rate_2y_wins": 123,
"win_rate_bullish_1w_wins": 123,
"win_rate_bullish_1m_wins": 123,
"win_rate_bullish_3m_wins": 123,
"win_rate_bullish_6m_wins": 123,
"win_rate_bullish_1y_wins": 123,
"win_rate_bullish_2y_wins": 123,
"win_rate_bearish_1w_wins": 123,
"win_rate_bearish_1m_wins": 123,
"win_rate_bearish_3m_wins": 123,
"win_rate_bearish_6m_wins": 123,
"win_rate_bearish_1y_wins": 123,
"win_rate_bearish_2y_wins": 123,
"win_rate_1w_total": 123,
"win_rate_1m_total": 123,
"win_rate_3m_total": 123,
"win_rate_6m_total": 123,
"win_rate_1y_total": 123,
"win_rate_2y_total": 123,
"win_rate_bullish_1w_total": 123,
"win_rate_bullish_1m_total": 123,
"win_rate_bullish_3m_total": 123,
"win_rate_bullish_6m_total": 123,
"win_rate_bullish_1y_total": 123,
"win_rate_bullish_2y_total": 123,
"win_rate_bearish_1w_total": 123,
"win_rate_bearish_1m_total": 123,
"win_rate_bearish_3m_total": 123,
"win_rate_bearish_6m_total": 123,
"win_rate_bearish_1y_total": 123,
"win_rate_bearish_2y_total": 123,
"insider_returns_1m": 123,
"insider_returns_3m": 123,
"insider_returns_6m": 123,
"insider_returns_1y": 123,
"insider_returns_2y": 123,
"insider_returns_1m_bearish": 123,
"insider_returns_3m_bearish": 123,
"insider_returns_6m_bearish": 123,
"insider_returns_1y_bearish": 123,
"insider_returns_2y_bearish": 123,
"insider_returns_1m_bullish": 123,
"insider_returns_3m_bullish": 123,
"insider_returns_6m_bullish": 123,
"insider_returns_1y_bullish": 123,
"insider_returns_2y_bullish": 123,
"insider_excess_returns_3m": 123,
"insider_excess_returns_1y": 123,
"insider_excess_returns_3m_bullish": 123,
"insider_excess_returns_3m_bearish": 123,
"cluster_num_trades_30d": 123,
"cluster_insider_count_30d": 123,
"is_cluster_trade_30d": true,
"transaction_value_zscore_3m": 123,
"transaction_value_zscore_6m": 123,
"transaction_value_zscore_1y": 123,
"transaction_value_median_3m": 123,
"transaction_value_median_6m": 123,
"transaction_value_median_1y": 123,
"has_20d_sma_crossover": true,
"has_50d_sma_crossover": true,
"has_100d_sma_crossover": true,
"has_200d_sma_crossover": true,
"streak_length": 123,
"previous_streak_length": 123,
"previous_streak_direction": "<string>",
"is_reversal": true,
"rank": 123,
"total": 123,
"notes": "<string>",
"feed_ids": [
0
]
}{
"type": "<string>",
"title": "<string>",
"status": 0,
"detail": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 0,
"detail": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 0,
"detail": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 0,
"detail": "<string>"
}