Form S-1 API (IPO Registrations)
Track companies heading public. The Form S-1 API surfaces IPO registration statements — the prospectus, risk factors, and use of proceeds — as structured JSON.
What is Form S-1?
Form S-1 is the initial registration statement companies file before an IPO. It contains the prospectus: business description, risk factors, financials, and intended use of proceeds.
S-1s (and their amendments, S-1/A) are how you spot upcoming IPOs early and analyze the offering before it prices.
The Finsider Form S-1 API indexes new registrations and their documents so you can build an IPO calendar and monitor amendments in real time.
Fetch Form S-1 filings
List recent Form S-1 filings, filterable by company, ticker, and date.
curl -s "https://api.secapi.dev/v1/filings?formTypes=S-1&limit=20" \
-H "x-api-key: $SECAPI_KEY"import requests
resp = requests.get(
"https://api.secapi.dev/v1/filings?formTypes=S-1&limit=20",
headers={"x-api-key": "YOUR_API_KEY"},
timeout=30,
)
resp.raise_for_status()
data = resp.json()
print(data)const res = await fetch("https://api.secapi.dev/v1/filings?formTypes=S-1&limit=20", {
method: "GET",
headers: { "x-api-key": process.env.SECAPI_KEY },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(data);package main
import (
"fmt"
"io"
"log"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.secapi.dev/v1/filings?formTypes=S-1&limit=20", nil)
req.Header.Set("x-api-key", os.Getenv("SECAPI_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}Open an S-1 prospectus and exhibits
List the documents attached to a specific S-1 registration.
curl -s "https://api.secapi.dev/v1/filings/1543151/0001193125-19-091444/documents" \
-H "x-api-key: $SECAPI_KEY"import requests
resp = requests.get(
"https://api.secapi.dev/v1/filings/1543151/0001193125-19-091444/documents",
headers={"x-api-key": "YOUR_API_KEY"},
timeout=30,
)
resp.raise_for_status()
data = resp.json()
print(data)const res = await fetch("https://api.secapi.dev/v1/filings/1543151/0001193125-19-091444/documents", {
method: "GET",
headers: { "x-api-key": process.env.SECAPI_KEY },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(data);package main
import (
"fmt"
"io"
"log"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.secapi.dev/v1/filings/1543151/0001193125-19-091444/documents", nil)
req.Header.Set("x-api-key", os.Getenv("SECAPI_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}Who files Form S-1?
| Filer | Requirement |
|---|---|
| Pre-IPO companies | Registering securities for first public sale |
| Amendments | Form S-1/A updates terms as the IPO nears |
| Emerging growth cos. | May file confidentially, then publicly |
| Foreign issuers | Often use Form F-1 instead |
Deadlines & coverage
| Aspect | Detail |
|---|---|
| Trigger | Filed ahead of a securities offering / IPO |
| Amendments | Multiple S-1/A filings refine the prospectus |
| Effectiveness | SEC declares the registration effective to price |
| Availability | Indexed within minutes of acceptance |
Key data fields
A sample of the structured fields returned for Form S-1 data.
| Field | Description |
|---|---|
companyName / cik | Registrant identity |
formType | S-1 or S-1/A (amendment) |
filingDate | When the registration was filed |
documents | Prospectus and exhibits with URLs |
accessionNumber | Unique SEC identifier |
Related API endpoints
Deep-link into the interactive reference to try these live.
Frequently asked questions
What is the Form S-1 API?
How do I build an IPO tracker?
/v1/filings?formTypes=S-1&startDate=YYYY-MM-DD for new registrations, and watch for S-1/A amendments to follow each deal toward pricing.Can I read the prospectus content?
Build with the Form S-1 API
Create a free account, grab an API key, and make your first request in under a minute.