Extract transaction-level insider trades from public SEC EDGAR ownership filings by ticker or CIK. The Actor saves one row per reported transaction with issuer details, reporting owner roles, shares, prices, values, ownership fields, and SEC source URLs.
At a glance
- Primary job: Monitor public-company insider transactions from official SEC filings.
- Input: Tickers and/or CIKs, filing date bounds, form types, and per-issuer filing limits.
- Output: Insider owner, role flags, transaction code/date, shares, price, value, ownership, and SEC source URLs.
- Best for: Investor research, compliance exports, BI dashboards, news monitoring, and scheduled watchlists.
Who is this for?
- Investors and analysts tracking insider purchases, sales, grants, and ownership changes.
- Compliance teams exporting auditable public Form 4 transaction records by issuer or CIK.
- Financial journalists monitoring recent insider activity around public companies.
- Data teams feeding SEC insider transactions into dashboards, alerts, or warehouses.
Input recipes
- Single ticker smoke test:
{"tickers":["AAPL"],"formTypes":["4"],"maxFilings":10} - Watchlist:
{"tickers":["AAPL","MSFT"],"formTypes":["4","4/A"],"maxFilings":10} - Compliance export by CIK:
{"ciks":["0000320193","789019"],"formTypes":["3","4","4/A","5"],"maxFilings":25,"includeFootnotes":true}
What data can you extract?
| Field | Description |
|---|---|
ticker, cik, issuerName |
Public company identifiers resolved from SEC data. |
accessionNumber, formType, filedAt, periodOfReport |
Filing metadata. |
filingUrl, xmlUrl |
Audit links back to SEC EDGAR source documents. |
reportingOwnerName, reportingOwnerCik |
Insider/reporting owner identity. |
isDirector, isOfficer, isTenPercentOwner, officerTitle |
Deterministic relationship flags from the filing. |
transactionDate, transactionCode, transactionAcquiredDisposedCode |
Transaction timing and SEC transaction codes. |
securityTitle, shares, pricePerShare, transactionValue |
Transaction economics when reported. Gifts/grants may have null price/value. |
sharesOwnedFollowingTransaction, ownershipNature, isDerivative |
Post-transaction and derivative/non-derivative ownership details. |
footnotes |
Optional filing footnotes when enabled. |
source, scrapedAt |
Provenance and scrape timestamp. |
The Actor also writes RUN_SUMMARY to the default key-value store with processed issuer counts, matched filing counts, saved transactions, warnings, and per-input failures.
Example input
{
"tickers": ["AAPL", "MSFT"],
"formTypes": ["4"],
"maxFilings": 10,
"includeDerivativeTransactions": false,
"includeFootnotes": false,
"proxyConfiguration": { "useApifyProxy": false }
}
Example output
{
"ticker": "AAPL",
"cik": "0000320193",
"issuerName": "Apple Inc.",
"accessionNumber": "0000320193-26-000001",
"formType": "4",
"filedAt": "2026-01-15",
"periodOfReport": "2026-01-13",
"filingUrl": "https://www.sec.gov/Archives/edgar/data/320193/...-index.htm",
"xmlUrl": "https://www.sec.gov/Archives/edgar/data/320193/.../form4.xml",
"reportingOwnerName": "Example Owner",
"reportingOwnerCik": "0000000000",
"isDirector": true,
"isOfficer": false,
"isTenPercentOwner": false,
"officerTitle": null,
"transactionDate": "2026-01-13",
"transactionCode": "P",
"transactionAcquiredDisposedCode": "A",
"securityTitle": "Common Stock",
"shares": 1000,
"pricePerShare": 150.25,
"transactionValue": 150250,
"sharesOwnedFollowingTransaction": 5000,
"ownershipNature": "D",
"isDerivative": false,
"footnotes": null,
"source": "SEC_EDGAR",
"scrapedAt": "2026-07-21T00:00:00.000Z"
}
API usage
cURL
curl "https://api.apify.com/v2/acts/fetch_cat~sec-form-4-insider-trades-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"tickers":["AAPL"],"formTypes":["4"],"maxFilings":10}'
Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/sec-form-4-insider-trades-scraper').call({
tickers: ['AAPL'],
formTypes: ['4'],
maxFilings: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
from apify_client import ApifyClient
client = ApifyClient('MY-APIFY-TOKEN')
run = client.actor('fetch_cat/sec-form-4-insider-trades-scraper').call(run_input={
'tickers': ['AAPL'],
'formTypes': ['4'],
'maxFilings': 10,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
MCP and AI agents
Use this Actor from Apify MCP Server when an agent needs structured SEC insider-trade rows. Configure the MCP endpoint with:
https://mcp.apify.com/?tools=fetch_cat/sec-form-4-insider-trades-scraper
Add it to Claude CLI with:
claude mcp add apify-sec-form-4 'https://mcp.apify.com/?tools=fetch_cat/sec-form-4-insider-trades-scraper'
JSON config example:
{
"mcpServers": {
"apify-sec-form-4": {
"url": "https://mcp.apify.com/?tools=fetch_cat/sec-form-4-insider-trades-scraper"
}
}
}
Example prompts:
- "Get recent Form 4 insider transactions for AAPL, maximum 10 filings."
- "Export Form 4 and 4/A rows for CIK 0000320193 with footnotes."
- "Check AAPL and MSFT insider trades and summarize the transaction codes."
Good agent prompts include the ticker/CIK list, date range, whether derivatives are needed, and the maximum filings per issuer.
Tips for best results
- Use focused watchlists: Split very large universes into smaller scheduled runs.
- Keep
maxFilingsbounded: Start with 10-25 filings per issuer, then increase if needed. - Use CIKs for compliance workflows: CIK inputs avoid ticker ambiguity and survive ticker changes.
- Expect nullable economics: Gifts, grants, and some derivative rows may not report a cash price.
Limits and responsible use
This Actor only extracts official public SEC EDGAR ownership filings. It does not provide investment advice, buy/sell recommendations, AI scoring, private brokerage data, or Congress disclosure data. Use the data for research, compliance, and reporting, and verify important decisions against the linked SEC filing.
Support
If a run does not return what you expected, open an Apify issue and include:
- the run ID or run URL;
- the exact input JSON;
- the expected output;
- the actual output or empty dataset detail;
- a reproducible public URL such as an SEC filing URL, plus the ticker or CIK used.