API reference · Dataset schema 2.0.0

SEC Form 4 data,
documented for audit.

Complete REST reference and field-level documentation for InsiderAlpha's quality-screened transaction API and versioned research dataset.

Published rows

1,633,946

Documented fields

64

Schema

v2.0.0

Release

Jul 29, 2026

01 / Overview

One pipeline, two delivery modes

The API and bulk dataset use the same commercial eligibility rules. Choose the API for current application queries and the versioned CSV for exhaustive historical analysis.

REST API

Recent transactions, ticker and executive lookups, largest events and exact calendar-window analytics through RapidAPI.

Maximum 1,000 rows per request

Bulk research release

All publishable rows, SEC lineage, quality state, normalized roles, cluster windows and price outcomes in one versioned UTF-8 CSV.

Research workloads · Python · R · SQL

InsiderAlpha provides public-record data and derived research fields, not investment recommendations. Technical transaction codes must not be interpreted as open-market buying or selling.

02 / Quickstart

First successful request

Subscribe to the API in RapidAPI, keep the application key on your server and execute either example below.

cURL
curl --request GET \
  --url 'https://complete-s-p-500-insider-trading-dataset-sec-form-4.p.rapidapi.com/api/v1/transactions/ticker/TSLA?limit=5' \
  --header 'x-rapidapi-host: complete-s-p-500-insider-trading-dataset-sec-form-4.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'
Python · requests
import requests

url = "https://complete-s-p-500-insider-trading-dataset-sec-form-4.p.rapidapi.com/api/v1/analytics/snapshot/TSLA"
response = requests.get(
    url,
    params={"days": 30},
    headers={
        "x-rapidapi-host": "complete-s-p-500-insider-trading-dataset-sec-form-4.p.rapidapi.com",
        "x-rapidapi-key": "YOUR_RAPIDAPI_KEY",
    },
    timeout=30,
)
response.raise_for_status()
print(response.json())

03 / Authentication

RapidAPI customer credentials

Customer traffic is authenticated and rate-limited by RapidAPI. The proxy secret is an infrastructure credential and must never be placed in customer code.

x-rapidapi-key

Your application key from the RapidAPI dashboard. Treat it as a server-side secret.

x-rapidapi-host

complete-s-p-500-insider-trading-dataset-sec-form-4.p.rapidapi.com

Never call the paid API directly from browser JavaScript. Use a server route, serverless function or backend proxy so the key cannot be extracted from the client bundle.

04 / REST endpoints

8 documented operations

Every operation below uses the same publishable-row filter: current rows, non-future transaction dates and validation_status equal to sec_verified or validated_legacy.

Latest transactions

Returns the most recent publishable transactions across the covered universe, plus directional metrics for the returned batch.

GET/api/v1/transactions/latest

Parameters

limitquery · integeroptional

Maximum number of transactions returned.

default=50 · 1–1000

200 response

{
  "count": 50,
  "limit_applied": 50,
  "data": [{ "...": "TransactionOut" }],
  "batch_metrics": {
    "buy_volume": 1250000.0,
    "sell_volume": 830000.0,
    "net_flow": 420000.0
  }
}
  • Rows are ordered by transaction date and internal identifier, descending.
  • Batch metrics describe only the rows returned, not the entire market.

Transactions by ticker

Returns recent publishable Form 4 transactions for one normalized ticker symbol.

GET/api/v1/transactions/ticker/{symbol}

Parameters

symbolpath · stringrequired

Case-insensitive U.S. equity ticker.

limitquery · integeroptional

Maximum number of transactions returned.

default=50 · 1–1000

200 response

{
  "count": 50,
  "limit_applied": 50,
  "data": [{ "...": "TransactionOut" }],
  "batch_metrics": null
}
  • Returns HTTP 404 when the ticker has no publishable records.
  • Use the bulk dataset when complete history exceeds the API limit.

Transactions by executive

Searches reporting-owner names and returns matching publishable transactions.

GET/api/v1/transactions/executive

Parameters

namequery · stringrequired

Full name or whitespace-delimited name fragment as reported or normalized from SEC data.

limitquery · integeroptional

Maximum number of transactions returned.

default=50 · 1–1000

200 response

{
  "count": 12,
  "limit_applied": 50,
  "data": [{ "...": "TransactionOut" }],
  "batch_metrics": null
}
  • This is a token-boundary name search, not probabilistic identity resolution.
  • Use reporting_owner_cik when a stable SEC identity is required.

Largest transactions

Returns the largest publishable transactions by effective nominal value inside a rolling calendar window.

GET/api/v1/transactions/whales

Parameters

daysquery · integeroptional

Rolling calendar-day lookback.

default=30 · 1–3650

limitquery · integeroptional

Maximum number of transactions returned.

default=50 · 1–1000

200 response

{
  "count": 50,
  "timeframe": "Last 30 days",
  "data": [{ "...": "TransactionOut" }]
}
  • Effective value uses calculated_total_value when present and otherwise Total_Value.
  • Technical transactions are included; filter Type when interpreting directional activity.

Ticker transaction summary

Aggregates transaction count, shares and effective nominal value by SEC transaction code for one ticker.

GET/api/v1/analytics/summary/{symbol}

Parameters

symbolpath · stringrequired

Case-insensitive U.S. equity ticker.

200 response

{
  "ticker": "NVDA",
  "data": [
    {
      "Type": "S",
      "Total_Transactions": 24,
      "Total_Shares": 87500.0,
      "Total_Dollars": 10250000.0
    }
  ]
}
  • This endpoint groups all publishable history by transaction code.
  • Codes P and S represent open-market purchases and sales; other codes are not directional equivalents.

Windowed ticker analytics

Computes exact calendar-window activity, open-market flow, active insiders and directional leaders.

GET/api/v1/analytics/snapshot/{symbol}

Parameters

symbolpath · stringrequired

Case-insensitive U.S. equity ticker.

daysquery · integeroptional

Inclusive calendar window. A 30-day request includes today and the preceding 29 dates.

default=30 · 1–3650

200 response

{
  "ticker": "NVDA",
  "window_days": 30,
  "start_date": "2026-06-26",
  "end_date": "2026-07-25",
  "transaction_count": 8,
  "open_market_transaction_count": 3,
  "total_volume": 4100000.0,
  "buy_volume": 600000.0,
  "sell_volume": 3100000.0,
  "option_volume": 400000.0,
  "net_flow": -2500000.0,
  "active_insiders": 4,
  "latest_filing_date": "2026-07-23",
  "top_buyer": null,
  "top_seller": {
    "executive": "EXAMPLE EXECUTIVE",
    "position": "Officer",
    "transaction_type": "S",
    "total_value": 1500000.0,
    "transaction_count": 1
  }
}
  • Net flow is code P value minus code S value.
  • Technical activity is reported separately and does not change directional net flow.

Executive analytics

Aggregates an executive's publishable activity and groups it by issuer.

GET/api/v1/analytics/executive-snapshot

Parameters

namequery · stringrequired

Executive or reporting-owner name.

Minimum 2 characters

200 response

{
  "executive": "ELON MUSK",
  "transaction_count": 18,
  "total_volume": 7200000000.0,
  "buy_volume": 0.0,
  "sell_volume": 2400000.0,
  "net_flow": -2400000.0,
  "latest_filing_date": "2026-06-16",
  "companies": [
    {
      "ticker": "TSLA",
      "transaction_count": 18,
      "total_volume": 7200000000.0,
      "latest_filing_date": "2026-06-16"
    }
  ]
}
  • Total volume includes technical activity; buy and sell volume isolate codes P and S.
  • Company totals use effective nominal value.

Transactions by date range

Returns publishable transactions whose transaction date falls inside an inclusive ISO-8601 date range.

GET/api/v1/transactions/daterange

Parameters

startquery · daterequired

Inclusive start date in YYYY-MM-DD format.

endquery · daterequired

Inclusive end date in YYYY-MM-DD format.

limitquery · integeroptional

Maximum number of transactions returned.

default=50 · 1–1000

200 response

{
  "count": 50,
  "start_date": "2026-03-01",
  "end_date": "2026-03-14",
  "data": [{ "...": "TransactionOut" }]
}
  • The range applies to transaction Date, not filing_date or accepted_at.
  • The current endpoint does not expose cursor pagination; use the bulk dataset for exhaustive extraction.

05 / Response contract

TransactionOut

Transaction responses preserve the original compatibility fields and add canonical lineage, deterministic quality state and enrichment fields. Nullable fields remain null when the source or calculation is unavailable.

Representative response · abbreviated
{
  "id": 1568928,
  "Form": "Form 4",
  "Ticker": "AAPL",
  "Executive": "DOE JOHN",
  "Position": "Chief Financial Officer",
  "Date": "2026-07-23",
  "Type": "P",
  "Shares": 500.0,
  "Price": 202.45,
  "Total_Value": 101225.0,
  "Notes": null,
  "accession_number": "0001209191-26-012345",
  "source_form": "4",
  "filing_date": "2026-07-24",
  "accepted_at": "2026-07-24T20:03:15Z",
  "issuer_cik": "0000320193",
  "reporting_owner_cik": "0001214156",
  "is_amendment": false,
  "transaction_table": "non_derivative",
  "transaction_sequence": 1,
  "security_title": "Common Stock",
  "acquired_disposed": "A",
  "shares_owned_after": 12450.0,
  "ownership_nature": "D",
  "validation_status": "sec_verified",
  "source_verification_status": "sec_filing",
  "quality_score": 100,
  "calculated_total_value": 101225.0,
  "is_current": true,
  "sector": "Technology",
  "industry": "Electronic Computers",
  "standard_role": "CFO",
  "is_cluster_buy": false,
  "cluster_size_30d": 1,
  "market_return_30d": null,
  "return_status_30d": "not_matured",
  "price_source": "legacy_yfinance_close",
  "return_algorithm_version": "2.0.0"
}

The example is illustrative of the response contract. Consult the dictionary below for authoritative semantics and nullability of all 64 fields.

06 / Data dictionary

64 fields, documented by origin

Search by field, source, type or concept. The original SEC or legacy values remain separate from normalized and derived research fields.

Core transaction fields

Stable compatibility fields available in API transaction responses and the bulk release.

FieldTypeSourceDefinitionExample
id

required

integerSEC / legacy sourceStable internal transaction identifier.1568928
Form

required

stringSEC / legacy sourceLegacy-compatible display label for the filing form.Form 4
Ticker

required

stringSEC / legacy sourceNormalized uppercase issuer ticker.AAPL
Executive

required

stringSEC / legacy sourceReporting-owner name as stored by the transaction pipeline.DOE JOHN
Position

nullable

stringSEC / legacy sourceReported relationship or officer title before standardized role enrichment.Chief Financial Officer
Date

required

dateSEC / legacy sourceTransaction date. This is not necessarily the filing or acceptance date.2026-07-23
Type

required

stringSEC / legacy sourceSEC transaction code such as P, S, A, M, F or G.P
Shares

required

numberSEC / legacy sourceNumber of securities reported in the transaction.500
Price

required

numberSEC / legacy sourceReported per-security transaction price. Zero can be valid for grants and other technical events.202.45
Total_Value

required

numberSEC / legacy sourceLegacy-compatible nominal value stored with the transaction.101225.00
Notes

nullable

stringSEC / legacy sourceFootnote or explanatory filing text when available.Shares sold pursuant to a Rule 10b5-1 plan.

SEC lineage and ownership

Fields that connect canonical rows to EDGAR filings, transaction tables and reporting-owner identity.

FieldTypeSourceDefinitionExample
accession_number

nullable

stringSEC canonicalEDGAR accession number. Null identifies historical rows without canonical accession linkage.0001209191-26-012345
source_form

nullable

stringSEC canonicalCanonical SEC form type parsed from the filing.4
filing_date

nullable

dateSEC canonicalCalendar date on which the filing was submitted.2026-07-24
accepted_at

nullable

datetimeSEC canonicalEDGAR acceptance timestamp when available.2026-07-24T20:03:15Z
issuer_cik

nullable

stringSEC canonicalSEC Central Index Key for the issuer.0000320193
reporting_owner_cik

nullable

stringSEC canonicalSEC Central Index Key for the reporting owner.0001214156
is_amendment

required

booleanSEC canonicalWhether the source filing is an amendment such as Form 4/A.false
transaction_table

nullable

stringSEC canonicalCanonical SEC table containing the transaction.non_derivative
transaction_sequence

nullable

integerSEC canonicalDeterministic sequence within the canonical filing table.1
security_title

nullable

stringSEC canonicalTitle of the security reported in the ownership filing.Common Stock
acquired_disposed

nullable

stringSEC canonicalSEC acquisition/disposition indicator, normally A or D.A
shares_owned_after

nullable

numberSEC canonicalSecurities beneficially owned after the reported transaction.12450
ownership_nature

nullable

stringSEC canonicalDirect or indirect ownership indicator.D

Quality and canonical state

Auditable controls used to decide whether a row is eligible for the commercial release.

FieldTypeSourceDefinitionExample
quality_status

required

stringQuality pipelineHuman-readable quality classification produced by deterministic rules.validated
validation_status

required

stringQuality pipelineCommercial eligibility state. Public releases include sec_verified and validated_legacy.sec_verified
source_verification_status

required

stringQuality pipelineDescribes the row's source linkage or reconciliation state.sec_filing
quality_score

required

integerQuality pipelineDeterministic 0–100 quality score. It is not an investment signal.100
quality_issues

required

JSON arrayQuality pipelineMachine-readable validation observations attached to the row.[]
calculated_total_value

nullable

numberQuality pipelineNormalized Shares × Price value when a reliable calculation is available.101225.00
is_current

required

booleanQuality pipelineWhether the row is the current representation after amendments and reconciliation.true
superseded_by_id

nullable

integerQuality pipelineIdentifier of the canonical row that superseded this representation.null

Issuer metadata

Point-in-time company context joined to each transaction when coverage is available.

FieldTypeSourceDefinitionExample
sector

nullable

stringIssuer metadataBroad normalized sector.Technology
industry

nullable

stringIssuer metadataIndustry description from the selected issuer metadata snapshot.Semiconductors
metadata_source

nullable

stringIssuer metadataSource identifier for sector and industry fields.sec_sic
metadata_as_of

nullable

dateIssuer metadataSnapshot date of the attached issuer metadata.2026-07-25

Role normalization

Standard role classification designed for cohort analysis while preserving the original Position.

FieldTypeSourceDefinitionExample
standard_role

nullable

stringRole normalizationPrimary normalized role such as CEO, CFO, Director or VP.CFO
role_source

nullable

stringRole normalizationSource used to derive the standardized role.sec_relationship
role_confidence

nullable

numberRole normalization0–1 confidence in the standardized role assignment.1.0
role_algorithm_version

nullable

stringRole normalizationVersion of the deterministic role classifier.1.0.0

Cluster-buy enrichment

Counts distinct reporting owners with code P purchases for the issuer inside inclusive calendar windows.

FieldTypeSourceDefinitionExample
is_cluster_buy

required

booleanCluster modelTrue when at least three distinct owners purchased within the 30-day window.true
cluster_size_7d

required

integerCluster modelDistinct purchasing owners observed inside seven calendar days.2
cluster_size_30d

required

integerCluster modelDistinct purchasing owners observed inside 30 calendar days.4
cluster_size_90d

required

integerCluster modelDistinct purchasing owners observed inside 90 calendar days.6
cluster_algorithm_version

nullable

stringCluster modelVersion of the cluster algorithm used for the row.2.0.0

Post-transaction price enrichment

Security price observations measured from transaction date. These are descriptive outcomes, not benchmark-adjusted returns or evidence of causality.

FieldTypeSourceDefinitionExample
insider_return_30d

nullable

numberPrice enrichmentPercent change from reported insider transaction price to the 30-day endpoint.4.25
insider_return_90d

nullable

numberPrice enrichmentPercent change from reported insider transaction price to the 90-day endpoint.7.90
insider_return_180d

nullable

numberPrice enrichmentPercent change from reported insider transaction price to the 180-day endpoint.12.10
market_return_30d

nullable

numberPrice enrichmentSecurity price change from transaction-date market close to the 30-day endpoint. Not a market-index return.3.80
market_return_90d

nullable

numberPrice enrichmentSecurity price change from transaction-date market close to the 90-day endpoint. Not a market-index return.6.75
market_return_180d

nullable

numberPrice enrichmentSecurity price change from transaction-date market close to the 180-day endpoint. Not a market-index return.10.45
return_base_date

nullable

datePrice enrichmentObserved trading date used as the market-price baseline.2026-01-05
return_base_price

nullable

numberPrice enrichmentSecurity close used as the market-return baseline.201.30
return_30d_date

nullable

datePrice enrichmentObserved trading date used for the 30-day endpoint.2026-02-04
return_30d_price

nullable

numberPrice enrichmentSecurity close used for the 30-day endpoint.208.95
return_90d_date

nullable

datePrice enrichmentObserved trading date used for the 90-day endpoint.2026-04-06
return_90d_price

nullable

numberPrice enrichmentSecurity close used for the 90-day endpoint.214.89
return_180d_date

nullable

datePrice enrichmentObserved trading date used for the 180-day endpoint.2026-07-06
return_180d_price

nullable

numberPrice enrichmentSecurity close used for the 180-day endpoint.222.34
return_status_30d

nullable

stringPrice enrichmentCalculation state: calculated, not_matured, missing_base_price or missing_end_price.calculated
return_status_90d

nullable

stringPrice enrichmentCalculation state for the 90-day horizon.calculated
return_status_180d

nullable

stringPrice enrichmentCalculation state for the 180-day horizon.not_matured
price_source

nullable

stringPrice enrichmentIdentifier of the price series used for calculations.legacy_yfinance_close
return_algorithm_version

nullable

stringPrice enrichmentVersion of the return calculation algorithm.2.0.0

07 / Methodology

Deterministic, inspectable transformations

Derived fields are versioned and remain distinct from the original transaction values.

Commercial eligibility

The public API and release include only current, non-future rows classified as sec_verified or validated_legacy. Review and rejected rows remain internal for audit.

Canonical identity

SEC-linked rows use accession_number + transaction_table + transaction_sequence. Amendments and legacy overlaps are reconciled conservatively rather than silently deleted.

Cluster detection

Only code P purchases participate. Window sizes count distinct reporting owners for the same ticker over inclusive 7, 30 and 90 calendar-day windows. Three owners in 30 days sets is_cluster_buy.

Price outcomes

Price outcomes begin at transaction date, not filing acceptance. The next observed trading price within seven days of each target is used. They are not SPY-adjusted and do not establish causality.

08 / Transaction codes

Direction and technical activity

Only open-market codes P and S are used for directional net flow. Other codes can have large nominal values without representing discretionary buying or selling.

CodeMeaningClassificationInterpretation
POpen-market purchaseBuyPurchase of securities on the open market or from the issuer.
SOpen-market saleSellSale of securities on the open market or to the issuer.
AGrant or awardTechnicalGrant, award or other acquisition from the issuer.
MOption exerciseTechnicalExercise or conversion of a derivative security.
FTax withholdingTechnicalPayment of exercise price or tax liability using securities.
GGiftTechnicalBona fide gift of securities.

09 / Errors

HTTP behavior

RapidAPI can return quota errors before the request reaches InsiderAlpha. Application validation errors use JSON response bodies.

400

Invalid or missing query input

Missing name, start or end parameter.

401

Authentication failed

Missing or invalid RapidAPI credentials.

404

No publishable ticker data

Ticker lookup returned no eligible records.

422

Schema validation failed

days is outside 1–3650 or a date is malformed.

429

Rate limit exceeded

RapidAPI plan quota or request rate exceeded.

5xx

Service unavailable

Temporary API or database failure.

10 / Freshness and versioning

Transaction freshness is separate from enrichment freshness

New SEC transactions are checked hourly. Bulk releases and derived enrichment fields are versioned independently, so clients should inspect filing, metadata and algorithm timestamps rather than assume every field was calculated simultaneously.

API version

v1 routes

Additive response fields can be introduced without removing compatibility fields.

Dataset schema

2.0.0

Breaking column or semantic changes require a new major schema version.

Ingestion target

Hourly

SEC publication, upstream availability and processing can introduce latency.

11 / Known limitations

Use the data with its boundaries

01

The commercial release combines canonical SEC-linked history with separately flagged validated legacy history.

02

Ticker symbols and company metadata can change through mergers, reorganizations and symbol changes.

03

Form 4 reports ownership events; it does not reveal the reporting person's motivation.

04

Open-market sales can be pre-scheduled through Rule 10b5-1 plans and should not automatically be read as bearish conviction.

05

Post-transaction price fields are security outcomes, not filing-date strategy returns and not benchmark-adjusted alpha.

06

Sector, industry and price enrichment contain nulls where the selected source has no reliable observation.

07

The REST API currently uses bounded limits rather than cursor pagination. Use the bulk release for exhaustive history.

Choose a delivery mode

Build with the API or research the complete release.