Skip to content
/api/v1/scrapping/insider-trading

Scrape an insider trading filing (Form 3 / 4 / 5) by URL.

Scrape an insider trading filing (Form 3 / 4 / 5) by URL. Returns parsed insider identity, issuer, and per-transaction details (transaction date, code, shares, price, post-transaction holdings). Use this for one-off Form 4 lookups when you have the URL; for the curated FinRadar insider transactions surface use /insider-module/api/insiders/transactions/latest.

10 tokensSince v1.0.0

Why use this

Single-filing Form 3/4/5 scraper — pass an insider-filing URL and receive full structured data: insider identity (name, CIK, role flags for Director/Officer/10%-Owner), issuer info (CIK, name, ticker), per-transaction rows (transaction date, transaction code A/D/M/F/G/X, shares, price, post-transaction holdings), and the Rule 10b5-1 / Section 16 status flags. Heavy (10 tokens) because the Python subprocess fetches + BeautifulSoup-parses the EDGAR Form 4 XML viewer page. For NEW integrations strongly prefer [GET /insider-module/api/insiders/transactions/latest](/docs/insiders/insider-trading-api/get-insiders-transactions-latest) — that's the curated FinRadar insider surface with `total_beneficial_ownership` aggregation and Sharadar sector enrichment, faster + structured for screening. The scrapping endpoint is preserved for: (a) sec-api.io migration compatibility, (b) tutorial follow-along, (c) one-off URL-driven lookups where you don't need the Form-4-as-a-Service structure.

Common use case

Got a Form 4 URL from an RSS alert ("Tim Cook just sold AAPL") — call this endpoint to immediately parse the transaction details (price, shares, post-transaction holdings).

Single-filing Form 3 / 4 / 5 scraper — pass an insider filing URL, receive parsed insider identity (name, CIK, role flags), issuer info, per-transaction rows (date, code, shares, price, post-transaction holdings), and the Rule 10b5-1 / Section 16 status flags critical for trading-pattern analytics. Heavy (10 tokens) — runs a Python subprocess that fetches + BeautifulSoup-parses EDGAR's Form 4 viewer page. For NEW integrations strongly prefer GET /insider-module/api/insiders/transactions/latest — the curated FinRadar insider surface aggregates total_beneficial_ownership across all ownership vehicles (direct + indirect trusts/entities), enriches with Sharadar sector/industry, and is purpose-built for insider-screening workflows. The scrapping endpoint is preserved for: (a) sec-api.io migration compatibility, (b) tutorial follow-along, (c) one-off URL-driven lookups where you don't need the Form-4-as-a-Service shape. The Rule 10b5-1 flag is critical for analytics — pre-arranged sales (Rule 10b5-1 = true) are scheduled in advance and considered "clean"; raw discretionary sales (false) are higher-signal for sentiment analysis. Note: returns Form 3 (initial holdings) and Form 5 (annual reconciliation) too, in addition to the standard Form 4 — check data.formtype to route processing.

Parameters

NameInRequiredDefaultAllowedDescriptionExample

Response schema

FieldTypeNullableDescription
queryobjectnoEcho of input parameters.
query.formTypestringnoAlways `"Form 4"` — endpoint name preserved even when the underlying filing is a Form 3 or Form 5.
query.linkstringnoEchoed input URL.
dataobjectnoParsed Form 3/4/5 record — see `data.*` fields. Camel-cased field names preserved from EDGAR's stored form.
data.formtypestringnoDetected form type — `3`, `4`, `5`, `4/A`, etc. Use to route processing logic (Form 3 = initial holdings; Form 4 = changes; Form 5 = annual reconciliation).
data.formtitlestringnoFiling title as displayed in the EDGAR viewer (e.g. `"FORM 4 STATEMENT OF CHANGES IN BENEFICIAL OWNERSHIP"`).
data.formstatementstringnoThe legal statement block from the form header — typically references Section 16(a) of the Securities Exchange Act.
data.omb_approvalobjectnoOMB approval block — `{ombnumber, hoursperresponse}`. Useful for forensic / audit-trail work; ignore for analytics.
data.notSubjectToSection16booleanno`true` when the insider has marked the "no longer subject to Section 16" checkbox (e.g. departing executives filing a final Form 4). False otherwise.
data.rule10b51Planbooleanno`true` when the transaction is executed under a pre-arranged Rule 10b5-1 plan (a SEC-sanctioned defense against insider-trading allegations — "I scheduled this sale 6 months ago, not based on material non-public info"). Critical signal for insider-transaction analytics — Rule 10b5-1 sales are pre-planned, raw discretionary sales aren't.
data.issuerobjectnoIssuer info — see `data.issuer.*` fields.
data.issuer.cikstringyesIssuer CIK as parsed from the form's issuer block. Null when the parse fails (rare).
data.issuer.namestringyesIssuer's legal entity name (e.g. `"APPLE INC"`).
data.issuer.tradingSymbolstringyesIssuer's ticker as reported on the Form 4 (e.g. `"AAPL"`). Authoritative for the filing — use this rather than CIK→ticker lookup if available.
data.issuer.transactiondatestringyesDate of earliest transaction in the filing (typically the trade date for Form 4).
data.amendmentDatestringyesDate of original filing when this is an amendment (`/A` suffix). Null on non-amendments.
data.individualOrJointstringyes`Individual` or `Joint/Group` — Form 4 supports group filings by multiple insiders sharing a single submission.
data.reportingOwnersarraynoArray of reporting owners — typically 1 element on individual filings, multiple on joint/group filings. Each entry: `{name, cik, address, relationship: {director, officer, tenPercentOwner, other, officerTitle}}`.
data.nonDerivativeTransactionsarraynoArray of non-derivative (i.e. direct equity) transactions. Each entry: `{title, transactionDate, transactionCode, transactionAmount, transactionPrice, sharesOwnedFollowingTransaction, ownership}`. Empty array when no direct-equity activity.
data.derivativeTransactionsarraynoArray of derivative (option / warrant / convertible) transactions. Includes additional fields for strike price, expiration, underlying security. Empty array when no derivative activity.
data.signatureobjectyesSignature block — `{signatureName, signatureDate}`. The signature is the insider's electronic signature confirming the filing.

Sample response

·
  • "query":
    • "formType": "Form 4"
    • "link": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0001214156&type=4"
    }
  • "data":
    • "formtype": "4"
    • "formtitle": "FORM 4 STATEMENT OF CHANGES IN BENEFICIAL OWNERSHIP"
    • "formstatement": "OMB APPROVAL Filed pursuant to Section 16(a)..."
    • "omb_approval":
    • "notSubjectToSection16": false
    • "rule10b51Plan": true
    • "issuer":
    • "amendmentDate": null
    • "individualOrJoint": "Individual"
    • "reportingOwners":
    • "nonDerivativeTransactions":
    • "derivativeTransactions": []
    • "signature":
    }
}

Errors

StatusLabelDescription
200OKRequest succeeded.
400Bad RequestInvalid query, body, or path parameter.
401UnauthorizedMissing or invalid Authorization header / api_Token.
402Payment RequiredInsufficient token balance for this call. Top up
429Too Many RequestsRate limit exceeded for your tier (see /pricing for tier limits). Tier limits
500Server ErrorUnexpected server-side failure. Retry with backoff; report if persistent.

Code samples

curl "https://api.finradar.ai/api/v1/scrapping/insider-trading?api_Token=YOUR_API_KEY" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).