---
title: "IPOs"
method: GET
path: "/v1/ipos"
tags: ["ipos"]
---

# IPOs

`GET /v1/ipos`

## Request

- Base URL: `https://api.tapetide.com`
- URL: `https://api.tapetide.com/v1/ipos`
- Auth: HTTP bearer

Initial public offerings on the main board and SME platforms from 2018 onward, including announced and upcoming issues: dates, price band, lot size, issue size, overall subscription and listing-day performance. Sorted by opening date, newest first (announced issues without dates come first when `status=announced`). Filter by `status` or `board`; `GET /v1/ipos/{ipo_slug}` has subscription by category and offer documents.

## Query parameters

- `status` 'upcoming' | 'open' | 'closed' | 'listed' | 'announced'
- `board` 'mainboard' | 'sme'
- `from` string
- `to` string
- `limit` integer
- `cursor` string

## Response `200`

OK. Costs one request unit.

- object
  - `data` IposItem[], required
    - `slug` string, required: URL identifier for `/v1/ipos/{ipo_slug}`, derived from the company name and the year bidding opened.
    - `company` string, required: Issuer name.
    - `symbol` string, nullable, required: Stock symbol once listed; null before listing.
    - `isin` string, nullable, required: ISIN when published.
    - `status` 'upcoming' | 'open' | 'closed' | 'listed' | 'announced', required: announced (no dates yet), upcoming, open, closed (bidding over, not yet listed), listed.
    - `board` 'mainboard' | 'sme', nullable, required: mainboard or sme (small and medium enterprise platform).
    - `exchange` string, nullable, required: Listing exchange when published, e.g. NSE or BSE.
    - `open_date` string, nullable, required: First bidding day (YYYY-MM-DD).
    - `close_date` string, nullable, required: Last bidding day (YYYY-MM-DD).
    - `allotment_date` string, nullable, required: Basis-of-allotment date (YYYY-MM-DD).
    - `listing_date` string, nullable, required: Listing date (YYYY-MM-DD); scheduled when not yet listed.
    - `price_band_low` number, nullable, required: Lower end of the price band, INR per share.
    - `price_band_high` number, nullable, required: Upper end of the price band, INR per share.
    - `issue_price` number, nullable, required: Final issue price, INR per share; null until fixed.
    - `lot_size` integer, nullable, required: Shares per bid lot.
    - `issue_size_cr` number, nullable, required: Total issue size in INR crore.
    - `subscription_total` number, nullable, required: Overall subscription, times (e.g. 4.97 = 4.97x). Null until bidding data is published.
    - `listing_price` number, nullable, required: Listing-day open price, INR; null until listed.
    - `listing_gain_pct` number, nullable, required: Listing-day open vs issue price, percent (1.5 = 1.5%).
  - `meta` ListMeta, required
    - `as_of` string, date-time, required: When this response was assembled (UTC).
    - `route` string, required: operationId that served the request.
    - `count` integer, required: Items in this page.
    - `limit` integer, required: Page size applied.
    - `has_more` boolean, required: Whether another page exists.
    - `next_cursor` string, nullable, required: Pass as `cursor` to fetch the next page; null on the last page.
  - `links` Links, required
    - `next` string, nullable: Relative URL of the next page, or null.

## Other responses

- `400`: Malformed or out-of-range parameter. Not charged.
- `401`: Missing or invalid bearer token.
- `404`: The requested resource does not exist. Not charged.
- `429`: Per-minute burst cap (`rate_limited`) or plan quota (`quota_exhausted`) reached.
- `500`: Unexpected server error. Not charged.
- `502`: A data dependency was unavailable. Not charged.
- `503`: Authentication or quota service temporarily unavailable (`service_unavailable`). Not charged; retry after `Retry-After` seconds.

---

[API](https://skmtc.dev/tapetide/apis/tapetide-api.md) · [All operations](https://skmtc.dev/tapetide/apis/tapetide-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tapetide/apis/tapetide-api/revisions/261ec086bde5?raw)
