SEC Form 4 Scraper - Insider Trading
Pricing
from $1.40 / 1,000 filings
SEC Form 4 Scraper - Insider Trading
Form 4 carries a transaction code saying what actually happened, and almost nothing uses it — so an RSU vest gets published as an insider buy and the automatic tax withholding as a sale. This decodes all 19 codes, isolates genuine open-market purchases, and detects cluster buying.
Pricing
from $1.40 / 1,000 filings
Rating
0.0
(0)
Developer
Datalayer
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
SEC Insider Trading Scraper — Form 4 With the Codes Decoded
Most insider-trading data is wrong in the same way. Here is a real Apple filing
from 17 June 2026 (accession 0001140361-26-025622), by Apple's SVP and
General Counsel:
| Code | Shares | Direction | Price |
|---|---|---|---|
| M | 30,104 | Acquired | — |
| F | 16,238 | Disposed | $296.42 |
A scraper that ignores the transaction code publishes this as "insider acquired 30,104 shares" and "insider sold 16,238 shares at $296.42."
Both are wrong. M is an RSU exercise — no cash changed hands. F is shares withheld automatically to pay the tax bill on that vest. Nobody made a decision about Apple stock. The filing says nothing.
Only two of the nineteen Form 4 transaction codes involve someone choosing to move money at the market price:
- P — bought on the open market
- S — sold on the open market
This Actor decodes all nineteen, reports P and S separately from everything else, and tells you how many filings said nothing at all.
What you get
Real buys, isolated. From a single day's market-wide sweep (11 Aug 2026): 57 filings contained an open-market trade, of which 3 were purchases and 54 were sales. The largest purchase:
Harley-Davidson (HOG) — Artie Starrs, President & CEO, bought $258,941 on the open market, increasing his personal holding by 66.7%.
That is the entire product. Three signals buried under fifty-four.
Cluster-buy detection. Two or more separate insiders buying on the open market inside the same window — the most-studied insider signal in the literature, and one that cannot be seen a filing at a time. Repeat filings by the same person do not count.
Holdings context. largestHoldingsChangePercent sizes a trade against what
that person already owned. A $250k buy that lifts a position 67% is a different
event to one that lifts it 0.4%.
10b5-1 flags. Trades executed under a pre-arranged plan were scheduled months earlier and carry no view on the price on the day. The form has carried this checkbox since December 2022 and it is read straight off the filing.
Seniority. Officer titles are free text on the form (
SVP, GC and SecretaryPresident & CEO, EVP and CFO). They are normalised to ceo,
cfo, c_suite, senior_officer, officer, ten_percent_owner, director.
Two modes
By company — pass tickers or CIKs:
{ "tickers": ["AAPL", "NVDA", "HOG"], "maxFilingsPerCompany": 100 }
Market-wide screen — sweep every Form 4 filed and keep only real trades:
{"scanAllFilings": true,"startDate": "2026-08-01","endDate": "2026-08-11","openMarketOnly": true,"excludePlannedTrades": true,"minTransactionValue": 100000}
| Field | Default | Notes |
|---|---|---|
tickers | ["AAPL"] | Resolved to CIKs via SEC's own ticker file. |
ciks | — | For registrants with no ticker. Apple is 320193. |
scanAllFilings | false | Whole-market sweep for the date range. |
startDate / endDate | — | YYYY-MM-DD. |
openMarketOnly | false | Keep only filings with a code P or S. |
excludePlannedTrades | false | Drop 10b5-1 plan executions. |
minTransactionValue | — | Dollar floor on the largest open-market trade. |
maxFilingsPerCompany | 100 | ~1 year for most large caps. |
maxFilingsTotal | 500 | Hard ceiling for the whole run. |
clusterWindowDays | 30 | Window for cluster-buy detection. |
contactEmail | — | Goes in the User-Agent, nowhere else. |
Output
filing — one row per Form 4:
{"type": "filing","ticker": "HOG","issuerName": "HARLEY-DAVIDSON, INC.","insiderName": "Starrs Artie","insiderTitle": "President & CEO","seniority": "ceo","hasOpenMarketBuy": true,"openMarketBuyValue": 258941,"openMarketSaleValue": 0,"largestHoldingsChangePercent": 66.7,"isCompensationOnly": false,"isPlanned10b5_1": false,"transactions": [{ "transactionCode": "P", "transactionMeaning": "Open-market or private purchase","category": "open_market_buy", "isInformative": true,"securityTitle": "Common Stock", "transactionDate": "2026-08-10","shares": 10000, "pricePerShare": 25.8941, "value": 258941,"sharesOwnedBefore": 15000, "sharesOwnedAfter": 25000, "holdingsChangePercent": 66.7 }]}
issuer_summary — one row per company:
{"type": "issuer_summary","ticker": "AAPL","filingsRead": 12,"compensationOnlyFilings": 5,"informativeFilings": 7,"distinctBuyers": 0,"distinctSellers": 5,"openMarketSaleValue": 111739341.32,"isClusterBuy": false,"topSeller": "LEVINSON ARTHUR D","plannedTradeFilings": 5}
The transaction codes
| Code | Meaning | Counted as a trade? |
|---|---|---|
| P | Open-market or private purchase | Yes |
| S | Open-market or private sale | Yes |
| A | Grant or award from the issuer | No — compensation |
| M, C, X, O | Exercise or conversion of a derivative | No — no cash at market |
| F | Shares withheld for tax or exercise price | No — automatic |
| D | Disposition back to the issuer | No |
| G | Bona fide gift | No |
| I | Discretionary transaction in a benefit plan | No |
| E, H | Expiration of a derivative position | No |
| J, K, L, U, W, Z | Other, swap, small, tender, will, voting trust | No |
Nothing is discarded — every transaction is returned with its code and category, so you can re-band them however you like.
Reliability
- Official SEC endpoints only:
data.sec.gov,www.sec.gov/Archives,efts.sec.gov. No login, no session, no scraping of rendered pages. - The run stays under SEC's published 10 requests/second ceiling with a single serial pacer.
- A declared
User-Agentwith a contact address is sent on every request — SEC returns 403 to anything without one. - One unparseable filing never fails the run; it lands in
RUN_SUMMARYand the rest continue.
Limits
- Form 4 XML exists from roughly 2003 onward. Older filings are scanned paper and are skipped with a recorded reason.
- EDGAR's full-text index refuses paging beyond ~10,000 hits, so market-wide sweeps walk one day at a time and warn if a day exceeds the cap.
- Officer seniority is derived from free text that companies write however they
like. The raw
insiderTitleis always on the row. - Insiders have two business days to file, so
filedFor(the trade date) and the filing date differ. Both are available. - This is public regulatory data, returned as filed. It is not investment advice and no forecast is implied by any field.