US Market Events Scraper (FDA, SEC, Contracts, Insiders)
Pricing
from $5.00 / 1,000 results
US Market Events Scraper (FDA, SEC, Contracts, Insiders)
Unified daily feed of FDA drug approvals (NDA/BLA only, no generics), SEC 8-K material-event filings, $1M+ federal contract awards from USAspending.gov, and Form 4 insider buy/sell transactions from OpenInsider. One normalized JSON schema across all four high-signal US public-data sources.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Manik Anand
Maintained by CommunityActor stats
1
Bookmarked
3
Total users
0
Monthly active users
17 hours ago
Last modified
Share
US Material Events Monitor — SEC 8-K, FDA, Federal Contracts & Insider Trades
One actor. Four high-signal US public-data sources. One normalized JSON schema.
Stop wiring up four separate scrapers. This actor pulls SEC EDGAR 8-K material-event filings, FDA drug approvals, $1M+ federal contract awards, and Form 4 insider buy/sell transactions in a single run — deduplicated, date-sorted, and flattened into the same shape so your downstream pipeline only has to parse one format.
Built for event-driven trading signals, catalyst monitoring, compliance surveillance, BD/lead-gen, and investor alerts. Schedule it hourly or daily; pipe the dataset straight into a spreadsheet, database, webhook, Slack, or an LLM.
Why this actor beats single-source scrapers
Most Apify actors give you one feed and leave you to stitch the rest together. Material corporate catalysts don't respect source boundaries — an M&A shows up as an 8-K and a contract award and an insider buy. This actor unifies them:
| Single-source SEC scraper | Single-source FDA / contracts / insider scraper | US Material Events Monitor | |
|---|---|---|---|
| Sources | 1 | 1 | 4, unified |
| Output schema | source-specific | source-specific | one normalized schema across all four |
| 8-K item codes | raw (2.02, 5.02…) | n/a | decoded to plain English ("Results of Operations (Earnings)", "Executive/Director Departure") |
| Ticker extraction | usually none | none | parsed from EDGAR display names + insider hrefs |
| Noise control | all forms | all submissions | NDA/BLA only (no generic ANDA spam); ORIG + efficacy supplements |
| Cross-source dedup / sort | no | no | yes — deduped, newest-first |
| Resilience | varies | varies | retries transient errors; never crashes; delivers partial results |
The 8-K difference: material events, decoded
An 8-K is just an envelope. What matters is the item code inside it. This actor decodes them so you can filter on the event, not the form:
| Item | Decoded to |
|---|---|
1.01 / 1.02 | Entry into / Termination of a Material Agreement |
1.03 | Bankruptcy or Receivership |
2.01 | Completion of Acquisition/Disposition of Assets |
2.02 | Results of Operations (Earnings) |
2.06 | Material Impairment |
3.01 | Delisting / Listing-Rule Failure |
5.02 | Executive/Director Departure or Appointment |
7.01 | Regulation FD Disclosure |
8.01 | Other Material Event |
| …plus the full common set | fallback to Item X.YY for anything unmapped |
Example summary: 8-K filed by Ategrity Specialty Insurance Co Holdings on 2026-07-10 — Results of Operations (Earnings); Executive/Director Departure or Appointment; Financial Statements and Exhibits
Both the raw items array and the decoded item_descriptions are in every 8-K record's raw block.
Output schema
Every event from every source comes out in the same shape:
{"source": "sec_8k","source_id": "0002040491-26-000029","event_type": "8-K Filing","ticker": "ASIC","company": "Ategrity Specialty Insurance Co Holdings","event_date": "2026-07-10","summary": "8-K filed by Ategrity ... — Results of Operations (Earnings); Executive/Director Departure or Appointment","url": "https://www.sec.gov/Archives/edgar/data/2040491/000204049126000029/0002040491-26-000029-index.htm","amount_usd": null,"raw": { "accession_number": "...", "ciks": ["..."], "items": ["2.02","5.02","9.01"], "item_descriptions": ["Results of Operations (Earnings)", "..."] }}
| Field | Type | Notes |
|---|---|---|
source | string | fda | sec_8k | federal_contracts | insider |
source_id | string | Stable unique ID per record (accession no., award ID, etc.) |
event_type | string | FDA Approval | 8-K Filing | Contract Award | Insider Buy | Insider Sell |
ticker | string | null | Parsed where available; null for private/holding-co filers |
company | string | Company / sponsor / recipient name |
event_date | string | The truthful "this happened" date (see below), YYYY-MM-DD |
summary | string | Human-readable one-liner |
url | string | Deep link to the primary source (specific filing / award / profile) |
amount_usd | number | null | Populated for contract awards and insider transactions |
raw | object | Full source-specific fields, including 8-K items + item_descriptions |
event_date is always the real event date, not an inception date:
- FDA — approval status date
- SEC 8-K — filing date
- Federal contracts — last-modified date (not the original start, which can be decades old for long-running contracts)
- Insider — Form 4 filing date
Sources
| Source | Coverage | Notes |
|---|---|---|
SEC EDGAR (sec_8k) | 8-K material-event filings — earnings, M&A, exec changes, bankruptcy, delisting, impairments, Reg FD | Full-text-search endpoint; item codes decoded; deep-links to the filing index. |
openFDA (fda) | NDA + BLA drug approvals (status AP: original approvals + efficacy supplements) | Skips ANDA generics and routine housekeeping — the noise that drowns out real approvals. |
USAspending.gov (federal_contracts) | Federal contract awards above your $ threshold | Filtered by recent activity (last-modified), not just contracts that happened to start this week. |
OpenInsider (insider_trades) | Form 4 insider buys and sells ≥ $25k | Both purchases and sales; deduped; dollar value parsed into amount_usd. |
Inputs
| Field | Default | Notes |
|---|---|---|
sources | all four | Subset by name: fda, sec_8k, federal_contracts, insider_trades |
lookback_days | 7 | 1–30. Applied to each source's event date. |
tickers | [] | Optional symbol whitelist. Empty = no filter. |
keywords | [] | Optional case-insensitive filter over summary + company + event_type. Empty = no filter. |
min_contract_usd | 1000000 | Federal-contracts only — minimum award value. |
max_results_per_source | 100 | Hard cap per source (1–1000). Use it to control cost. |
A bare run with no input returns a full four-source feed of the last 7 days — nothing is required.
Example — last 3 days, biotech catalysts only
{"sources": ["fda", "sec_8k", "insider_trades"],"lookback_days": 3,"keywords": ["pharma", "biotech", "therapeutics", "oncology", "FDA"],"max_results_per_source": 50}
Use cases
- Event-driven trading signals — earnings (8-K 2.02), M&A (2.01/1.01), insider cluster buys, FDA approvals, and defense-contract wins in one catalyst feed.
- Compliance & surveillance — monitor delistings (3.01), non-reliance restatements (4.02), bankruptcies (1.03), and insider activity for a watchlist of tickers.
- BD / lead generation — GovCon vendors track new federal awards; biotech/defense sales teams get sales triggers the day they file.
- Investor & IR alerts — push a Slack/email digest of every material event touching your holdings or your competitors.
- News-desk feeds — journalists covering biotech, defense, or markets get filings and awards minutes after they post.
- RAG / LLM grounding — feed fresh, structured US corporate events into a custom GPT or retrieval pipeline via tool-call.
- No-code automation — wire the dataset into Zapier / Make / n8n, or Apify's native Postgres / Supabase / Slack integrations. No code on your side.
Reliability
This actor is built to run unattended on a schedule:
- Every network call retries transient failures (HTTP 429 / 5xx / timeouts / connection resets) with exponential backoff, honoring
Retry-After. - One flaky upstream can't zero out the others — each source is isolated; a source that's down simply contributes nothing that run while the rest deliver.
- It never crashes to a failed run. Any unexpected error still delivers the results gathered so far and exits cleanly — no exit-1, no empty output on a transient blip.
- SEC-compliant identification. Requests to SEC EDGAR carry a descriptive
User-Agentwith contact info per SEC's access policy (generic user-agents are 403'd). Override it with theACTOR_CONTACT_UAenvironment variable if you re-deploy your own copy.
Pricing
Pay per result. You pay $0.005 per event returned (each item written to the dataset), plus a negligible per-run start fee. Example: 100 results ≈ $0.50. Your tickers / keywords / min_contract_usd / max_results_per_source settings only ever lower the bill — you pay for what the actor actually returns.
What this actor is NOT
- Not investment advice. It's a data pipe. Trade decisions are yours.
- Not real-time push. Pull-based; schedule it hourly or daily. Filings appear minutes after they post, not within the first seconds.
- Not non-US. All four sources are US public data.
- Not a completeness guarantee. Each source has its own coverage gaps. OpenInsider lags Form 4 filings ~30 min; EDGAR full-text-search lags the raw filing by a few minutes.
Known gotchas
- FDA is intentionally selective. Only NDA/BLA original approvals and efficacy supplements are returned — generics (ANDA) and routine submissions are filtered out. A quiet window can legitimately return zero FDA events.
- 8-K filings include routine items. Want only M&A and departures? Filter with
keywords: ["acquisition", "departure", "going concern"]or post-filter onraw.items. - Tickers on 8-K filings can be missing for private/holding-company filers or multi-share-class listers.
- OpenInsider depends on HTML stability. Their layout has been stable for years; if it ever changes, insider events pause until a parser fix ships. File a Store issue.
Support
Found a bug or an edge case? File an issue on the actor's Apify Store page. Turnaround target: 48 hrs for parser breaks.