---
title: "Split and bonus adjustment factors"
method: GET
path: "/v1/stocks/{symbol}/corporate-adjustments"
tags: ["prices"]
---

# Split and bonus adjustment factors

`GET /v1/stocks/{symbol}/corporate-adjustments`

## Request

- Base URL: `https://api.tapetide.com`
- URL: `https://api.tapetide.com/v1/stocks/{symbol}/corporate-adjustments`
- Auth: HTTP bearer

Timeline of share-capital events that change the price scale: splits, consolidations and bonuses with their price factor and cumulative factor, plus rights issues and mergers/demergers listed with factor null (no reliable single factor exists; treat price gaps on those ex-dates with caution). Rights rows carry the filed `entitlement_ratio` when one was filed. Daily prices are back-adjusted with these factors, so as-printed close on date d = adjusted close / cumulative_factor of the earliest effective event with ex_date > d (1 when there is none); `meta.reconstruction` states the rule and `meta.unquantified_count` counts the events without a factor across the whole timeline. Not dividend adjusted. Coverage from the 1990s, most complete from 2016. Includes announced upcoming events. Some demergers are reflected in adjusted daily prices without appearing here (e.g. a 2023 spin-off), so a reconstruction across a demerger can be off by the spun-off value.

## Path parameters

- `symbol` string, required: Stock symbol, e.g. "RELIANCE". Percent-encode "&" (M%26M).

## Query parameters

- `order` 'asc' | 'desc'
- `limit` integer
- `cursor` string

## Response `200`

OK. Costs one request unit.

- object
  - `data` StockCorporateAdjustmentsItem[], required
    - `ex_date` string, required: Ex-date: the first session that trades on the post-event basis (YYYY-MM-DD).
    - `type` 'split' | 'consolidation' | 'bonus' | 'rights' | 'merger_or_demerger', required: split (more shares), consolidation (reverse split, fewer shares), bonus, rights, merger_or_demerger.
    - `factor` number, nullable, required: Price factor for the event: a pre-ex price multiplied by this lands on the post-ex scale (1:1 bonus = 0.5, 1-to-10 split = 0.1, 10-to-1 consolidation = 10). null for rights and merger/demerger events, which have no reliable single factor.
    - `shares_before` integer, nullable, required: Shares held before the event in the reduced share ratio (a 1:1 bonus is 1 -> 2). null when the event has no factor.
    - `shares_after` integer, nullable, required: Shares held after the event in the reduced share ratio. null when the event has no factor.
    - `cumulative_factor` number, nullable, required: Product of this event's factor and every LATER effective event's factor. Divide an adjusted price dated before this ex-date (and on/after the previous one) by the earliest later event's cumulative_factor to recover the as-printed price. null for upcoming events and events without a factor.
    - `upcoming` boolean, required: true when the ex-date is after today (IST): announced but not yet reflected in prices.
    - `entitlement_ratio` string, nullable, required: Rights issues only: the filed entitlement in exchange notation, shares offered : shares held (e.g. "2:25" = 2 new shares for every 25 held). It does not give a price factor, which also needs the issue price. null when not filed and for every other type.
  - `meta` object, 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.
    - `total` integer, required: Events in the whole timeline (all pages).
    - `unquantified_count` integer, required: Events in the timeline with no reliable factor (rights issues, mergers/demergers). Their ex-dates can carry a price gap that is not a return; exclude or treat them with caution.
    - `upcoming_count` integer, required: Announced events with an ex-date after today (IST), excluded from every cumulative_factor.
    - `dividend_adjusted` boolean, required: Always false: factors cover splits, consolidations and bonuses only, so the adjusted series is price return, not total return.
    - `reconstruction` string, required: How to rebuild as-printed prices from adjusted daily prices with these factors.
  - `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)
