---
title: "Symbol and ISIN history"
method: GET
path: "/v1/reference/symbol-history/{symbol}"
tags: ["reference"]
---

# Symbol and ISIN history

`GET /v1/reference/symbol-history/{symbol}`

## Request

- Base URL: `https://api.tapetide.com`
- URL: `https://api.tapetide.com/v1/reference/symbol-history/{symbol}`
- Auth: HTTP bearer

Every NSE symbol and ISIN a company has traded under, with the first and last trading day each was observed — use it to map old tickers (e.g. a renamed company) to today's symbol. Accepts a current or former symbol, a BSE code or an ISIN. A symbol always resolves to the company that holds it now (or held it last); if a ticker was ever reused by a different company, reach the earlier holder by its ISIN or BSE code (both are unique) and filter its spells by date. Coverage starts 2016-01-01 and is refreshed every trading day; companies listed only on BSE have no NSE symbol spells.

## Path parameters

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

## Response `200`

OK. Costs one request unit.

- object
  - `data` SymbolHistory, required
    - `symbol` string, required: Current symbol of the company.
    - `isin` string, nullable, required: Current ISIN.
    - `coverage_from` string, nullable, required: Earliest date covered by identifier observations (YYYY-MM-DD).
    - `coverage_through` string, nullable, required: Latest date covered by identifier observations (YYYY-MM-DD).
    - `identifiers` object[], required: Every symbol and ISIN spell, oldest first per type. A gap between one spell's last_seen and the next spell's first_seen is a window where the change happened but its exact day is not proven.
      - `type` 'nse_symbol' | 'isin', required: Identifier kind.
      - `value` string, required: Identifier value held during this spell.
      - `first_seen` string, required: First trading date the identifier was observed for this company (YYYY-MM-DD).
      - `last_seen` string, required: Last trading date the identifier was observed for this company (YYYY-MM-DD).
      - `observed_days` integer, required: Number of trading days the identifier was observed.
      - `starts_before_coverage` boolean, required: true when the identifier was already in use at the start of coverage, so the real start date is earlier than `first_seen`.
      - `current` boolean, required: true when the identifier was still in use at the end of coverage.
  - `meta` SingleMeta, required
    - `as_of` string, date-time, required
    - `route` string, required

## 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)
