Insider trading API: SEC Form 4 filings as normalized JSON

Facts last verified 2026-08-19; sample response fetched from production 2026-08-30.

When a corporate insider — an officer, director, or 10% owner — trades their company's stock, they must report it to the SEC on Form 4, generally within two business days. EDGAR publishes those filings as XML. FilingPulse polls that feed continuously, normalizes each filing into one frozen JSON schema, and serves it over a REST API with HMAC-signed webhooks — so your code works with complete, predictable objects instead of parsing ownership XML.

To be precise about what this is: FilingPulse is data infrastructure. We report what was filed, as it was filed — no scores, no recommendations, no interpretation of whether a trade means anything.

What a served filing looks like

This is the exact production response of GET /v1/insider-trades/0001653558-26-000110, fetched 2026-08-30 — a real July 2026 filing by a director of Priority Technology Holdings, one non-derivative leg and one derivative leg from an RSU vesting:

{
  "form_type": "4",
  "period": "2026-07-01",
  "amendment_date": null,
  "issuer": {
    "name": "Priority Technology Holdings, Inc.",
    "cik": "0001653558",
    "ticker": "PRTH"
  },
  "reporting_owners": [
    {
      "name": "Main Clayton James",
      "cik": "0002112683",
      "is_director": "1",
      "is_officer": "0",
      "officer_title": null,
      "is_ten_pct_owner": "0"
    }
  ],
  "transactions": [
    {
      "security_title": "Common Stock",
      "transaction_date": "2026-07-01",
      "transaction_code": "M",
      "acquired_disposed": "A",
      "shares": "4296",
      "price_per_share": null,
      "shares_owned_after": "17267",
      "ownership_type": "D",
      "is_derivative": false,
      "conversion_or_exercise_price": null,
      "exercise_date": null,
      "expiration_date": null,
      "underlying_security_title": null,
      "underlying_security_shares": null,
      "footnote_ids": [
        "F1"
      ]
    },
    {
      "security_title": "Restricted Stock Unit",
      "transaction_date": "2026-07-01",
      "transaction_code": "M",
      "acquired_disposed": "D",
      "shares": "4296",
      "price_per_share": "0",
      "shares_owned_after": "8590",
      "ownership_type": "D",
      "is_derivative": true,
      "conversion_or_exercise_price": null,
      "exercise_date": null,
      "expiration_date": null,
      "underlying_security_title": "Common Stock",
      "underlying_security_shares": "4296",
      "footnote_ids": [
        "F1",
        "F2"
      ]
    }
  ],
  "holdings": [],
  "footnotes": {
    "F1": "Each restricted stock unit represents a contingent right to receive one share of the Issuer's common stock.",
    "F2": "On February 5, 2026, the Reporting Person was granted 17,182 restricted stock units which vest 25% on April 1, 2026, 25% on July 1, 2026, 25% on October 1, 2026, and 25% on January 1, 2027 subject to the Reporting Person's continued service as a director of the Issuer."
  },
  "remarks": "",
  "holdings_only": false,
  "source_url": "https://www.sec.gov/Archives/edgar/data/1653558/000165355826000110/wk-form4_1784832758.xml",
  "normalized_by": "filingpulse-prototype-0.2",
  "accession": "0001653558-26-000110",
  "filed_date": "2026-07-23"
}

The properties that make this shape dependable:

Querying it

GET https://api.filingpulse.io/v1/insider-trades — filters compose; newest filed first:

Pass your key in the X-API-Key header. limit goes to 200 per page with offset paging; copy-paste versions of every query live on the query patterns page, each one executed by our CI.

Push delivery

Polling tells you what already happened; for new filings you can register a webhook (1 subscription free) and get an HTTP POST when a Form 4 lands. Every delivery is HMAC-signed (X-FilingPulse-Signature, per-subscription secret) with a fixed retry ladder, so you can verify authenticity and survive downtime. Working receiver code is on the recipes page; importable n8n workflows cover the no-code route.

How fresh is Form 4 data — measured, not claimed

We publish reproducible studies on our own dataset rather than asserting freshness adjectives. Two findings that matter when you design on this data:

Both studies run on a free key and state their windows; both are framed as observed reporting lag, never as compliance claims about any filer.

Free tier and pricing

The free tier is 2,500 requests/month at 10/minute, email only, no card — enough to poll every 20 minutes around the clock, or to run either study above yourself. Paid tiers ($19/$49/$99 per month) raise volume and webhook counts; the data and schema are identical on every tier, and no tier carries a personal-use license restriction. Get a key — it takes under a minute.

How it compares

Who is writing this: we build FilingPulse, so we have an obvious interest. To keep this useful anyway, every factual claim about another provider below was read from that provider's own public pages on the date shown, each section links its source, and we say plainly where a competitor is the better choice. If you find something out of date, email keys@filingpulse.io and we will fix it.

ProviderFree tierInsider (Form 4) data
FilingPulse2,500 requests/month, 10/min, email only — no cardYes — complete normalized Form 4 objects: owners, non-derivative and derivative transactions, holdings, footnotes, remarks
sec-api.ioFirst 100 API calls — one-time, not monthlyYes — Form 3/4/5 Insider Trading API with transaction detail
SEC EDGAR (official APIs)Free, no key — max 10 requests/second with a declared User-AgentNo — the official JSON APIs cover submissions history and XBRL financial facts; Form 4 content is raw XML you parse yourself
Financial Modeling Prep250 calls/day, end-of-day dataYes — insider-trade records as flattened per-transaction rows
Finnhub60 API calls/minute, personal useYes — flattened insider-transaction records (name, shares, price, code), capped at 100 transactions per call
edgartools (open source)Free — MIT-licensed Python library you run yourselfYes — parses Form 3/4/5 into structured Python objects locally
Massive (formerly Polygon.io)Market-data plans include a free tier; filings endpoints are part of the stocks plansYes — a Form 4 endpoint exists in their filings family

The structural difference: FMP and Finnhub return flattened per-transaction rows (no footnotes, holdings, or derivative detail); sec-api.io returns detailed insider objects with the broadest EDGAR coverage overall; edgartools parses filings into Python objects on your own machine. FilingPulse returns the complete normalized filing over a hosted API with push delivery and a monthly free quota. Full comparison with pricing floors and sources: best SEC EDGAR API in 2026.

Know going in

Honest limits: we cover Form 4 and 4/A only — no Form 3 (initial ownership statements) or Form 5 (annual reports); if you need those today, sec-api.io or edgartools is the answer. Historical backfill grows continuously and the exact live coverage window is published at /v1/health (no key needed) — check it before assuming depth. We launched in July 2026 and would rather say so than pretend otherwise.

Other ways in

Sources

Competitor facts were read from these pages on the dates shown. Pricing and limits change; the linked page always wins over this one.

More comparisons: Best SEC EDGAR API in 2026 · sec-api.io alternatives · FilingPulse vs sec-api.io · Free SEC EDGAR API options · 8-K API (corporate events by item code) · S-1 API (IPO registration lifecycle)