Live now · Free during beta

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…
…
IPOs stored
…
open or upcoming now
…
subscription updates stored
30 min
refresh in the day

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.

DataSourceNotes
Issues, dates, price band, lot, registrarNSE public pagesMainboard and SME issues listed on NSE, from 2012
SubscriptionNSE, stored by us at every updateNSE bids only; bids placed on BSE are not included
Listing performanceNSE end-of-day filesClose against the issue price after 1, 7, 30 and 180 days
Draft and final offer documentsSEBI public filings listLinks to sebi.gov.in; we do not host the documents
Grey-market premiuminvestorgain.comUnofficial and off-exchange; not a price, not a forecast, not advice

Questions

Do I need a key to try it?
No. The demo on this page and the explorer run through a shared demo key with its own limits. The coverage endpoint (/api/ipo/coverage) is open to everyone.
Does it show my allotment?
No, and it cannot. An allotment result belongs to one applicant and sits on the registrar's page behind a PAN or application number. The API gives the dates, the registrar and a link to its status page, and never asks for personal details.
What is GMP and can I trust it?
Grey-market premium is a figure quoted off-exchange by dealers. It is not a price at which any regulated trade happens and it is not a forecast. We collect it from investorgain.com, keep each update with its time, and mark every reply as unofficial. It can be wrong, late or missing.
Are BSE-only IPOs included?
No. The data comes from NSE, so issues listed only on BSE and bids placed on BSE are missing. Debt, InvIT and REIT issues are not included either.
Why is there a subscription history?
NSE publishes only the newest state of an issue's bids. We store every update, so ?history=true shows how bidding built up, which you cannot get from NSE afterwards.
Is there an uptime guarantee?
Not during the beta. The status page shows when the IPO loader last ran.
Is this investment advice?
No. This is information only, taken from public pages, and may contain errors or delays. Check with the exchange before you act. Nothing here recommends applying for or avoiding an IPO.

What will you build?

Get a key in a minute and make your first call today.

Get a free API key