Review quarterly SEC insider transactions with footnotes

Query the imported SEC insider transaction archive by issuer CIK and preserve derivative types, source strings and linked footnotes.

WHAT YOU WILL BUILD

Read one bounded page from a specific imported quarterly archive and retain transaction-table identity and footnotes. This workflow prepares source review; it does not infer insider buying intent or produce investment signals.

Requirements: Node.js 22 or later; no dependencies. An API key from your dashboard, stored in the SEC_API_KEY environment variable.

Run the workflow

Save this as workflow.mjs and run node workflow.mjs. The production base URL is used by default. Keep credentials out of source control.

const key = process.env.SEC_API_KEY;
if (!key) throw new Error("Set SEC_API_KEY");
const base = process.env.SEC_API_BASE_URL || "https://sec-api.dev";
async function request(path, params) {
  const response = await fetch(base + path + "?" + new URLSearchParams(params), {
    headers: {Authorization: "Bearer " + key}
  });
  if (!response.ok) throw new Error("HTTP " + response.status + ": " + await response.text());
  return response.json();
}

const result = await request("/api/v1/insider-transactions", {
  period:"2026q3", cik:"320193", limit:"25", offset:"0"
});
const records = result.data.map(row => ({
  accessionNumber:row.accessionNumber, issuerCik:row.issuerCik,
  recordType:row.recordType, sourceTable:row.sourceTable, sourceRow:row.sourceRow,
  fields:row.fields, footnotes:row.footnotes, filingUrl:row.filingUrl
}));
console.log(JSON.stringify({records, pagination:result.pagination, provenance:result.meta}, null, 2));

Choose bulk transactions or a single filing

This endpoint reads imported quarterly transaction tables across issuers. The CIK filter refers to the issuer, not the reporting owner. It differs from /api/v1/insider-trades, which parses one ownership XML filing. The example fixes 2026q3 because that archive is actually imported; it does not imply every historical quarter is available. A quarter is an archive partition, not a promise that every transaction occurred inside its calendar dates.

Read the footnotes before interpreting a code

Keep each record’s source-native fields and its resolved footnote references together. Transaction codes, derivative status, ownership explanations and footnotes can change how a record should be interpreted. Numeric fields remain strings; do not silently coerce blanks or non-numeric source values into zero. sourceTable and sourceRow let you trace the result back to its TSV table. Multiple transactions within one accession are valid and must not be deduplicated merely by accession.

Treat the response as a versioned page

The response carries archive URL, retrieval time, SHA256, snapshotId and quality diagnostics. Save them beside the records. Follow nextOffset for further pages and compare snapshotId across responses; if it changes, restart rather than mixing imports. The example intentionally retrieves up to 25 rows. It excludes owner addresses and signatures and makes no claim to real-time transaction availability or complete person-level ownership histories.

Sources and further reading

The underlying SEC dataset behavior is documented in the official SEC API reference and SEC technical specifications. Response-field names shown here belong to the sec-api.dev endpoint contract. The scripts print actual results and do not embed fabricated filing or financial data.

All tutorials ←