Events API: Twelve Filing Streams, One Schema, One Key

Twelve US filing event streams in one schema, on one key: insider clusters, Form 144, 13D/G, 13F, 8-K, Form D, FDA, trial readouts, NIH grants, federal contracts, congressional trades and hiring signals. Cursor-based feed, every score recomputable. From $29 a month.

One endpoint instead of twelve scrapers. Insider clusters, Form 144 sales, 13D/G stakes, 13F holdings, 8-K events, Form D raises, FDA actions, trial readouts, NIH grants, federal contract awards, congressional trades and hiring signals from company career sites - all in the same record shape, behind one key, with a cursor that guarantees no duplicates and no gaps.

Two endpoints need no key at all, so you can check us before you rely on us:

curl https://datasignalslab.com/v1/event-types
curl https://datasignalslab.com/v1/health

The first tells you which fields each stream carries and whether its score can be recomputed. The second tells you how stale each source is right now, and how many records are anchored in our published hash chain. No other feed in this niche publishes its own freshness.

The cursor is the whole point

Every response carries a cursor. Pass it back and you get what arrived since, nothing else.

curl -H "Authorization: Bearer ds_live_..." \
  "https://datasignalslab.com/v1/events?limit=100"
# -> { "events": [...], "cursor": 4471, "has_more": true }

curl -H "Authorization: Bearer ds_live_..." \
  "https://datasignalslab.com/v1/events?since=4471"

An hourly job never sees the same event twice and never silently skips one. Run out of quota and the feed does not throw a 402 in the middle of a sync: it returns an empty page with your cursor intact and a plain notice, so you resume exactly where you stopped.

Every score shows its work

A score you cannot check is a number you have to trust. Every record carries the terms it was built from:

{
  "event_id": "insider_cluster:CAMP:2026-08-03",
  "event_type": "insider_cluster",
  "company": { "name": "Camp4 Therapeutics Corp", "ticker": "CAMP" },
  "score": 67.2,
  "scored_on": "2026-08-06",
  "score_inputs": { "formula": "insider_cluster/v1", "inputs_complete": true },
  "proof": { "status": "anchored", "day": "2026-08-06" }
}

inputs_complete is the field that matters. When a term of the formula is missing from the published source, it says false instead of quietly inventing a number. proof is looked up in the hash chain we publish daily, not asserted.

How fresh is fresh

Our round runs every night. What it finds follows the publication calendar of the source: SEC filings and FDA actions appear on U.S. business days, so on a Monday morning the newest filing event is the one we read on Saturday morning, and that is not a stall. Congressional trades are weekly and 13F is quarterly, because that is how often they are published. Career-site streams do move daily. The hours_since in /v1/health counts from the round that read the filing, not from the moment it was filed, so it tells you exactly how old our copy is per stream.

We say that plainly because the alternative is a customer who discovers it on day two. "No added delay" on the paid plans means we do not hold the stream back, not that filings arrive as they are signed.

One more thing worth saying plainly: the API scales to zero when nobody is calling it. The first request after a quiet period wakes it up, which can take about fifteen seconds; you get a clear starting_up answer with a Retry-After header, the retry succeeds, and nothing is counted against your quota. Once awake it stays warm for a few minutes and answers in well under a second.

Plans

PlanPriceEvents / monthDeliveryWebhooks
FreeFree25024 hours0
Starter$29 / mo25,00015 minutes1
Growth$95 / mo150,000No added delay5
Scale$199 / mo500,000No added delay20

Volume, delay and webhook count are the only differences. Fields are never trimmed per plan - a half record earns bad reviews, and that is what has ruined comparable markets. Cancel any time; a cancelled plan keeps working until the period you paid for ends.

Prices are in US dollars, excluding VAT. Payment and invoicing run through Lemon Squeezy as merchant of record.

Webhooks instead of polling

Register an address and we deliver new events to it as they land. Each webhook has its own cursor, so a receiver that was down for an hour misses nothing. Deliveries are signed with HMAC-SHA256 over <timestamp>.<raw body> so you can prove a payload came from us; GET /v1/webhooks/signature documents the exact check.

Only https, only public addresses, verified again immediately before each delivery.

Endpoints

  • GET /v1/event-types - fields per stream, and whether the score is recomputable. Free.
  • GET /v1/health - freshness per source, anchored counts. Free.
  • GET /v1/events - the feed. Filter on event_type, ticker, cik, min_score, page with since.
  • GET /v1/events/{id} - one event.
  • GET /v1/companies/{ticker or cik}/events - everything for one company.
  • GET /v1/revisions - where the source has since said something different from what we published. Does not count against your monthly events.
  • GET /v1/usage - what you used this period and when it resets.
  • POST / GET / DELETE /v1/webhooks - manage delivery.

Errors say what went wrong and what to do about it, never just "forbidden".

The quickstart walks through a first call, paging with the cursor, and verifying a score, in that order.

FAQ

Do I need an Apify account?

No. You call `datasignalslab.com/v1` with the key we e-mail you, and nothing else.

What happens when I hit my monthly limit?

The feed returns an empty page with your cursor unchanged and a notice explaining why. Nothing is skipped: resume from that cursor when your period resets or you upgrade.

When does my quota reset?

On your own renewal date, not on the first of the month. `GET /v1/usage` shows you which date that is.

Can I get history?

Every record we have ever ingested stays in the feed, so `?since=0` walks the whole archive within your monthly allowance.

Where does the data come from?

SEC EDGAR, openFDA, ClinicalTrials.gov, NIH RePORTER, USAspending.gov and the US House Clerk. All official, all public, each record linking back to its own filing.

Is the free plan a trial?

No, it is a permanent plan. It carries one stream, 250 events a month and a 24 hour delay - enough to check the shape of the data and the honesty of the scores before you pay. [Get a free key](#free-key) with the stream you want; it arrives by e-mail. Lost it? Ask again with the same address and the key is rotated.