Blog/Product
11 min read

Insider Trading API: What Form 4 Data Actually Tells You

A director sold 1,848,501 shares for $410,843,671. The filing arrived two days later, and that lag is the most important field in the response.

Insider Trading API: What Form 4 Data Actually Tells You

Copy this line to your agent to pull a company's insider transactions.

set up https://monid.ai/SKILL.md and use secform4 /get_company_insider_trading with a CIK

On 2026-09-07 one row in this dataset read: a director sold 1,848,501 shares at an average of $222.26, a total of $410,843,671. That number is what people come for. The field that decides whether it is useful is two columns over, and it says the filing landed two days after the trade. This guide runs through Monid, the OpenRouter for agent tools.

What is in an insider trading feed?

Thirteen fields, and they come from a form corporate insiders are legally required to file.

The record

secform4/get_company_insider_trading for NVIDIA on 2026-09-07 returned twelve items. One of them:

{
  "transaction_date": "2026-08-31 Sale",
  "reported_datetime": "2026-09-02 6:10 pm",
  "company": "NVIDIA CORP",
  "symbol": "NVDA",
  "insider_relationship": "STEVENS MARK A Director",
  "shares_traded": "1,848,501",
  "average_price": "$222.26",
  "total_amount": "$410,843,671",
  "shares_owned": "29,921,...",
  "filing": "4",
  "filing_url": "https://www.secform4.com/insider-trading/..."
}

Plus symbol_url and insider_relationship_url for drilling through.

Where it comes from

SEC Form 4. Officers, directors and anyone owning more than 10% of a US-listed company must report changes in their holdings. This is a legal filing rather than an inference, which makes it one of the few genuinely authoritative datasets available for free-ish per-call access.

The two fields that carry the meaning

shares_owned and reported_datetime. Everything else is the headline. The next two sections are about why.

What it is not

Not a prediction, and not a complete picture of who owns what. It covers a specific legal obligation on a specific set of people, and everything outside that obligation is invisible here. Institutional positions, foreign listings and anything held through a structure that does not trigger the filing threshold are all absent by design rather than by omission.

One practical wrinkle before you start

The endpoint takes a cik, the SEC's Central Index Key, not a ticker. Passing symbol returns a clear 422 saying cik parameter is required. So a ticker-driven pipeline needs a lookup hop, and the sibling /search endpoint takes a plain query and returns the same record shape, which is often the easier entry point. Identifier hops like this are a recurring tax on chained endpoints, as in the firmographics comparison.

📖 See also Simply Wall St GraphQL API: What Returns Fundamentals Instead

Why is the filing date not the trade date?

Because the law allows a gap, and the gap is the whole reason this data is not a live signal.

The measurement

In our row, transaction_date is 2026-08-31 and reported_datetime is 2026-09-02 at 6:10 pm. Two days.

That is not a data quality problem. Form 4 must be filed within two business days of the transaction, so two days is the system working correctly.

What follows from it

Every insider dataset is a record of the recent past. By the time a row exists, the trade is done, the shares have moved, and anyone who was going to react to the filing is reacting at the same moment you are. The idea that you can act on insider data before the market is arithmetically excluded by the filing rule.

What the lag is actually good for

Pattern over time. One filing is noise; a cluster of purchases by several officers across a quarter is a signal precisely because it survives the lag. The lag destroys the value of a single event and leaves the value of an aggregate intact.

How to encode that

Store both dates and never treat them as interchangeable:

lag_days = (parse(row["reported_datetime"]) - parse(row["transaction_date"])).days
if lag_days > 5:                       # outside the two-business-day rule
    flag_for_review(row)               # late filing, or a plan amendment

A filing that arrives far outside the window is itself informative and rare, so it is worth surfacing rather than averaging away. Late filings do happen, they occasionally attract enforcement attention, and a pipeline that silently averages the lag will never show you one. The same principle as watching a rate rather than an event, argued in rate limiting a third party API.

How do you pull insider transactions?

Three steps. Discovery is free.

For agents

Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:

set up https://monid.ai/SKILL.md

It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.

For humans

npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main

Step 1. Find the company

What it does. Gets you to a record without knowing the CIK.

The endpoints. secform4/search, billed per call, takes query.

The call.

monid run -p secform4 -e /search --query '{"query": "NVIDIA"}'

What comes back. The same thirteen-field record shape, filtered to matches. On 2026-09-07 this returned twelve rows for one company name, most recent first.

What it costs. About a cent per call. Current figures at monid.ai/tools.

Step 2. Pull a company's history by CIK

What it does. The full record for one filer.

The endpoints. secform4/get_company_insider_trading, per call, requires cik.

The call.

monid run -p secform4 -e /get_company_insider_trading --query '{"cik": "1045810"}'

What comes back. data.items, most recent first, with the fields above.

What it costs. Same order.

Step 3. Scan the market rather than one name

What it does. Finds activity you were not already looking for.

The endpoints. secform4/get_insider_buys and secform4/get_insider_sales, per call, no arguments needed.

What comes back. On 2026-09-07, 89 recent buys and 100 recent sales across the market. Scanning buys is usually the higher-value direction, for the reason in the next section.

Give this to your agent

$Set up https://monid.ai/SKILL.md, and then use Monid to pull recent insider buys, keep only officers and directors buying with their own money, and group them by company.

📖 See also Company News API: Press Releases Without the Newswire Contract

Does an insider sale mean anything?

Usually much less than the headline number suggests, and the field that shows you why is in the same row.

The row that proves the point

A director sold 1,848,501 shares for $410,843,671 and still held roughly 29.9 million afterwards. The sale is about six percent of the position.

Reported as "director sells $410 million of stock" it reads as an exit. Reported with shares_owned it reads as routine diversification by someone whose remaining stake is worth several billion. Same transaction, opposite stories, and the difference is one column.

Why sales are weak signals generally

Executives receive equity as compensation, so they sell to pay tax bills, diversify, buy houses and fund anything a concentrated position cannot. There are many innocent reasons to sell and only one reason to buy.

Why buys are stronger

An officer buying on the open market is spending their own after-tax money on a company they know better than you do. That is a costly signal in the economic sense, and the academic literature has generally found insider purchases carry more information than sales.

The one case where a sale does say something

A sale that is large as a fraction of the holding, by an officer rather than a director, outside a scheduled plan, and clustered with other insiders doing the same thing. Each of those conditions individually is weak. Together they are the shape worth an alert, and each is a field or a derivation you already have.

The ratio to compute

Never use the raw amount:

fraction_sold = shares_traded / (shares_traded + shares_owned)

Six percent is routine. Sixty percent is a story. The absolute dollar figure tells you how rich the person is, not what they think.

This is the same class of mistake as reading a follower count without the engagement behind it, or a price without the list price beside it, both of which we measured this month in the engagement accuracy post and the price monitoring guide. A single number lifted out of a record is almost always the wrong number.

Which endpoint should I use for which job?

EndpointWhat it doesInputOutputBest forBilling
secform4/searchFind activity by namequeryThirteen-field transaction rowsEntry point without a CIKPer call
secform4/get_company_insider_tradingOne company's historycikTransaction items, newest firstWatching a specific namePer call
secform4/get_insider_buysRecent market-wide buysnone89 rows on 2026-09-07The higher-signal directionPer call
secform4/get_insider_salesRecent market-wide salesnone100 rows on 2026-09-07Volume and contextPer call
marketbeat/get_insider_tradesSecond source per tickerTickerTransactionsCross-checking a rowPer call

Every row was verified with monid inspect on 2026-09-07. The table gives billing shape rather than figures; shape drives design and current numbers live on monid.ai/tools.

The last row exists because a second source is worth having on any dataset you act on, and the two use different identifiers, which means a disagreement is easy to spot. That is the cheap insurance argued in not depending on one vendor.

When is this the wrong dataset?

Three cases.

You want to trade on it fast. The two-day filing rule means there is no speed advantage available. Anyone selling you a real-time insider edge is selling you something the rule forbids from existing.

You want institutional positions. Form 4 covers officers, directors and 10% owners of a specific company. Fund holdings are 13F, a different form on a quarterly schedule with a 45-day lag, and a completely different dataset. The same per-jurisdiction fragmentation shows up in business entity search.

You need to know why a trade happened. The form records what changed, not the reason. A footnote sometimes indicates a pre-arranged plan, and beyond that the motive is not in the data. Anyone narrating intent from a Form 4 is inferring, and should say so.

You are outside US listings. Form 4 is an SEC requirement, so a company not listed in the US does not file one. Other jurisdictions have their own disclosure regimes with their own formats and timeliness, and none of them appears here.

And the disclosure: this is Monid's blog and we sell per-call access to these endpoints. The central point of this article is that the biggest number in the response is the least informative one, which is not a sales pitch for volume. Nothing here is investment advice, and a dataset with a legally mandated two-day lag is not an edge.

Conclusion

Insider data is unusually good in one respect: it is a legal filing rather than an estimate, so the transactions are real and the amounts are exact. What it is not is timely, and the response tells you so directly. A trade on 2026-08-31 appeared in a filing on 2026-09-02, which is the rule working, not a delay to engineer around.

So use it for patterns rather than events, weight purchases above sales, and always divide by shares_owned before forming an opinion. A director selling $410 million while keeping roughly 29.9 million shares is diversifying, and a pipeline that stored only the dollar figure would have recorded that as an exit.

Free next step: run monid run -p secform4 -e /get_insider_buys --query '{}' and look at how much smaller the buy list is than the sell list. That asymmetry is the first thing to understand about this dataset, and it costs one call. Start at monid.ai.

FAQ

What is the difference between Form 4, 13F and 13D?

Form 4 is what this article covers: an individual insider at one company reporting a change in their own holding, filed within two business days. A 13F is an institutional investment manager reporting the US equity positions it held at the end of a quarter, filed up to 45 days later, so it is far less timely and describes funds rather than people. A 13D is filed when someone acquires more than 5% of a class of shares with an intent to influence the company, which makes it the most consequential of the three and the rarest. They answer different questions and should never be blended into one "insider" table.

What is a 10b5-1 plan and why does it matter here?

It is a pre-arranged trading plan an insider sets up in advance, specifying sales on a schedule so that the actual transactions happen without discretion at the time. It exists precisely so executives can sell without it implying anything about what they currently know. Sales executed under such a plan are much weaker signals than discretionary ones, and the filing usually indicates the plan's existence in a footnote. If your analysis treats all sales alike, scheduled diversification will look like a wave of pessimism.

Does insider buying actually predict returns?

Academic work going back decades has generally found that insider purchases carry more predictive information than sales, with the effect strongest for purchases by senior officers at smaller companies. The effect sizes reported are modest, they shrink as more people trade on the signal, and none of this survives transaction costs reliably at small scale. Treat it as one input with a real but weak edge rather than a strategy, and be sceptical of anyone claiming otherwise. This is not investment advice.

Does this cover companies outside the US?

No. Form 4 is a US Securities and Exchange Commission requirement, so it covers companies listed on US exchanges, including foreign companies with a US listing. A company listed only in London, Tokyo or Frankfurt files under its own regime, with different forms, different thresholds and often much longer deadlines. If your universe is global you need a source per jurisdiction, and the coverage gap is the same shape as the one described in the PitchBook guide.

Last updated September 2026.

insider trading apisec form 4insider transactionsfinancial datamarket signals