Real-Time Stream API: new SEC filings the moment EDGAR publishes them
Get every new EDGAR filing seconds after it is accepted, over Server-Sent Events or webhooks, filtered by form type and CIK.
curl -H "Authorization: Bearer $SECFEED_KEY" \ "https://secfeedapi.com/v1/stream/latest?size=2"
import os, requests
r = requests.get(
"https://secfeedapi.com/v1/stream/latest",
params={'size': '2'},
headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
)
print(r.json())Overview
EDGAR publishes filings throughout the day, and the ones that move markets (8-Ks, Form 4s, 13Ds) are worth the most in the first minutes. The Real-Time Stream API watches EDGAR's live feed every few seconds and pushes each new filing to you once, even when EDGAR lists it once per party.
Connect with Server-Sent Events from any HTTP client, or register a webhook and let SecFeed POST new filings to your endpoint. Filter by form type and CIK so you only receive what you need, and check the measured delivery latency at any time.
What you get
Built for developers who would rather not parse EDGAR.
A long-lived GET that emits one JSON event per new filing. Works with curl, browsers and the Python SDK.
POST /v1/webhooks with your HTTPS URL and filters; new filings are pushed to you as they arrive.
formTypes=8-K,4 and ciks=... so you only receive what you trade or monitor.
EDGAR lists a filing once per party (issuer, reporting owner). The stream emits each accession once.
/v1/stream/latency reports p50, p90 and p99 from EDGAR acceptance to SecFeed.
Endpoints
Authenticate with Authorization: Bearer YOUR_KEY. Responses are JSON.
Server-Sent Events: each new filing the moment EDGAR publishes it.
Parameters: formTypes, ciks
The latest filings seen by the stream, each with seenAt and latencyMs.
Parameters: size
Measured delivery latency (p50, p90, p99) from EDGAR acceptance to SecFeed, last N hours.
Parameters: hours
Push new filings to your HTTPS endpoint.
Parameters: JSON body: {"url", "formTypes": [], "ciks": []}
Response fields
The main fields in every result. The raw filing data is always one level down.
| Field | Meaning |
|---|---|
accessionNo, formType | The filing and its form type. |
companyName, cik, role | The party listed in the feed and its role (filer, issuer, reporting owner). |
filedAt | EDGAR acceptance time with time zone. |
linkToFilingDetails | The filing index page on EDGAR. |
Use cases
- Alert a trading desk on new 8-Ks and Form 4s for a watchlist
- Trigger an LLM summary the moment a filing lands
- Keep a local filing database current without polling EDGAR
- Feed a Slack or Discord channel with filings by form type
Datasets behind this API
The SEC forms this API reads, with live filing counts.
Every Form 8-K current report since 1993, classified by item: earnings, acquisitions, auditor changes, executive departures, cyber incidents and more.
Form 4Insider tradingEvery Form 4 statement of changes in beneficial ownership since 2003, parsed into transactions with insider, role, code, shares and price.
13DActive / activistEvery Schedule 13D and amendment since 1993: investors above 5% with control or activist intent, their stake, funding and plans, as JSON.
10-KAnnual reportsEvery Form 10-K annual report filed on EDGAR since 1993, searchable by company, date and text, with sections and XBRL financials as JSON.
Tutorials
FAQ
How fast is the stream?
SecFeed polls EDGAR's live feed every few seconds. /v1/stream/latency shows the measured delay from EDGAR acceptance for the last N hours.
Should I use SSE or webhooks?
SSE is simplest when you run a process that stays connected. Webhooks suit serverless setups: SecFeed calls your HTTPS endpoint for each new filing.
Can I limit the stream to some companies?
Yes. Pass ciks and formTypes as comma separated lists on /v1/stream or in the webhook body.
Try the Real-Time Stream API free
500 API calls a month on the free plan. No sales call.