Getting S-1 and IPO prospectus filings as an API
An IPO leaves a paper trail in EDGAR before the stock ever trades. The company files an S-1 registration statement, amends it (often several times) as S-1/A, and when the deal prices it files the final prospectus as a 424B. If you build an IPO calendar, a new-issue screener, or a tool that flags fresh registrations, that sequence is your raw signal. Pulling it cleanly is harder than it looks, for reasons that have nothing to do with the data and everything to do with how EDGAR indexes it.
Why IPO filings resist a ticker-based pipeline
The first problem is the one that breaks most homemade trackers: a pre-IPO company has no ticker. There is no symbol on the consolidated tape to poll, and EDGAR identifies the filer by CIK and company name. So the moment you most want to know about a company is exactly when you cannot look it up the usual way. Discovery has to run by form type across all filers, which is full-text-search territory, not a per-company feed.
The form strings carry their own traps:
- A domestic issuer files an S-1. A foreign private issuer files an F-1 for the same purpose, so a watcher that only keys on "S-1" misses every overseas listing.
- Many companies start with a confidential draft (a DRS) that is not public. The first public signal is the S-1 when it flips, or the EFFECT notice when the SEC declares the registration effective.
- The final prospectus is a 424B, but the suffix matters. An IPO usually lands as 424B4 (or 424B1). A 424B5 is typically a later shelf takedown, not a debut. Treat them as one bucket and your "new IPOs" list fills with seasoned follow-ons.
The last problem is depth. The numbers people want from an IPO (the price range, shares offered, the deal size) live inside the prospectus document, not in the filing index. The index gives you the form, the filer, and a link. Reading the offering terms means fetching and parsing the document itself.
Type the form, follow the link
EDGAR Events surfaces S-1, S-1/A, and 424B forms as typed events on the same
/filings read the 8-K and activist-stake streams use. You query by form and get
the filing resolved to issuer, CIK, timestamps, and a direct link to the
prospectus document:
curl -s -H "X-API-Key: $EDGAR_KEY" \
"https://api.edgarevents.com/filings?type=S-1&ticker=RDDT&hours=168"
The read returns the standard envelope, so an empty window is an explicit
{"count": 0, "universe": [...], "events": [], "errors": null} rather than a
guess. A registration event has this shape:
{
"event_type": "S-1",
"form": "S-1",
"ticker": null,
"company": "EXAMPLE ROBOTICS INC",
"cik": "0001999999",
"filed_date": "2026-06-26",
"accepted": "2026-06-26T16:31:08.000Z",
"material": true,
"accession": "0001999999-26-000123",
"filing_url": "https://www.sec.gov/Archives/edgar/data/1999999/000199999926000123/0001999999-26-000123-index.htm",
"source": "submissions"
}
Note ticker is null. That is correct for a company that has not listed yet,
and it is why discovery keys on the form and the CIK, with the symbol backfilled
once the stock starts trading. filing_url points at the filing index, so when
you do want the offering terms you fetch the prospectus from there and parse the
one document rather than scanning all of EDGAR for it.
Catching them the moment they file
Because there is no ticker to poll, the clean way to watch for new registrations is a webhook keyed on form type with no ticker filter. Register once and every matching S-1, S-1/A, F-1, and final prospectus is POSTed to you:
curl -s -X POST -H "X-API-Key: $EDGAR_KEY" -H "Content-Type: application/json" \
-d '{"forms":["S-1","S-1/A","F-1","424B4"],"url":"https://your-app.com/hooks/ipos"}' \
"https://api.edgarevents.com/webhooks"
The POST returns the subscription and a whsec_ signing secret. Each delivery
carries an X-Edgar-Signature: sha256=... HMAC of the body so you can verify it
came from the service before you ingest it. Filter by forms to decide which part
of the lifecycle you care about: the S-1 family for "a company intends to go
public," the 424B4 for "the deal just priced." Dedup on accession, because an
active IPO files several amendments and you will see the company more than once on
its way to listing.
When to skip the API
If you only need an occasional snapshot of registrations, efts.sec.gov full-text
search with forms=S-1 and a date range gets you the list for free, and you parse
the prospectus yourself. The API is worth it when new-issue detection is a standing
feature: you want the F-1 and 424B variants normalized into one stream, the
no-ticker discovery handled by form rather than symbol, and a signed push the
moment a registration clears instead of a search you remember to run.
Free tier to try it, then $29/month, self-serve, cancel anytime. Get a key at edgarevents.com; the interactive reference is at api.edgarevents.com/docs.
EDGAR Events is an independent service and is not affiliated with or endorsed by the U.S. Securities and Exchange Commission. Data comes from the public EDGAR system (data.sec.gov, efts.sec.gov).
SEC filings, already parsed.
Typed JSON for 8-K item codes, SC 13D activist stakes, IPO forms and merger proxies. $29/mo, self-serve, cancel anytime.