All Posts
TutorialS-1 IPO DataSEC EFFECT FilingIPO Calendar API

SEC S-1 IPO Filing Data API: Registration to Effective Date

The SEC S-1 IPO filing data API: registration statement, price-range amendments, and the EFFECT filing that actually marks IPO day, as JSON.

Published August 13, 20268 min readStockFit Engineering
SEC S-1 IPO Filing Data API: Registration to Effective Date

Every IPO API can tell you a company filed an S-1. Almost none of them can tell you the one date that actually matters: when the SEC declared that registration statement effective and the stock was cleared to trade. That date does not live in the S-1. It does not live in the price-range amendment either. It lives in a separate, single-purpose filing called EFFECT, and if your data pipeline is not reading it directly, your IPO date is a guess dressed up as a fact.

This is a field guide to the full S-1 lifecycle as StockFit reads it from SEC EDGAR: the initial registration statement, the S-1/A price-range amendments, and the EFFECT filing that closes the loop, all through the /api/filings/offering and /api/filings endpoints. We will walk it end to end on a real, recent IPO, then build a small IPO calendar from the live feed.

What an S-1 discloses, and what 424B4 adds

Form S-1 is the registration statement a company files with the SEC before it can sell shares to the public for the first time. It is long, usually 150 to 300 pages, and it covers the business description, risk factors, use of proceeds, capitalization table, and audited financial statements, run through the same XBRL pipeline StockFit uses for 10-Ks. What it usually does not contain, on the initial filing, is a price. Underwriters and the company have not agreed on one yet.

Form 424B4 is the final prospectus, filed after pricing, once shares are actually being sold. Foreign private issuers file F-1 instead of S-1; REITs and real-estate programs file S-11. StockFit's /api/filings/offering endpoint tracks the S-1 family end to end, returning every registration statement and amendment for a company, each row carrying its own accession number so a reported price range is always traceable to the exact filing that disclosed it.

Why S-1/A amendments matter for pricing

A company almost never prices at the number in its first S-1, because the first S-1 usually has no number at all. The price range shows up, and then moves, in the amendments (S-1/A) filed in the days before the IPO. Figma's July 2025 IPO is a clean, three-filing example of exactly how much that range can move in three weeks:

Jul 1, 2025
S-1 filed
Initial registration statement. No price range disclosed yet.
view filing
Jul 21, 2025
S-1/A: $25–$28
First priced amendment. 12,472,657 shares offered, 5,540,561 overallotment.
view filing
Jul 28, 2025
S-1/A: $30–$32
Range raised as demand firmed up. Same share count.
view filing
Jul 30, 2025
EFFECT filed
SEC declares the registration effective. Final price: $33, above the last range.
view filing

Three things worth noticing. First, the range moved up twice in three weeks, from no range, to $25–$28, to $30–$32, and the stock ultimately priced at $33, above every range that had been on file. Second, the share count and overallotment held steady across amendments while only the price moved, which is common: the deal size in shares is usually locked earlier than the price. Third, none of this is visible from the S-1 alone. Reading only the first filing would tell you Figma planned an IPO with no clue what it would actually cost.

Pulling the full amendment sequence is one call:

bash
curl "https://api.stockfit.io/v1/api/filings/offering?symbol=FIG" \
  -H "Authorization: Bearer YOUR_API_KEY"
json
{
  "totalResults": 3,
  "data": [
    { "filedDate": "2025-07-01", "accessionNumber": "0001628280-25-033742" },
    {
      "filedDate": "2025-07-21",
      "accessionNumber": "0001628280-25-035381",
      "sharesOffered": 12472657,
      "priceRangeLow": 25,
      "priceRangeHigh": 28,
      "overallotmentShares": 5540561
    },
    {
      "filedDate": "2025-07-28",
      "accessionNumber": "0001628280-25-036090",
      "sharesOffered": 12472657,
      "priceRangeLow": 30,
      "priceRangeHigh": 32,
      "overallotmentShares": 5540561
    }
  ]
}

The EFFECT filing: what actually marks IPO day

None of the three filings above says “trading starts here.” That signal is a separate, tiny filing type: EFFECT, submitted by the SEC itself to notify EDGAR that a registration statement (or a post-effective amendment to one) is now effective. Figma's EFFECT filing carries a dateFiled of July 30, 2025 and a periodEndDate of July 31, exactly the day Figma opened for trading on the NYSE. That is not a coincidence: the effectiveness order and the pricing announcement happen the evening before the stock opens.

bash
curl "https://api.stockfit.io/v1/api/filings?symbol=FIG&type=EFFECT" \
  -H "Authorization: Bearer YOUR_API_KEY"
json
{
  "data": [
    {
      "type": "EFFECT",
      "accessionNumber": "9999999995-25-002410",
      "dateFiled": "2025-07-30",
      "periodEndDate": "2025-07-31",
      "amendment": false
    }
  ]
}

One gotcha worth designing around: a company can rack up more than one EFFECT filing over its life, and only the first is the IPO. Circle Internet Group (CRCL) filed its IPO EFFECT on June 4, 2025 (trading opened June 5), then a second, unrelated EFFECT on August 14, 2025 for a later registration statement becoming effective, most likely an employee equity plan or a resale shelf, not a second IPO. Sort by dateFiled and take the first EFFECT per CIK; treating every EFFECT filing as an IPO event will silently generate phantom listings for companies that have been public for months.

Recent S-1 offerings API: live JSON, todays filings

/api/filings/recent-offerings is the feed side of this: every S-1 and S-1/A filed recently, across the whole market, newest first. Most days this is not another Figma-sized tech IPO; it is a long tail of small-cap and micro-cap S-1 filings, which is the honest shape of daily IPO activity on EDGAR. Here is a live slice, unedited:

json
{
  "totalResults": 291,
  "data": [
    { "cik": 2068385, "filedDate": "2026-08-12", "isPriced": false, "symbol": "SHAZ", "name": "SharonAI Holdings Inc." },
    {
      "cik": 1131903, "filedDate": "2026-08-12", "isPriced": true, "symbol": "FCCN",
      "name": "SPECTRAL CAPITAL Corp", "sharesOffered": 100000, "priceRangeLow": 1.6, "priceRangeHigh": 1.6
    },
    {
      "cik": 2134856, "filedDate": "2026-08-11", "isPriced": true, "symbol": "XTER",
      "name": "Karman Line Acquisition Corp.", "priceRangeLow": 11.5, "priceRangeHigh": 11.5
    },
    { "cik": 1828161, "filedDate": "2026-08-11", "isPriced": false, "symbol": "FTCI", "name": "FTC Solar, Inc." },
    {
      "cik": 1903784, "filedDate": "2026-08-10", "isPriced": true, "symbol": "VOGX",
      "name": "Vogenx, Inc.", "sharesOffered": 1000000, "priceRangeLow": 11, "priceRangeHigh": 13
    }
  ]
}

The isPriced flag is the field to branch on: false means the filing on record is still an unpriced S-1 or early S-1/A, true means a price range has landed. Filter to isPriced: true and you have a live, narrowing shortlist of companies close enough to their EFFECT date to be worth polling individually.

Building an IPO calendar from filing data

An IPO calendar is just the offering feed and the EFFECT feed joined on CIK: pull the recently-priced offerings, then check each one for a first EFFECT filing. Once EFFECT shows up, you have a real date, not an analyst estimate.

typescript
// 1. Get recently priced S-1 offerings.
const offerings = await fetch(
  'https://api.stockfit.io/v1/api/filings/recent-offerings?pageSize=50',
  { headers: { Authorization: `Bearer ${token}` } }
).then(r => r.json());

const priced = offerings.data.filter(o => o.isPriced);

// 2. For each priced offering, check for a first EFFECT filing.
const calendar = [];
for (const o of priced) {
  const effect = await fetch(
    `https://api.stockfit.io/v1/api/filings?cik=${o.cik}&type=EFFECT`,
    { headers: { Authorization: `Bearer ${token}` } }
  ).then(r => r.json());

  // Sort ascending, first EFFECT per CIK is the IPO, not a later registration.
  const ipoEffect = effect.data.sort((a, b) => a.dateFiled.localeCompare(b.dateFiled))[0];

  calendar.push({
    symbol: o.symbol,
    name: o.name,
    priceRange: [o.priceRangeLow, o.priceRangeHigh],
    status: ipoEffect ? 'trading' : 'priced, awaiting effectiveness',
    tradingDate: ipoEffect?.periodEndDate ?? null,
  });
}

Companies with no EFFECT filing yet are still in registration, priced or not. The moment one appears, periodEndDate on that first EFFECT record is your trading-day field, sourced from the SEC's own effectiveness notice rather than inferred from a press release or a price-range filing date.

For a single company's full filing footprint, not just its offering, /api/filings/stats rolls up counts by form type. Figma's shows the shape you would expect from a recent IPO: three S-1 filings, one EFFECT, and a 1% amendment rate across everything the company has filed since going public.

json
{
  "totalFilings": 309,
  "byType": {
    "S-1": { "count": 3, "latest": "2025-07-28" },
    "EFFECT": { "count": 1, "latest": "2025-07-30" },
    "4": { "count": 161, "latest": "2026-08-12" },
    "10-Q": { "count": 4, "latest": "2026-08-05" },
    "10-K": { "count": 1, "latest": "2026-02-18" }
  },
  "amendments": { "count": 3, "rate": 0.01 }
}

For the full form-by-form map of what powers every StockFit endpoint, including where the S-1 and EFFECT filings sit next to the rest of the SEC's form taxonomy, see the SEC forms field guide. And for other filing-derived signals institutional desks use beyond IPO timing, transaction codes, activist stakes, segment margins, see SEC EDGAR alternative data signals.

Get a free API key and pull today's S-1 feed yourself; /api/filings/recent-offerings and /api/filings (with type=EFFECT) are both on the Stock and Pro plans, and /api/filings without the offering-specific fields is free.

FAQ

Q.What is the difference between Form S-1 and Form 424B4?
S-1 is the registration statement filed before a price is set; it discloses the business, financials, and risk factors but often leaves the price blank. 424B4 is the final prospectus, filed after the SEC declares the registration effective and shares are actually being offered at a fixed price. StockFit's /api/filings/offering tracks the S-1 and its amendments; the EFFECT filing, not 424B4, is what StockFit uses as the trading-clearance signal.
Q.What does the SEC EFFECT filing mean and why does it matter for IPO date?
EFFECT is a short, standalone filing the SEC submits to EDGAR to record that a registration statement (or a post-effective amendment) has become effective. It is the only filing that marks legal clearance to trade; a price range in an S-1/A is a proposal, not a clearance. The periodEndDate on the first EFFECT filing per CIK is StockFit's best single field for the day a company actually starts trading.
Q.How do S-1/A amendments change during the IPO process?
Almost always in the same direction: share count firms up early, then the price range appears and moves as underwriters gauge demand during the roadshow. Figma's range moved from unset, to $25–$28, to $30–$32 over 27 days, and priced at $33, above every disclosed range. Reading only the original S-1 misses all of that movement.
Q.Can a company file more than one EFFECT filing?
Yes, and it is a common trap. A company files a new EFFECT record every time a registration statement becomes effective, which includes follow-on offerings, employee equity plans (Form S-8), and resale shelf registrations filed long after the IPO. Circle Internet Group's second EFFECT filing landed more than two months after its actual IPO. Always take the earliest EFFECT filing per CIK as the IPO date, not the most recent.
Q.How fresh is the recent S-1 offerings endpoint?
/api/filings/recent-offerings reflects filings as they land on EDGAR, so a company that files an S-1 or S-1/A today shows up in the feed the same day. There is no batch delay; the lag is whatever the SEC itself takes to publish the filing.
Q.Can I build an IPO calendar with the StockFit API?
Yes: page through /api/filings/recent-offerings for priced offerings, then check each CIK against /api/filings with type=EFFECT for a trading-clearance date. Companies with a priced S-1/A but no EFFECT filing yet are still pending; once EFFECT appears, the calendar entry is confirmed rather than estimated.
Q.What is the difference between Form S-1, Form S-11, and Form F-1?
All three are registration statements for a first public offering, split by issuer type. S-1 is the general-purpose form most operating companies use. S-11 is for REITs and real-estate programs, with disclosure tailored to property portfolios and lease structures. F-1 is for foreign private issuers, the registration-statement counterpart to Form 20-F. StockFit's offering endpoints track the S-1 family; S-11 and F-1 filers still surface through the general /api/filings search.
Q.Is the price range in an S-1/A the final IPO price?
No, it is a disclosed range the company and underwriters expect, not a commitment. The final price is set the evening before trading begins and is often outside the last disclosed range, Figma priced at $33 against a final $30–$32 range. Treat the S-1/A price range as a strong signal of where pricing is heading, not the number itself.
Q.Can I get S-1 IPO data on the StockFit free tier?
General filing search via /api/filings (including type=EFFECT lookups by symbol or CIK) is on the free tier. The offering-specific endpoints, /api/filings/offering, /api/filings/recent-offerings, and /api/filings/stats, require the Stock plan ($39/mo) or the Professional plan ($69/mo).

Ready to build?

Free API key, no credit card. Every endpoint mentioned in this post is available on the free tier.