Market Data API

Free · no key · no signup · updated 19 Sept 2026, 1:29 am IST

The same data the pages on this site are built from, as JSON. No Indian IPO site publishes structured data, so anyone wanting a feed currently has to scrape a table. These endpoints exist so they do not have to.

Terms, in three lines

1. Attribute Xflot with a link back.

2. Poll no more than once a minute. Responses are cached anyway, and there is one small server behind this.

3. Carry the disclaimer. Every response includes one — please keep it with the data.

Know what the GMP field is. It is unofficial, unverifiable, and where our sources disagree by more than half the premium we flag it with gmpDisputed. An API makes it easy to consume a number at a scale that quietly launders that uncertainty away. The flag is there to be read, not ignored.

Endpoints

GET /api/public/market/ipos

Every tracked IPO with price band, dates, reported GMP, subscription and board.

statusUPCOMING | OPEN | CLOSED | LISTED
boardMAINBOARD | SME
limitdefault 60, max 200
{
  "ok": true,
  "count": 12,
  "ipos": [
    {
      "slug": "example-ipo",
      "name": "Example Industries Limited",
      "board": "MAINBOARD",
      "status": "OPEN",
      "priceMin": 182, "priceMax": 194,
      "lotSize": 75, "issueSizeCr": 981,
      "openDate": "2026-09-10T00:00:00.000Z",
      "closeDate": "2026-09-12T00:00:00.000Z",
      "lastGmp": 40, "lastGmpPct": 20.6,
      "lastSubX": 81.65,
      "gmpSources": 2, "gmpSpread": 12, "gmpDisputed": false
    }
  ],
  "disclaimer": "Aggregated public information. GMP is unofficial…"
}
GET /api/public/market/ipos/:slug

One IPO, with its day-by-day GMP history and category-wise subscription.

{
  "ok": true,
  "ipo": {
    "slug": "example-ipo",
    "gmp": [ { "observedAt": "2026-09-11", "gmp": 40, "gmpPct": 20.6, "source": "…", "unofficial": true } ],
    "subs": [ { "category": "QIB", "timesSub": 12.5 }, { "category": "TOTAL", "timesSub": 81.65 } ]
  }
}
GET /api/public/market/deals

Bulk and block deals as disclosed by the exchange.

symbolfilter to one ticker
limitdefault 100, max 300
{
  "ok": true,
  "deals": [
    { "symbol": "EXAMPLE", "clientName": "SOME FUND", "dealType": "BUY",
      "kind": "BULK", "quantity": 582438, "price": 209.98,
      "valueCr": 12.23, "exchange": "NSE", "tradeDate": "2026-09-16T00:00:00.000Z" }
  ]
}
GET /api/public/market/scoreboard

Implied GMP against actual listing price for every scored listing, with the direction-hit rate.

{
  "ok": true,
  "summary": { "n": 47, "avgAbsErrorPp": 11.4, "directionHitPct": 72.3 },
  "rows": [
    { "slug": "example-ipo", "name": "Example Industries",
      "issuePrice": 182, "gmpAtClose": 40, "impliedPct": 21.9,
      "listingPrice": 194, "actualPct": 6.59, "errorPp": 15.31,
      "directionHit": true, "listedOn": "2026-09-16" }
  ]
}

Notes

Example

curl -s "https://xflot.com/api/public/market/ipos?status=OPEN" | jq '.ipos[] | {name, lastGmp, lastSubX}'

Something missing?

If a field you need is on a page here but not in the API, say so — it is usually a small change and the endpoints exist to be used.

XDQ Labs Private Limited is not SEBI-registered. This is public information, not advice — see the disclaimer.