SEC EDGAR Insider Trades (Form 4) & 13F Holdings
Pricing
Pay per event
SEC EDGAR Insider Trades (Form 4) & 13F Holdings
Pricing
Pay per event
Rating
0.0
(0)
Developer
David-Solal Chalmeau
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Read the SEC's own filings as flat JSON rows — no API key, no scraping. Two modes:
- insider — Form 4 (and optionally 4/A, 5, 5/A) transactions for any US issuer: who traded, their role, the date, the code, shares, price, value and their holding afterwards. One row per reported line: transactions and holdings statements, with every reporting owner on joint filings.
- holdings — the newest 13F-HR of an institutional manager (by period of report, so a late amendment to an old quarter cannot displace the current book): every holding line with CUSIP, shares, reported value, discretion and voting authority. One row per holding line; each row says whether the filing was sliced (
truncated,holdingLinesTotal).
Rows are ready for portfolio monitoring, insider-flow research, compliance checks, dashboards or an AI agent.
Example input — insider transactions
{ "mode": "insider", "tickers": ["AAPL"], "maxFilingsPerIssuer": 3 }
{ "mode": "insider", "ciks": ["320193", "789019"], "forms": ["4", "4/A"], "sinceDate": "2026-01-01", "transactionCodes": ["P", "S"], "includeDerivative": false, "maxRows": 300 }
Example input — 13F holdings
{ "mode": "holdings", "ciks": ["1067983"] }
13F mode needs the manager's CIK (a filer code, not a ticker — most 13F managers have no ticker). You can find it on the manager's page at sec.gov/edgar/searchedgar/companysearch.
Example output (real run, one insider row)
{"mode": "insider","ticker": "AAPL","issuerCik": "0000320193","issuerName": "Apple Inc.","ownerName": "Newstead Jennifer","ownerCik": "0001780525","officerTitle": "SVP, GC and Government Affairs","isDirector": false,"isOfficer": true,"isTenPercentOwner": false,"formType": "4","filingDate": "2026-10-22","periodOfReport": "2026-10-20","accessionNumber": "0001140361-26-040540","filingUrl": "https://www.sec.gov/Archives/edgar/data/320193/000114036126040540/form4.xml","searchedFrom": "2026-10-02","fetchedAt": "2026-10-28T10:20:41.026Z","rowType": "transaction","isDerivative": false,"securityTitle": "Common Stock","transactionDate": "2026-10-20","transactionCode": "S","transactionCodeLabel": "open market or private sale","shares": 2399,"pricePerShare": 339.62,"totalValue": 814748.38,"acquiredDisposed": "D","sharesOwnedAfter": 34795,"directOrIndirect": "D","underlyingSecurityTitle": null,"ownerCount": 1,"reportingOwners": [{ "name": "Newstead Jennifer", "cik": "0001780525", "officerTitle": "SVP, GC and Government Affairs", "isDirector": false, "isOfficer": true, "isTenPercentOwner": false }]}
Example output (real run, one 13F holding row)
{"mode": "holdings","managerCik": "0001067983","managerName": "BERKSHIRE HATHAWAY INC","formType": "13F-HR","filingDate": "2026-08-14","periodOfReport": "2026-06-30","accessionNumber": "0001193125-26-352200","filingUrl": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526352200/56757.xml","searchedFrom": "2013-01-01","isAmendment": false,"issuerName": "ALLY FINL INC","titleOfClass": "COM","cusip": "02005N100","valueReported": 577211815,"valueUnit": "dollars","valueUsd": 577211815,"shares": 12561737,"sharesType": "SH","impliedPricePerShare": 45.95,"putCall": null,"investmentDiscretion": "DFND","otherManager": "4","votingSole": 12561737,"votingShared": 0,"votingNone": 0,"truncated": false,"holdingLinesTotal": 89,"fetchedAt": "2026-10-28T10:20:46.458Z"}
Fields
Shared by every row: mode, fetchedAt, searchedFrom (the first filing date the run actually read for that target; with sinceDate, the start of the window searched) and the filing context formType, filingDate, accessionNumber, filingUrl (the exact SEC document the row came from).
Insider rows add: ticker, issuerCik, issuerName, ownerName, ownerCik, officerTitle, isDirector, isOfficer, isTenPercentOwner, reportingOwners (every owner on a joint filing), ownerCount, periodOfReport, rowType (transaction or holding), isDerivative, securityTitle, transactionDate, transactionCode, transactionCodeLabel, shares, pricePerShare, totalValue, acquiredDisposed, sharesOwnedAfter, directOrIndirect, underlyingSecurityTitle, truncated, filingLinesTotal.
13F rows add: managerCik, managerName, periodOfReport, isAmendment, issuerName, titleOfClass, cusip, valueReported, valueUnit, valueUsd, shares, sharesType, impliedPricePerShare, putCall, investmentDiscretion, otherManager, votingSole, votingShared, votingNone, truncated, holdingLinesTotal.
Field types are explicit, not all strings: 14 are number, 6 are boolean, reportingOwners is an array, the other 34 are string (the array's elements are {name, cik, officerTitle, isDirector, isOfficer, isTenPercentOwner}), and a field the filing does not state is null, never a guessed value.
Error rows carry input and error instead: TICKER_NOT_FOUND, CIK_NOT_FOUND, NO_FILINGS, NO_13F_FILING, NO_INFORMATION_TABLE, UPSTREAM_FAILED, PARSE_FAILED, SKIPPED_MAX_ROWS. Absence errors (NO_FILINGS, NO_13F_FILING) also carry searchedFrom and name the window in message; SKIPPED_MAX_ROWS names a target that maxRows was reached before, and is free.
Pricing
Pay per event: a small start fee per run, plus one charge per delivered row — one Form 4 / 5 transaction or holding line, or one 13F holding line. Tickers or CIKs that cannot be resolved, filings with nothing to deliver, failed upstream requests and targets maxRows was reached before (SKIPPED_MAX_ROWS) come back as free error rows and are not charged. If your spending limit is reached the Actor stops cleanly instead of running unpaid. Current prices are shown on this page.
Run stats report what the platform actually did: deliveredFree is the shared kit's own counter, and charged is the number of events billed. On an unmonetized run — charging available but returning chargedCount: 0 with no limit — the rows are still delivered and charged is 0 (deliveredFree stays 0, because the kit counts a row it never billed as delivered, not free); read charged, never delivered, to know what you paid for.
Good to know
- Source: the official SEC EDGAR endpoints
data.sec.gov/submissions/CIK##########.json,www.sec.gov/files/company_tickers.jsonand the filing archives underwww.sec.gov/Archives/edgar/data/. No key, no login, no proxy. This Actor is not affiliated with or endorsed by the U.S. Securities and Exchange Commission. - Rate limits: the SEC fair-access policy allows 10 requests/second. Requests are made one at a time with a ~130 ms pause and identify the Actor with a descriptive User-Agent plus a contact address, as the SEC requires.
- Coverage: the submissions JSON lists the ~1,000 most recent filings per CIK. When
sinceDatereaches further back than that window the Actor also reads the archived submissions files the SEC lists underfilings.files[](BRK, for example, goes back to 1998), so an old window is answered from the filings that exist — but only the archives whose ownfilingFrom/filingTorange can hold the window are requested (Vanguard lists 14 of them). Each row states the window it came from insearchedFrom, and a "nothing found" row names the window it searched. - 13F values: the reporting unit follows the period of report, not the filing date. Periods before 2023-01-03 report thousands of dollars, periods from 2023-01-03 report dollars.
valueReportedis the number exactly as filed,valueUnitsays which unit it is (thousands,dollars, ornullwhen the period is unknown) andvalueUsdis always the normalised dollar figure.impliedPricePerShareis only derived for common shares (sharesType: "SH", noputCall): an option's notional or a debt principal makes value ÷ quantity meaningless, so it isnullthere. - Sliced runs:
maxRowscaps a run, and a large 13F (Vanguard's current book has 17,686 holding lines) can exceed it. Every delivered row — holding or insider — therefore carriestruncated(true when its filing was cut, or when the run stopped atmaxRowsbefore finishing the targets/filings it was given) plus the filing's own total:holdingLinesTotalfor 13F rows,filingLinesTotalfor Form 4 / 5 rows. A target the cap never reached is never dropped silently: it comes back as a freeSKIPPED_MAX_ROWSerror row naming it, and the run stats count it inskippedTargets. A slice can therefore never be mistaken for the whole answer. - Joint Form 4s: a filing can name several reporting owners (a parent and its affiliate).
reportingOwnerslists all of them with role flags andownerCountsays how many;ownerName/ownerCik/officerTitle/role flags describe the first owner. Form 4s that report only holdings (<nonDerivativeHolding>,<derivativeHolding>) are delivered too, withrowType: "holding"and a nulltransactionCode. - Derivative rows (
isDerivative: true, e.g. option exercises and RSU vests) often havepricePerShare: nullwhen the filing gives only a footnote. They are delivered and charged like any other row unless you setincludeDerivative: false. formsdefaults to["4"]in insider mode (13F-HR in holdings mode). Amendments are opt-in (4/A,13F-HR/A).maxFilingsPerIssuerdefaults to 10 (hard limit 100);maxRowsdefaults to 500 (hard limit 5000); up to 50 tickers/CIKs per run. A value above a hard limit is applied as the limit and reported back in the run stats (truncatedInputs), never silently discarded.- Insider filings are due within two business days, but filings are filed by companies and individuals: expect occasional corrections, late filings and amendments. Nothing here is investment advice.
- The reporting owner's street address, which appears in the raw Form 4, is deliberately not copied into the output.