The hosted MCP server now exposes three ready-made task
prompts via prompts/list — insider_activity (Form 4 summary
for a ticker), events_digest (8-K digest by item code), and
ipo_pipeline (new registrations + freshly priced offerings) — with date
windows computed server-side and unknown or malformed arguments rejected by name,
the same contract as the tools.
Per-insider pages: /insiders/<cik>/
Every SEC reporting owner filed with a CIK now has a page of their Form 4
filings — issuers, roles as filed, transaction summaries, and a by-issuer
rollup — one page per insider across the whole archive. Ticker pages link the
insiders behind each issuer's recent activity, and
/insiders/ lists recent filers. The same data as
JSON: GET /v1/insider-trades?owner_cik=<cik>.
owner_cik= filter on /v1/insider-trades
Query one insider's Form 4 filings across every issuer by their reporting-owner
CIK — the CIK on each filing's reporting_owners[]. Combines with the
issuer filters (ticker, cik, since/until),
works on the REST API and the MCP server's get_insider_trades tool, and
covers the full dataset, historical backfill included.
API docs.
Study #3: Which corporate events get disclosed on Fridays?
A year of 8-K filings measured by official item code and day of week —
what actually gets filed, which items over-index on Fridays, and how EDGAR's
5:30 p.m. filing-date rule shapes what "Friday" even means. Like the
two Form 4 studies, it regenerates from
one script on a free key,
with per-day coverage cross-checked against EDGAR's daily index.
Read it.
GET /v1/usage — your key's own meter
Every key can now read its own limits: tier, monthly quota, requests used and
remaining this month, per-minute rate limit, and webhook slots — served from the
same counters the limits are enforced with, so the numbers cannot disagree with a
429 you just received. The endpoint never consumes the monthly quota,
so it keeps working after a quota 429. The key-delivery email's
quick-start is also copy-paste ready now (it previously showed a truncated key).
Per-insider rollup on ticker pages
Every ticker page's 90-day summary now includes a
by-insider breakdown: open-market purchase and sale legs on non-derivative
securities, grouped by the filing's reporting owner(s) — filings, legs, share and
dollar totals per insider, largest priced activity first. Joint filings appear
once, so the rows sum exactly to the aggregate totals above them. Dollar figures
cover priced legs only, computed as shares × price exactly as filed.
Unknown filters are rejected, never silently ignored
The list endpoints (/v1/insider-trades, /v1/events,
/v1/registrations) and the free screener now return an explanatory
422 for any query parameter they don't support, naming the offender and
the full supported set. Previously a mistyped filter (?tickr=,
?symbol=) was silently dropped and the response was unfiltered data you
believed was filtered. The hosted MCP server's tools reject unknown arguments the
same way, and every tool schema now declares
additionalProperties: false so well-behaved clients catch it before
the call.
ticker= filter on /v1/events
8-K corporate events can now be filtered by issuer ticker —
GET /v1/events?ticker=META — on both the REST API and the hosted MCP
server's get_corporate_events tool. 8-K headers carry no ticker symbol,
so the ticker is resolved to a CIK server-side using our own Form 4 dataset (the CIK
whose Form 4 most recently carried the ticker wins, so renames resolve the way the
filings do). An unknown ticker returns an explained 404 rather than a silently empty
list; issuers with no Form 4 filings yet should keep using cik=.
Per-offering registration pages
Every tracked registration statement now has its own page at
/registrations/<file-number>/ — the offering's full lifecycle
(registration → amendments → effectiveness → final prospectus) as one
timeline, threaded by SEC file number, regenerated with the dataset. The
registrations index links every tracked offering and
its file numbers now click through.
S-1 / IPO API overview page
A dedicated registration lifecycle vertical page: one
real offering's complete lifecycle (S-1 → amendment → EFFECT → priced
424B4) shown as the verbatim production response, the seven form types we track,
file-number threading, stage-filtered webhooks, and honest limits — live-forward
since August 2026, header classification only, no body text.
8-K API overview page
A dedicated 8-K events vertical page: a real production
response shown verbatim (one filing, three item codes), the item codes you can filter
on, webhook subscriptions filtered by item, and honest limits — we serve the
classification and links, not the filing body text.
Insider trading API overview page
A dedicated Form 4 vertical page: a real
production response shown verbatim, the schema properties that make it dependable,
every query filter with examples, measured freshness numbers from our two published
studies, and an honest comparison of insider-data depth across providers.
n8n workflow templates
Three importable n8n workflows: real-time Form 4 insider
trade alerts via signed webhooks, a polling variant that needs no public URL, and a
daily 8-K corporate events digest. Each posts to Slack/Discord out of the box and swaps
to any n8n node. Import from URL, paste a free key, activate.
OpenBB Platform extension
pip install openbb-filingpulse adds FilingPulse as a provider in the
OpenBB Platform: Form 4 insider transactions
through the standard obb.equity.ownership.insider_trading endpoint, with
date-window filters that map to this API's since=/until= for
reproducible queries. Details in the SDK docs.
Research study #2: when insider filings get corrected
Insiders re-file corrections as Form 4/A, and each amendment names the date of the
original submission it corrects — so correction behavior is measurable.
We measured every amendment filed over an eight-week
window: how much filing traffic is corrections, how old the corrected filings were
(the time a superseded version was the only version), and a lower-bound amendment rate
for July 2026's originals — with per-day counts cross-checked against EDGAR's daily
index. Like study #1, the whole thing runs from one standard-library script on a free
key.
Every object now carries its accession number
8-K event and registration objects gained an accession field —
the SEC accession number, the unique, stable identity of every filing. Form 4
objects have carried it since Aug 8; as of today every object served by
/v1/events, /v1/registrations, and the matching webhook
payloads has it too, including all historical rows (additive change, nothing else
moved). Dedupe on accession, not source_url — the
polling recipe has been updated to match. Also today: ticker and CIK filters got
dedicated indexes, taking the hottest queries from ~150 ms (and multi-second
cold-cache outliers) to single-digit milliseconds of server time.
Affiliate program, and referral attribution in the signup funnel
We now share revenue with people who send us customers:
25% recurring for the first 12 months of referred
subscriptions, with the complete terms on one page — no income hype, disclosure
required. Under the hood, ?ref= links attribute signups end-to-end
(30-day window, last click wins), the code rides the Stripe subscription itself so
renewals credit correctly, and a malformed ref can never break a signup. Also fixed
in passing: the Terms page still described the service as free-of-charge early
access — paid tiers have been live since July 31, and section 5 now says so.
Postman collection, and a nightly index-reconciliation pass
The whole REST surface is now importable into Postman in one click:
filingpulse.postman_collection.json,
generated from the API's own OpenAPI spec with key auth, example filter values, and
per-parameter documentation prewired. And behind the scenes, the ingest daemon now
re-checks the trailing three days against EDGAR's own daily indexes every night — on
its first production run the pass recovered 8 filings the live feed had dropped, so
gaps now self-heal within a day instead of waiting for someone to notice.
until= filter and research study #1: the Form 4 filing delay
All three list endpoints (and the MCP tools) now take until= alongside
since= — an inclusive upper bound on filed_date, so a fixed
date window returns the same population forever. Built for reproducible research and
bounded historical pulls. First use:
we measured the delay between insider transaction
dates and EDGAR filing dates for every Form 4 filed in July 2026, with per-day
counts cross-checked against EDGAR's own daily index — the whole study runs from one
script on a free key. The check also caught (and we repaired) four filings our live
feed had missed.
Free insider-trades screener
A no-signup screener over live Form 4 transaction legs:
filter by ticker, transaction code, acquired/disposed, filing window, dollar value, and
derivative table — every number exactly as filed, every row linking back to EDGAR. The
view is shareable by URL and each ticker page now links straight into it. The JSON,
CSV export, and webhooks behind the page remain a free API key away.
Comparison pages and llms.txt
Three new pages compare the realistic ways to get EDGAR data programmatically —
Best SEC EDGAR API in 2026,
sec-api.io alternatives, and
FilingPulse vs sec-api.io — with every
competitor fact read from the provider's own pages on a stated date, sources linked,
and honest sections on when a competitor is the better choice. The site also now
serves /llms.txt and /llms-full.txt:
the whole product — endpoints, the frozen schema, tier limits, query patterns —
as one machine-readable file for AI assistants, generated from the same contract
the API serves so it cannot drift.
Hosted MCP server
FilingPulse now speaks the Model Context Protocol: point Claude, ChatGPT, Cursor, or
any MCP client at https://mcp.filingpulse.io/mcp and query normalized
Form 4, 8-K, and S-1/IPO data with seven read-only tools — no install, no key required
to explore. Anonymous access is rate-limited (20 tool calls/min, 25 rows/call); the
MCP page has per-client setup. The REST API also now sees real
client IPs behind the proxy, so per-IP throttles apply per client instead of sharing
one bucket.
Query patterns page
New Query patterns page: the questions the API gets
asked most — filter by ticker, CIK, or amendment status, build an 8-K item digest,
thread an offering by SEC file number, sync incrementally with since=
and accession dedupe — each as a copy-paste request. Every request on
the page is executed against a live API instance by the regression suite; the page
is generated from the tested catalog, so it cannot document a request CI never ran.
Form 4 objects now carry accession and filed_date
Every Form 4 returned by the API — and every form4 webhook payload —
now includes the SEC accession number (the filing's stable id, and the path parameter
for fetching one filing) and the EDGAR acceptance date as filed_date
(normalized YYYY-MM-DD, the value since= filters on). Additive
change, applied to all historical rows; previously the only stable id on a Form 4 object
was buried in source_url. The machine-readable
schema at /v1/schema documents both fields.
JavaScript recipes
Two Node examples join the Recipes page: a poller that
watches for new filings without re-downloading history (narrow with since=,
dedupe by source_url, back off on rate limits), and a webhook receiver that
verifies the HMAC signature over the raw request bytes — the thing every JSON
body parser quietly breaks. Both run in CI against a live API instance, like the Python
four.
Recipes: runnable examples, tested in CI
New Recipes page: four complete programs — CSV export of
a ticker's Form 4 transactions, an 8-K item digest, a signature-verifying webhook
receiver with Slack forwarding, and IPO threading by SEC file number. Every script is
executed against a live API instance in the regression suite; the downloads are the
tested files themselves.
S-1 registrations on the homepage
The homepage live section now includes the newest registration events alongside
insider trades, and the 30-day volume band counts all three verticals.
Registration pipeline, browsable
New /registrations/ page: the S-1/F-1 pipeline with
lifecycle stages and file-number threads, refreshed every six hours. Notices of
effectiveness are listed separately — most cover form types we don't track yet, and
the page says so.
Third data vertical: S-1/IPO registration lifecycle
GET /v1/registrations and the registration webhook event:
S-1/F-1 registrations, amendments, SEC effectiveness notices, and final priced
prospectuses, threaded across one offering by SEC file number. Live-forward from
August 1; no backfill yet.
Self-serve signup opens — free and paid tiers
Key delivery by email at /signup.html; paid tiers
checkout via Stripe. Official Python and JavaScript SDKs published to PyPI and npm.
Support inbox live at keys@filingpulse.io.
Site redesign; search indexing begins
New public site with live dataset statistics on the homepage. Domain verified with
Google Search Console; sitemap of 2,900+ issuer pages submitted and accepted.
Per-issuer data pages
2,911 ticker pages published at /insider-trades/ —
insider transaction history and 8-K events per issuer, regenerated from the live dataset
every six hours.
Automated pipeline monitoring
Health evaluation every ten minutes across ingestion freshness, backfill progress, and
service state, with thresholds aware of EDGAR's filing calendar (quiet weekends don't
false-alarm; weekday stalls surface within the hour).
Backfill resilience fix
Found and fixed a stall where EDGAR's unusual error behavior for never-published
weekend index files could livelock historical backfill. Backfill errors are now fully
isolated from live polling, with regression tests pinning the fix.
Public launch
filingpulse.io and api.filingpulse.io live with TLS. Production ingestion running in
Ashburn, Virginia; 24-month historical backfill started.
Core platform
Normalized schema v1 frozen (values as filed, fields never missing, additive-only
evolution). Form 4 and 8-K ingestion, REST API v1 with keys and rate limits, and
HMAC-signed webhook delivery with automatic retries — all pinned by a regression corpus
of real filings.