Let’s be honest: tracking Initial Public Offerings (IPOs) programmatically is usually a nightmare. You’re either scraping the SEC EDGAR database (which is painful), parsing messy HTML from financial news sites (which breaks every time they update their CSS), or paying thousands a month for a Bloomberg terminal.
If you’re building a dashboard, a trading bot, or just a notification script to alert you when a new tech stock hits the market, you don't want to parse HTML. You want a clean JSON object.
That’s where the SteadyAPI Calendar endpoint comes in. It standardizes upcoming, priced, and filed IPO data into a simple structure. Here is how to use it to build a lightweight IPO tracker.
Obtain API key
The Endpoint
We are looking at the Calendar Events section of the documentation. Specifically, we want the IPO endpoint.
Docs Link:
SteadyAPI Docs: IPO Calendar Endpoint
Method: GET
URL: https://api.steadyapi.com/v1/markets/calendar/ipo
Authenticating
First, you need your API key. If you don't have one, grab it from your SteadyAPI dashboard. You'll pass this in the header as a Bearer token.
The Code
Let’s write a quick Python script to fetch IPOs for a specific month. The API accepts a date query parameter in the YYYY-MM format.
Here is the setup:
import requests
import json
# Configuration
API_KEY = "YOUR_STEADY_API_KEY_HERE"
BASE_URL = "https://api.steadyapi.com/v1/markets/calendar/ipo"
# Define the headers
headers = {
"Authorization": f"Bearer {API_KEY}",
"Accept": "application/json"
}
# Define parameters (YYYY-MM format)
params = {
"date": "2023-11"
}
try:
# Make the request
response = requests.get(BASE_URL, headers=headers, params=params)
response.raise_for_status() # Check for HTTP errors
data = response.json()
# Check if we got data back
if data['meta']['status'] == 200:
ipo_list = data['body']
print(f"Found {len(ipo_list)} IPOs for {params['date']}:\n")
for ipo in ipo_list:
ticker = ipo.get('proposedTickerSymbol', 'N/A')
name = ipo.get('companyName')
price = ipo.get('proposedSharePrice')
date = ipo.get('pricedDate')
status = ipo.get('dealStatus')
print(f"[{ticker}] {name}")
print(f" Status: {status}")
print(f" Price: ${price}")
print(f" Date: {date}")
print("-" * 30)
else:
print("API returned an error:", data)
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
What the Data Looks Like
When you hit the endpoint, you aren't getting a wall of text. You get a structured list. Here is an example of the JSON response you will receive.
Example Response:
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"date": "2023-11",
"processedTime": "2023-12-01T01:12:14.365196Z"
},
"body": [
{
"dealID": "1273030-107900",
"proposedTickerSymbol": "CLBRU",
"companyName": "COLOMBIER ACQUISITION CORP. II",
"proposedExchange": "NYSE",
"proposedSharePrice": "10.00",
"sharesOffered": "15,000,000",
"pricedDate": "11/21/2023",
"dollarValueOfSharesOffered": "$150,000,000",
"dealStatus": "Priced"
},
{
"dealID": "1179767-107817",
"proposedTickerSymbol": "ELAB",
"companyName": "Elevai Labs Inc.",
"proposedExchange": "NASDAQ Capital",
"proposedSharePrice": "4.00",
"sharesOffered": "1,500,000",
"pricedDate": "11/21/2023",
"dollarValueOfSharesOffered": "$6,000,000",
"dealStatus": "Priced"
}
]
}
Key Fields
-
proposedTickerSymbol
The ticker symbol expected to begin trading after the IPO -
companyName
The name of the company going public -
proposedExchange
The listing exchange, such as NYSE or NASDAQ -
proposedSharePrice
The expected IPO offering price per share -
sharesOffered
The number of shares being issued in the offering -
pricedDate
The date the IPO was officially priced -
dealStatus
Indicates whether the IPO is Filed, Priced, Withdrawn, or Upcoming
3 Practical Use Cases
Now that you have the data flowing, here is what you can actually build with it:
Slack/Discord Notification Bot:
Run a cron job every morning that checks the endpoint for the current month. Filter the list for pricedDate equal to today's date. If there’s a match, pipe that JSON data into a Discord webhook to alert your trading group that a new ticker is going live today.
Algorithmic Trading Filter:
Many algos avoid trading stocks on their IPO day due to extreme volatility, or conversely, specifically target them for momentum plays. You can use this API to populate a Do Not Trade or Watchlist array in your trading system automatically at the start of every week.
Market Calendar UI:
If you are building a fintech dashboard, you can map the body array directly to a frontend calendar component. Because the data includes the proposedSharePrice and sharesOffered, you can easily calculate the market cap and sort the IPOs by size to highlight the big listings vs. the smaller caps.
Summary
Stop trying to regex the SEC website. By using the SteadyAPI v1/markets/calendar/ipo endpoint, you turn a complex data extraction problem into a simple HTTP GET request. You get the ticker, the exchange, the price, and the date, exactly what you need to track the market.
Learn more or explore other endpoints:
SteadyAPI Stock and Options Data API