Indian IPO data, one clean API.
Upcoming, open and listed mainboard and SME issues with price band, lot size, day-wise subscription, listing performance, allotment dates and SEBI filings. Plain JSON, the same key as the Mutual Fund and Market Data APIs.
No card needed. Try the live demo on the right, or open the explorer. Both use a shared demo key, so no sign-up either.
Loading…Loading…
What is in it
Everything about an IPO from the filing to the listing, behind one key and one response format.
Issues and dates
Mainboard and SME IPOs from 2012: price band, lot size, issue size, ISIN, lead managers, registrar and the open, close, allotment, refund and listing dates.
Subscription, day by day
Bids by category (QIB, NII, retail) with times subscribed. NSE shows only the latest state, so we store every update and give you the build-up.
Listing performance
Listing-day open, high, low and close against the issue price, then the close 7, 30 and 180 days later, from NSE end-of-day data.
Allotment information
Dates, the registrar and its own status page, and the final subscription. We never ask for a PAN or application number.
SEBI filings and documents
Draft and red herring filings as SEBI lists them, plus links to the RHP, ratios and anchor letter. Links only; documents stay on NSE and SEBI.
Google Sheets formulas
Seven formulas for your own sheet, such as =IPOSUBS("BCSSL") and =IPOPRICE("VPFL"). Try them in the Sheets Lab, then copy the ready-made Apps Script.
GMP, clearly unofficial
Grey-market premium collected from investorgain.com, with its history. Not a price, not a forecast, not advice, and labelled that way in every reply.
Ask it in plain words
Eleven ipo_ tools for Claude, Cursor and other assistants, such as "which IPOs are open and how did the last SME issue build up?". Same key, read-only. See the tools.
Call it from anywhere
One header, x-api-key. Every response uses the same envelope: status, statusCode, message, data. Also as formulas in Google Sheets and as ipo_ tools in the MCP server.
curl -H "x-api-key: YOUR_KEY" \ "https://fin.ejiapi.com/api/ipo?status=open"
import requests
h = {"x-api-key": "YOUR_KEY"}
for i in requests.get("https://fin.ejiapi.com/api/ipo", params={"status": "open"}, headers=h, timeout=30).json()["data"]:
print(i["symbol"], i["priceBandHigh"], i["lotSize"], i["subscriptionTimes"])
# how the bids built up, update by update
r = requests.get("https://fin.ejiapi.com/api/ipo/VPFL/subscription", params={"history": "true"}, headers=h, timeout=30)
for s in r.json()["data"]:
print(s["asOf"], s["totalTimes"])
const res = await fetch("https://fin.ejiapi.com/api/ipo/BCSSL/performance", { headers: { "x-api-key": "YOUR_KEY" } });
const { data } = await res.json();
console.log(data.issuePrice, data.listing.close, data.listing.gainOnClosePct);
// Extensions → Apps Script. Store the key under Project Settings → Script properties as EJI_KEY.
function IPOSUBS(symbol) {
const key = PropertiesService.getScriptProperties().getProperty("EJI_KEY");
const res = UrlFetchApp.fetch("https://fin.ejiapi.com/api/ipo/" + symbol + "/subscription",
{ headers: { "x-api-key": key } });
return JSON.parse(res.getContentText()).data.totalTimes;
}
// In a cell: =IPOSUBS("BCSSL")
Where the data comes from
No black boxes. Each group has a named source, and the status page shows how fresh it is.
| Data | Source | Notes |
|---|---|---|
| Issues, dates, price band, lot, registrar | NSE public pages | Mainboard and SME issues listed on NSE, from 2012 |
| Subscription | NSE, stored by us at every update | NSE bids only; bids placed on BSE are not included |
| Listing performance | NSE end-of-day files | Close against the issue price after 1, 7, 30 and 180 days |
| Draft and final offer documents | SEBI public filings list | Links to sebi.gov.in; we do not host the documents |
| Grey-market premium | investorgain.com | Unofficial and off-exchange; not a price, not a forecast, not advice |
Questions
Do I need a key to try it?
/api/ipo/coverage) is open to everyone.Does it show my allotment?
What is GMP and can I trust it?
Are BSE-only IPOs included?
Why is there a subscription history?
?history=true shows how bidding built up, which you cannot get from NSE afterwards.