How to get real-time insider trading alerts (Form 4 webhooks, 2026)
Checking OpenInsider three times a day is a bad way to catch an insider buy. By the time you refresh, the filing has been public for hours.
The fix is to stop pulling and start getting pushed. Register the tickers you care about, and let the alert come to you the moment an insider files, with the trade already parsed so you can act on it.
Here is how to set that up: what to watch for, how to wire a webhook, how to trust what lands, and how it stacks up against the other tools.
POST /v1/webhooks. When a watched company files a Form 4, Edgrapi parses it and sends your endpoint a signed POST within minutes, carrying the insider, the transaction code, shares, price, and value. Each delivery is signed with X-Edgrapi-Signature (HMAC-SHA256) so you can verify it. Setup runs on the free tier, and you can browse live buys first at the insider radar.How do you get alerted when an insider buys?
You register a webhook with a list of tickers, and Edgrapi does the watching for you. The moment one of those companies files a Form 4, your endpoint gets a POST with the parsed trade inside.
That is the whole shift. Instead of polling EDGAR or reloading a screener, you tell the service what you care about once, and it tells you when something happens.
Under the hood, insiders are required to report their trades on Form 4 within two business days, and those filings land on the public SEC EDGAR system. Edgrapi reads that feed, parses each ownership document, and matches it against every active watchlist.
What actually counts as a real insider buy?
An open-market purchase, which is transaction code P on the Form 4. That is the one trade where the insider chose to spend their own cash on the stock, so it is the only code worth an alert.
Most Form 4 activity is not that. It is stock awards, option exercises, and shares withheld to cover taxes, all of which are the company's compensation machinery rather than a decision about the price. A lot of what looks like selling is a sale scheduled months ago under a 10b5-1 plan.
Edgrapi tags every parsed transaction with its code and a buy/sell/neutral signal, and flags 10b5-1 plans, so your alert handler can keep the P buys and drop the rest. If you want the full breakdown of the codes, the guide to tracking insider buying walks through them, and the Form 4 guide covers the filing itself.
How do you set up an insider-trade webhook?
You make one POST to register the webhook, with your endpoint URL and the tickers to watch. You get a signing secret back, shown once, and alerts start firing on the next new filing.
curl -X POST https://api.edgrapi.com/v1/webhooks \
-H "X-API-Key: edgr_your_key" \
-H "Content-Type: application/json" \
-d '{"url": "https://you.example.com/hook",
"tickers": ["ACME", "NVDA", "TSLA"],
"events": ["insider"]}'
You can watch up to 50 tickers per webhook. Registering and running a webhook does not spend credits, so once it is set up the alerts do not eat into your monthly balance. When you first register, Edgrapi records the newest filing for each company as a baseline and does not replay it, so you never get a flood of history on day one. Only genuinely new filings fire.
What is in an alert, and how do you trust it?
The body is the parsed trade, so you do not open the filing to read it. The header is a signature, so you can prove the alert came from Edgrapi and was not altered on the way.
A delivery looks like this: an X-Edgrapi-Signature header, and a JSON body with the ticker, the filing date, a link to the document, and a data object holding the insider and their parsed transactions.
{
"event": "insider.filed",
"ticker": "ACME",
"company": "Acme Corp",
"filed": "2026-07-18",
"url": "https://www.sec.gov/Archives/edgar/data/...",
"data": {
"owner": "Jane Roe",
"relationship": ["officer"],
"transactions": [
{"code": "P", "signal": "buy", "shares": 40000,
"price_per_share": 31.0, "value": 1240000, "plan_10b5_1": false}
]
}
}
To trust it, recompute the signature. It is an HMAC-SHA256 of the raw request body, keyed with the secret you got at creation. Compare it to the header, and reject anything that does not match.
import hmac, hashlib
def is_from_edgrapi(raw_body: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, signature)
Do the check on the raw bytes, before you parse the JSON, so the signature covers exactly what was sent.
How does this compare to other insider-alert tools?
Honestly, a few tools do this well, and which one fits depends on what you are building. Consumer apps send email or Telegram and are not programmable. Apify's monitor pushes to webhooks but bills per alert. Form4API is the closest developer alternative and adds a longer history and a Python SDK.
| What you get | Edgrapi | Form4API | Apify monitor | Email / Telegram apps |
|---|---|---|---|---|
| Signed webhook | Yes, HMAC | Yes | Yes | No, not programmable |
| Parsed JSON | Yes | Yes | Mostly | Human-readable text |
| Watchlist filter | Yes | Yes | Yes | Often premium-only |
| Free tier | Yes, 100 credits/mo | Yes, daily quota | Pay per alert | Usually delayed |
| Covers 8-K events too | Yes | No | No | No |
Edgrapi's edge is that the same key also covers 8-K material events and company fundamentals, plus a free public radar, and that deliveries are metered by credits rather than a per-alert fee. If you only ever want Form 4 and a deep history, Form4API is a fair pick too. Both beat writing your own EDGAR parser.
How fast are the alerts, really?
Minutes, not seconds, and that is the right amount of fast. Edgrapi checks EDGAR for new filings on a short interval, so an alert reaches you a few minutes after the filing posts.
The reason sub-second delivery does not matter here is the filing itself. A Form 4 is reported up to two business days after the insider trades, so the disclosure is already old news by the time it is public. Shaving the gap from hours to minutes is the win. Shaving it from minutes to seconds is not.
If you also want 8-K events on the same webhook, add "8-k" to the events list when you register. The 8-K guide covers what those events look like.
Start with a watchlist
Pick five tickers you actually follow, point a webhook at a test endpoint, and watch what comes through. If you want to see the raw material first, the radar shows the biggest open-market buys happening right now.
The free tier needs no card, and the webhook docs take about five minutes to wire up. Grab a key from the dashboard and register your first watchlist.
See today's insider buys, then set an alert →
Edgrapi surfaces public SEC filings for research. It is not investment advice, and insider activity does not predict future returns.
Frequently asked questions
How do I get alerts when insiders buy a stock?
Register a webhook with a list of tickers to watch. When one of those companies files a Form 4 on SEC EDGAR, Edgrapi parses it and sends your endpoint a signed POST with the trade already broken out: the insider, the transaction code, shares, price, and value. You do it once with POST /v1/webhooks, and it runs on the free tier, 100 credits a month, no card.
Are insider trading alerts free?
On Edgrapi, setting up and running a webhook does not spend credits, so alerts are effectively unmetered once registered. The free tier gives you 100 credits a month with no card for the REST endpoints, and the public insider radar at edgrapi.com/insider plus its daily email digest are free to anyone. Most consumer services charge a monthly subscription or a fee per alert.
How fast are the webhook alerts?
You hear about a filing within minutes of it posting to EDGAR. That is more than fast enough, because a Form 4 is itself filed up to two business days after the trade. Being alerted a few minutes rather than a few hours after the disclosure posts is what matters, and Edgrapi checks for new filings on a short interval so you are not left refreshing a page.
How do I verify a webhook is really from Edgrapi?
Every delivery includes an X-Edgrapi-Signature header, which is an HMAC-SHA256 of the raw request body computed with the signing secret you got when you created the webhook. Recompute that HMAC on your end and compare. If it matches, the alert is genuinely from Edgrapi and the body was not tampered with. The secret is shown once, at creation.
Can I filter to only insider buys and skip the noise?
Yes. Each parsed transaction carries its Form 4 code and a buy/sell/neutral signal, so you can act on code P, an open-market purchase made with the insider's own money, and ignore awards, option exercises, and tax-withholding sales. Trades scheduled under a 10b5-1 plan are flagged so you can drop those too. Filtering happens in your handler on fields that are already parsed.
Can the same webhook alert me to 8-K events?
Yes. When you register a webhook you choose the event types, so one webhook can watch both Form 4 insider trades and 8-K material events like earnings, acquisitions, and executive changes for the same watchlist. Edgrapi parses the 8-K item codes and labels them, so the alert tells you what kind of event fired without opening the filing.