Transaction object

Insider trades (Form 4), initial beneficial-ownership statements (Form 3), and institutional holdings reports (Form 13F) reported to the SEC. US filings only. For the Form 4 / Form 3 endpoints, the plan coverage scope (Coverage scope notice) and history window (History truncation notice) apply as they do elsewhere, on the filing's filing_date; the 13F endpoints are organized by the filing manager (institution). These endpoints are available on every plan; full-library screening is POST /screener/ownership, POST /screener/initial-holdings and POST /screener/institutional-holdings, which require Pro or higher.

Credits are deducted before the query runs, so a 404 or 403 raised afterwards is still charged.

Returned by POST /ownership/transactions, POST /ownership/transaction-ids, and POST /screener/ownership.

id

Transaction id. Pass to POST /ownership/transaction-ids.

is_derivative

Derivative table row (true) or non-derivative (false).

transaction_form_type

"4" or "5".

transaction_date, transaction_code

As filed.

transaction_type

Official SEC name for transaction_code.

transaction_type_group

One of the five SEC groupings — see GET /ownership/transaction-types.

acquired_disposed_code

"A" acquired, "D" disposed, or null. The trade's direction.

shares, price_per_share, transaction_value, shares_owned_following

As filed. transaction_value may be null or 0.

transaction_note

Filer-side note explaining a null / 0 value. null when absent.

principal_amount_not_shares

true when shares holds a debt principal amount.

security_title, direct_or_indirect, nature_of_ownership

As filed.

footnote_refs

Footnote ids for this transaction. Resolve against the filing's footnotes map.

source_locator

Combine with the filing's source_url_prefix to build the SEC URL.

restated

null, "cancelled", "modified", or "added" — set when an amendment changed this transaction.

prior

Present only when restated is set. The pre-amendment values.

split_adjusted

Present only when the filed values are not on the current per-share basis. See below.

data_quality_flags

Present only when at least one rule fires. See below.

Derivative rows additionally carry conversion_or_exercise_price, exercise_date, expiration_date, underlying_security_title, underlying_security_shares, underlying_security_value, and value_owned_following.

#split_adjusted

shares and price_per_share are in the units of the transaction's own trade date. When those differ from the current per-share basis, the block is present:

JSON
"split_adjusted": {
  "shares": 4000.0,
  "price_per_share": 125.86,
  "shares_owned_following": 48000.0,
  "underlying_security_shares": null,
  "conversion_or_exercise_price": null,
  "split_adjustment_factor": 4.0
}

Absent means the filed values are on the current per-share basis. A field is null when the split does not change it (for example a debt principal). split_adjustment_factor carries the same meaning as adjustment_factor on the metrics API (POST /metric/all).

#data_quality_flags

Rows that fail a consistency check carry one or more of:

future_transaction_date, future_deemed_execution_date, zero_price_open_market, derivative_date_order, negative_shares, negative_price, negative_transaction_value, negative_shares_owned_following, value_mismatch, manual_flags.

Rows flagged manual_flags also carry a manual_flags array of {code, note} entries describing the issue.

Flagged rows are excluded from POST /ownership/transactions, POST /ownership/stats and POST /screener/ownership unless include_anomalies=true (trade_filters.include_anomalies on the screener). Each endpoint reports how many it withheld: the listing in anomalies_excluded_on_page (this page only), stats and the screener in anomalies_excluded_count (the whole requested range).

#computed

POST /screener/ownership rows additionally carry a computed block with shares_owned_before and own_pct_change. Each entry has value, status (ok / unavailable), unit, formula, computed_as, and fact_refs pointing at the inputs. When an input is missing, the entry has only value (null), status ("unavailable") and computed_as, which states the reason.