Other
SEC Form 4 Insider Trades Scraper
Transaction-level SEC Form 4 insider-trading data -- who traded, how many shares, at what price, under which transaction code -- parsed straight out of the ownership XML, one row per trade, not one row per filing.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
Every SEC Form 4 filing carries an <ownershipDocument> XML body listing the actual insider trades behind the filing -- who traded, how many shares, at what price, under which transaction code, and what they own afterward. Most EDGAR tooling stops at the filing index (form type, date, accession number); this Actor goes one level deeper and parses that XML directly, resolving tickers to CIKs, walking each issuer's recent Form 4 filings, and emitting one row per buy, sell, award, or option-exercise line item -- joint filings included, with every reporting owner correctly attributed to their share of each transaction.
What we handle for you
- 🔁 Retries with exponential backoff on
429/5xxand honoursRetry-After-- we never hammer SEC's servers into a block. - 🧱 Rate-limit-aware pacing -- a shared request-interval floor keeps every run inside SEC's ~10 req/s polite-use ceiling, even across concurrent runs.
- 🧾 Transaction-level parsing, not just a filing index -- every buy, sell, award, and exercise line item, with footnote-only fields honestly reported as
nullinstead of guessed. - 🧊 Joint filings handled correctly -- every reporting owner on a multi-owner Form 4 gets attributed rows, never silently dropped.
- 🧊 Clean, typed dataset rows -- Pydantic-validated, ISO-8601 timestamps, stable accession-number IDs.
- 💰 Pay-Per-Event pricing -- you only pay for transaction rows that land in your dataset. No data, no charge (beyond the small warm-up fee).
Use cases
- Insider-trading signal feeds -- quant and fintech shops ingesting transaction-level buy/sell data as a raw factor input.
- Activist and executive-conviction tracking -- flag large open-market buys (code P) by officers and directors across a watchlist.
- Equity research workflows -- pull every recent insider transaction for a covered issuer without hand-parsing XML.
- Financial media and newsletters -- surface notable Form 4 activity (large sells, cluster buying) for a daily brief.
- Compliance and governance monitoring -- audit officer/director trading windows against blackout-period policy.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
tickers | array | yes | Ticker symbols (e.g. AAPL) or 10-digit CIKs to sweep for Form 4 insider-transaction filings. We resolve tickers to CIKs via SEC's company_tickers.json. |
lookbackDays | integer | no | Only include Form 4 filings with a filing date within this many days of run start. |
maxFilingsPerIssuer | integer | no | Cap on the number of Form 4 filings fetched and parsed per issuer -- bounds egress on issuers with heavy insider-trading activity. |
includeDerivative | boolean | no | Include derivative-table transactions -- stock options, RSUs, and similar -- as output rows. |
includeNonDerivative | boolean | no | Include non-derivative-table transactions -- common-stock buys and sells -- as output rows. |
userAgent | string | no | SEC requires a descriptive User-Agent with contact info on every request. Default identifies as Devil Scrapes; replace with your own contact if you want SEC to associate requests with your organisation. |
{
"tickers": [
"AAPL"
],
"lookbackDays": 30,
"maxFilingsPerIssuer": 3,
"includeDerivative": true,
"includeNonDerivative": true,
"userAgent": "DevilScrapes-Form4/1.0 (contact: apify.com/DevilScrapes)",
"proxyConfiguration": {
"useApifyProxy": true
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
issuer_cikissuer_nameissuer_tickerowner_cikowner_nameis_directoris_officeris_ten_percent_ownerofficer_titletransaction_datetransaction_codetransaction_code_labelis_derivativesecurity_titleshares_transactedprice_per_share
{
"issuer_cik": "0000320193",
"issuer_name": "Apple Inc.",
"issuer_ticker": "AAPL",
"owner_cik": "0002148403",
"owner_name": "Ternus John",
"is_director": true,
"is_officer": true,
"is_ten_percent_owner": false,
"officer_title": "CEO",
"transaction_date": "2026-09-01",
"transaction_code": "A",
"transaction_code_label": "Grant/award/other acquisition",
"is_derivative": true,
"security_title": "Restricted Stock Unit",
"shares_transacted": 7690.0,
"price_per_share": null,
"transaction_value_usd": null,
"acquired_disposed": "A",
"shares_owned_after": 7690.0,
"ownership_nature": "D",
"indirect_ownership_note": null,
"underlying_security_title": "Common Stock",
"underlying_shares": 7690.0,
"exercise_price": null,
"exercise_date": null,
"expiration_date": null,
"accession_number": "0001140361-26-035362",
"filed_at": "2026-09-01T18:32:04-04:00",
"period_of_report": "2026-09-01",
"source_xml_url": "https://www.sec.gov/Archives/edgar/data/320193/000114036126035362/form4.xml",
"scraped_at": "2026-09-03T12:00:00+00:00"
} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Transaction row | $0.0025 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
Limitations
- Form 4 only -- Form 3 (initial ownership) and Form 5 (annual) filings are out of scope.
- No unbounded historical backfill -- lookback is bounded by
lookbackDaysandmaxFilingsPerIssuer, with older filings pulled from an issuer's overflow submissions pages only as needed to cover the window. - No "sweep everything filed today" firehose entry point -- you supply the tickers/CIKs to sweep; there's no reverse market-wide Form 4 stream in v1.
- Amended filings (form "4/A") are excluded by default.
FAQ
Is this the same as your SEC EDGAR Filings Scraper?
Do I need a SEC EDGAR API key?
What happens on a joint filing with multiple insiders?
Why is price_per_share sometimes null?
Do you cover Form 3 or Form 5?
Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors