You already have six alt-data vendors.
You don't have typed events.
Most teams hack together three or four tools: a news wire, a filings parser, a scraper, a LLM classifier. It kinda works — until it doesn't. Hyperfeed replaces the stack with one normalized event stream, source-cited and schema-versioned.
Six contracts. Six schemas. Six invoices.
- ×Every feed has its own schema, own auth, own delivery mechanism
- ×Separate negotiations for every dataset — legal-review hell on every add
- ×No cross-family joins — layoffs and WARN notices live in different DBs
- ×Historical backfill is a separate SKU on most vendors
- ×Pricing is per-dataset, not per-user — costs compound as you add signal sources
- ×Each vendor has different SLAs, different data lineage, different support
Typed events. Sourced. Dedup'd. Replayable.
- ✓One schema, one auth, one stream — all 8 families share the envelope
- ✓One contract, one DPA, one invoice — add families without re-negotiating
- ✓Cross-family joins via shared entity_id and event_id graph
- ✓Full history included in every tier from Developer up — no backfill SKU
- ✓Flat tier pricing — unit economics don’t explode as you add signals
- ✓Single SLA across families — uniform 99.95% on Pro, 99.99% on Institutional
Where the gap shows up.
Every row below is a question your platform team will ask. Our answer in blue; the alternative in gray. No fine print.
| Question | Hyperfeed | Alt-data vendors |
|---|---|---|
| How many contracts to cover 8 event families?legal-review cost in onboarding | 1 | 6–10 separate MSAs |
| Schema harmonizationfields that mean the same thing across datasets | Unified envelope · one entity graph | Different for each vendor |
| Cross-family join (layoffs × regulator action)e.g. find all companies with both, in 30 days | One SQL query · same tables | Python glue across 3 APIs · good luck |
| Historical backfillwhen you need to backtest | Included · 10 years on Pro | Per-dataset license · usually 30–50% extra |
| Pricing shapehow your bill scales | Flat tier · predictable | Sum of per-dataset seats · unpredictable |
| Point-in-time correctnessno lookahead when backtesting | ?as_of=2024-01-15 | Often missing — lookahead common |
| Adding a new event family mid-contracthow fast | API flip — same key | New MSA · procurement loop · 4–8 weeks |
| Supportwhen something breaks | One Slack channel · one on-call team | Different desk per vendor |
The same FDA rejection. Theirs vs ours.
Monday, 4:47pm ET. ALDX receives a Complete Response Letter for reproxalap. Here's what hits your systems from each API.
// Three separate API calls. Three different schemas.
// 1. pharma_alerts (Vendor A)
{ "alert_id": "pa_882341", "type": "fda_crl",
"company": "Aldeyra Therapeutics", "drug": "reproxalap" }
// 2. regulatory_feed (Vendor B)
{ "record": "reg_aldx_0413", "agency": "fda",
"ticker": "ALDX", "letter_type": "complete_response" }
// 3. corp_events (Vendor C)
{ "uid": "ce_7x2k", "category": "regulatory_decision",
"issuer_cik": "0001341235", "description": "FDA issued CRL..." }
// Now you dedupe, join by whatever fuzzy match you can build,
// and pray all three vendors stay up.{
"event_id": "evt_20260413_aldx_fda_crl",
"event_type": "fda_approval_declined",
"family": "regulatory",
"assertion_type": "fact",
"entity": {
"entity_id": "ent_aldx",
"ticker": "ALDX",
"cik": "0001341235",
"lei": "529900W0O7QKGDLPGW09"
},
"payload": {
"regulator": "FDA",
"product_id": "reproxalap",
"action": "complete_response_letter"
},
"related_events": [
"evt_20260413_aldx_8k_item801",
"evt_20260413_aldx_conf_call_scheduled"
]
// joined to the 8-K filing automatically
// joined to the scheduled conference call
// canonical entity_id links everything
}Three reasons, in their own words.
We stopped burning engineers on duplicates.
News APIs emit the same story from six outlets as six separate records. Every consumer team writes their own dedup logic. Hyperfeed merges on entity + event_type + effective_at and attaches all sources as evidence. One event, many sources.
After:
event_id is the only key we need.Allegations aren't the same as facts.
News wires flatten "WSJ reports" and "company confirms" into one severity level. That's fine for humans. It's a disaster for auto-execution. Hyperfeed tags every event with assertion_type — allegation, trusted_report, fact.
allegation to human review, auto-routes factto systems. We couldn't do that with a news wire.Stories change. Your database should too.
An FDA rejection reported at 4:47pm becomes "official_announced" at 5:03 when the company files its 8-K. Hyperfeed represents this as one event with status transitions. A news wire represents it as two unrelated stories with different URLs.
lifecycle object: detected_at, announced_at, effective_at, confirmed_at, refuted_at. You can replay any event from any point in time.“We were paying six vendors for the same data at six different latencies. We replaced five of them with Hyperfeed.”— Head of Market Data, L/S equity fund · $4B AUM
Swap in. Dual-run. Cut over.
We don't ask you to rip out your existing pipeline on day one. Most teams dual-run for two weeks, then cut traffic when they've validated the schema against their own backtests.
Subscribe to the family you need.
Pick a single event family — usually regulatory or leadership. Point a webhook at your queue. Done.
POST /v1/subscriptions
{ "family": "regulatory",
"webhook_url": "https://you.co/hook",
"assertion_types": ["fact","trusted_report"] }Dual-run and diff.
We ship a difftool that runs against your existing pipeline's output and highlights where hyperfeed caught events sooner, merged duplicates, or classified differently.
hf diff \ --their-export their_feed.jsonl \ --date-range 2026-03-01:2026-03-31 > 142 events - hyperfeed earlier > 38 duplicates collapsed > 7 class conflicts
Cut over. Keep the old feed as backup.
Flip your primary. Most teams keep the legacy feed on standby for 30 days. After that, the vendor contract lapses. Most teams find Hyperfeed replaces 2–3 existing tools at a fraction of the combined cost.
hf subscribe \ --families all \ --deliver kafka://your-cluster/events \ --replay-from 2026-01-01 > 14,207 historical events backfilled
Stop parsing headlines. Start reading events.
See the diff yourself. The 7-day delayed feed shows the same events your current vendor misses. Compare side-by-side, no meeting required.