SFOLN

Catalogue / Compliance & public records

SEC Insider Trading Tracker – Form 4

sfoln/sec-insider-trading · News, AI, Automation

Insider trades from SEC Form 4 and Form 5 filings: one row per transaction with the insider's name and role, date, transaction code, shares, price, value, holdings after and 10b5-1 flag. By company ticker, CIK or name, or for all companies. $2 per 1,000 transactions.

About

What it does

Track insider trading from SEC Form 4 and Form 5 filings: one clean row per transaction with the insider's name and role as filed (director, officer and title, 10% owner), transaction date, SEC transaction code and its meaning (open-market purchase, sale, award, option exercise, tax withholding, gift), shares, price, dollar value, shares owned afterwards, direct or indirect ownership, the Rule 10b5-1 flag and the filing's footnotes. Look up companies by ticker, CIK or name, or read the latest filings of all companies to spot insider buying across the market. Built for investors, quant and research teams, journalists and AI agents.

Price

Price per delivered record

EventPricePer 1,000Charged for
Insider transaction
insider-transaction
$0.002$2 / 1,000One transaction reported on SEC Form 4 or 5: insider, role, date, code, shares, price, value, holdings after.

Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.

Run

Call it from code, an agent or the Console

curl · synchronous run, rows in the response
curl -X POST "https://api.apify.com/v2/actors/sfoln~sec-insider-trading/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"companies":["AAPL"],"maxTransactionsPerCompany":5}'
mcp.json · hosted Apify MCP server
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/sec-insider-trading"
    }
  }
}
asynchronous run · for large batches
POST https://api.apify.com/v2/actors/sfoln~sec-insider-trading/runs?maxTotalChargeUsd=1
GET  https://api.apify.com/v2/actor-runs/{runId}            # until status is SUCCEEDED
GET  https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json

Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Show the five most recent insider transactions at Apple from SEC Form 4 filings, with who traded, the price and the value.

Input

Input fields

Companies (issuers) by ticker, CIK or name: one dataset row per Form 4/5 transaction plus one summary per company. Leave companies empty for the latest filings of all companies.

FieldTypeDefaultMeaning
companiesarray—Companies
Issuers by ticker (AAPL), CIK (320193) or name, one per line. Leave empty to get the latest Form 4/5 transactions of all companies in the date window (default: the last 3 days). Accounts on the Apify free plan can process up to 10 companies per run and 20 transactions per company.
transactionCodesarray—Transaction codes
Only these Form 4 codes, e.g. P (open-market purchase), S (sale), A (award), M (option exercise), F (tax withholding), G (gift). Empty: all.
dateFromstring—Filed from
Earliest filing date: YYYY-MM-DD or a span such as "30 days". Default: none for companies, the last 3 days for all companies.
dateTostring—Filed to
Latest filing date (YYYY-MM-DD or a span such as "7 days"). Empty: today.
minTransactionValueinteger—Minimum transaction value (USD)
Only transactions with shares × price of at least this many dollars (transactions without a price are then left out). Range 0–….
includeDerivativebooleantrueInclude derivative transactions
Also return option, RSU and warrant transactions (Table II of Form 4).
includeAmendmentsbooleantrueInclude amendments
Also read amended filings (4/A, 5/A).
maxTransactionsPerCompanyinteger50Max transactions per company
Transactions returned per company, newest filings first (for all companies: transactions in total). Range 1–5000.
maxCompaniesinteger100Max companies
Safety cap on companies processed in this run; the rest are ignored and counted as inputItemsDropped in the OUTPUT record. Range 1–1000.
concurrencyinteger2Concurrency
Companies processed in parallel. All requests share SEC's rate limit (8 requests per second). Range 1–5.
includeRawbooleanfalseInclude raw upstream data
Attach the transaction as parsed from the filing's XML to each row.
Example input
{
  "companies": [
    "AAPL"
  ],
  "maxTransactionsPerCompany": 5
}

Output

One record per input item

Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.

FieldTypeMeaning
inputstring | objectInput
The company as entered, or latest-filings for all companies.
recordTypestringRecord type
transaction (one per delivered transaction, charged) | summary (one per input, not charged). e.g. "transaction"
positionintegerPosition
1-based position of the transaction within its input (newest filings first).
accessionNumberstringAccession number
formstringForm
4, 4/A, 5 or 5/A. e.g. "4"
filingDatestring | nullFiled
periodOfReportstring | nullPeriod of report
issuerCikinteger | nullIssuer CIK e.g. 320193
issuerNamestring | nullIssuer e.g. "Apple Inc."
issuerTickerstring | nullTicker e.g. "AAPL"
ownerNamestring | nullInsider
Reporting owner as filed (first owner of a joint filing).
ownerCikinteger | nullInsider CIK
ownerRelationshipstring | nullRelationship
As filed, e.g. "Director, Officer (Chief Financial Officer)", "10% owner".
isDirectorbooleanDirector
isOfficerbooleanOfficer
officerTitlestring | nullOfficer title
isTenPercentOwnerboolean10% owner
reportingOwnersarrayReporting owners
Every owner of the filing: [{ name, cik, relationship }].
tablestringTable
non-derivative (shares) | derivative (options, RSUs, warrants).
securityTitlestring | nullSecurity
transactionDatestring | nullTransaction date
transactionCodestring | nullCode
SEC transaction code: P purchase, S sale, A award, M exercise, F tax withholding, G gift, … e.g. "S"
transactionCodeDescriptionstring | nullCode meaning
acquiredDisposedstring | nullA/D
A = acquired, D = disposed.
sharesnumber | nullShares
pricePerSharenumber | nullPrice per share
transactionValuenumber | nullValue (USD)
shares × price (null without a price).
sharesOwnedAfternumber | nullOwned after
directOrIndirectstring | nullOwnership
D = direct, I = indirect.
ownershipNaturestring | nullNature of indirect ownership
conversionOrExercisePricenumber | nullExercise price
exerciseDatestring | nullExercisable from
expirationDatestring | nullExpires
underlyingSecurityTitlestring | nullUnderlying security
underlyingSharesnumber | nullUnderlying shares
deemedExecutionDatestring | nullDeemed execution date
equitySwapInvolvedboolean | nullEquity swap
isRule10b5_1boolean | nullRule 10b5-1 plan
The filing's Rule 10b5-1(c) checkbox (filings since 2023; null when absent).
footnotesarrayFootnotes
Texts of the footnotes the transaction references.
xmlUrlstringFiling XML
filingIndexUrlstringFiling index
querystringQuery
Summary records: the company as entered.
foundbooleanFound
matchedBystringMatched by
cik | ticker | name | name-search.
dateFromstring | nullFrom
dateTostring | nullTo
filingsInWindowinteger | nullFilings in window
All-companies summary: Form 4/5 filings EDGAR lists for the date window.
filingsScannedintegerFilings read
resultsDeliveredintegerTransactions delivered
stopReasonstringStop reason
limit | free_plan | end | budget | aborted | deadline | max_pages | error
statusstringStatus
ok | not_found | error | skipped_budget | skipped_free_plan | skipped_unmetered e.g. "ok"
chargedbooleanCharged
chargedEventstringCharged event
chargedCountintegerEvents charged
sourcestringSource
sec-edgar
fetchedAtstringFetched at
errorobjectError
{ code, message, provider?, status? } when status is not ok. Runtime codes: budget_exhausted, free_plan_limit, unmetered, aborted, charge_failed, record_too_large, invalid_record, dataset_push_failed; upstream codes: auth, rate_limit, timeout, network, server, client, invalid_response, not_found.
warningsarrayWarnings
rawobjectRaw
The transaction as parsed from the filing XML (only with includeRaw).
Example record
Example record
[
  {
    "input": "AAPL",
    "recordType": "transaction",
    "position": 3,
    "accessionNumber": "0001140361-26-038674",
    "form": "4",
    "filingDate": "2026-10-05",
    "periodOfReport": "2026-10-01",
    "issuerCik": 320193,
    "issuerName": "Apple Inc.",
    "issuerTicker": "AAPL",
    "ownerName": "DOE JANE Q",
    "ownerCik": 9990001,
    "ownerRelationship": "Director, Officer (Executive Chair)",
    "isDirector": true,
    "isOfficer": true,
    "officerTitle": "Executive Chair",
    "isTenPercentOwner": false,
    "reportingOwners": [
      {
        "name": "DOE JANE Q",
        "cik": 9990001,
        "relationship": "Director, Officer (Executive Chair)"
      }
    ],
    "table": "non-derivative",
    "securityTitle": "Common Stock",
    "transactionDate": "2026-10-02",
    "transactionCode": "S",
    "transactionCodeDescription": "Open market or private sale",
    "acquiredDisposed": "D",
    "shares": 23143,
    "pricePerShare": 331.44,
    "transactionValue": 7670515.92,
    "sharesOwnedAfter": 3432778,
    "directOrIndirect": "D",
    "ownershipNature": null,
    "conversionOrExercisePrice": null,
    "exerciseDate": null,
    "expirationDate": null,
    "underlyingSecurityTitle": null,
    "underlyingShares": null,
    "deemedExecutionDate": null,
    "equitySwapInvolved": false,
    "isRule10b5_1": true,
    "footnotes": [
      "This transaction was made pursuant to a Rule 10b5-1 trading plan adopted by the reporting person on May 28, 2026.",
      "This transaction was executed in multiple trades at prices ranging from $330.66 to $331.655; the price reported above reflects the weighted average sale price."
    ],
    "xmlUrl": "https://www.sec.gov/Archives/edgar/data/320193/000114036126038674/form4.xml",
    "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/320193/000114036126038674/0001140361-26-038674-index.htm",
    "status": "ok",
    "charged": true,
    "chargedEvent": "insider-transaction",
    "source": "sec-edgar",
    "fetchedAt": "2026-10-14T10:00:00.000Z"
  },
  {
    "input": "AAPL",
    "query": "AAPL",
    "issuerCik": 320193,
    "issuerName": "Apple Inc.",
    "issuerTicker": "AAPL",
    "matchedBy": "ticker",
    "filingsScanned": 5,
    "recordType": "summary",
    "resultsDelivered": 50,
    "stopReason": "limit",
    "status": "ok",
    "charged": false,
    "source": "sec-edgar",
    "fetchedAt": "2026-10-14T10:00:00.000Z"
  }
]

FAQ

Questions

Which transactions are included?
Every transaction in Table I (shares) and, unless switched off, Table II (options, RSUs, warrants) of Forms 4 and 5, including amendments. Holdings reported without a transaction are not rows. Filter by transaction code, for example P for open-market purchases.
Can I see trades across all companies?
Yes: leave companies empty to read the latest Form 4 and 5 filings of all companies in the date window (default: the last 3 days), newest filing date first, combined with code and value filters to find, for example, large open-market purchases.

Machine-readable

This page for agents