Skip to main content
This tutorial builds a queue of reported insider transactions for review. Form 4 codes record the filing’s transaction classification; they do not establish motive, plan status, legality, current ownership, or an investment outcome.

Prerequisites

  • SECAPI_API_KEY, curl, and jq; Node.js 18+ for the queue script.
  • An issuer ticker or CIK. This example uses JPM.

1. List recent Form 4 records

Expected output: a paginated list of normalized Form 4 records. Retain the owner fields, transaction fields, accession number, provenance, and request metadata. date_from and date_to filter filing date, not transaction date.

2. Write a code-P review queue

transaction_code=P selects records whose reported transaction code is P. It does not label a record as a discretionary purchase or a bullish signal. Create insider-queue.mjs:
Expected output: a source-linked review queue and pagination state. Follow the returned nextCursor while hasMore is true; a single page is not a complete history. Open the cited Form 4 and read security title, ownership type, and footnotes before characterizing a transaction.

Failure modes

  • An empty result only describes the selected issuer, date range, code, and page. It is not proof of no insider activity.
  • Deduplicate by accession number plus transaction identity, not owner name.
  • Corrections can arrive after an initial filing. Use an overlap window and durable ingestion state for scheduled jobs.
  • Preserve the Form 4 source record and route the queue to a reviewer; do not trigger trading or compliance conclusions from the normalized feed alone.

Next step

See the insiders reference for available filters and the returned source fields.