---
title: "Insider trades"
method: GET
path: "/v1/stocks/{symbol}/insider-trades"
tags: ["ownership"]
---

# Insider trades

`GET /v1/stocks/{symbol}/insider-trades`

## Request

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

Trades and pledges by company insiders (promoters, directors, key managerial personnel, designated employees and their relatives) disclosed under the insider-trading regulations, from 2015 onward. Newest disclosure first; filter by disclosure date with `from`/`to` (IST) and by `transaction_type`. Filed dates outside 1990-01-01..today+30 are typos in the original filings and are published as null. Updated daily.

## Path parameters

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

## Query parameters

- `from` string
- `to` string
- `transaction_type` 'buy' | 'sell' | 'pledge' | 'pledge_release' | 'pledge_invocation' | 'esop'
- `limit` integer
- `cursor` string

## Response `200`

OK. Costs one request unit.

- object
  - `data` StockInsiderTradesItem[], required
    - `symbol` string, required: Stock symbol.
    - `person_name` string, nullable, required: Name of the insider (director, promoter, employee, relative or connected person).
    - `person_category` string, nullable, required: Insider category as disclosed, e.g. "Promoters", "Director", "Key Managerial Personnel", "Employees/Designated Employees".
    - `transaction_type` 'buy' | 'sell' | 'pledge' | 'pledge_release' | 'pledge_invocation' | 'esop', nullable, required: buy, sell, pledge (creation), pledge_release, pledge_invocation or esop. Null when the filing leaves it blank.
    - `mode` string, nullable, required: How the securities were acquired or disposed, e.g. "Market Purchase", "Market Sale", "ESOP", "Off Market", "Gift".
    - `security_type` string, nullable, required: Security traded, e.g. "Equity Shares".
    - `quantity` number, nullable, required: Number of securities in this transaction.
    - `value_inr` number, nullable, required: Reported consideration in INR. Null when not reported or reported as zero (e.g. gifts, ESOP allotments filed without value), or when misfiled (see price_inr).
    - `price_inr` number, nullable, required: Implied average price per security in INR (value_inr / quantity), rounded to 2 decimals. Null when either is missing, or when it is above 1 lakh and more than 10x away from the stock's close around the trade date (a misfiled value or quantity; value_inr is then null too).
    - `holding_before_shares` number, nullable, required: Securities held by the person before the transaction.
    - `holding_before_pct` number, nullable, required: Holding before the transaction, % of total shares as filed. 0 only when holding_before_shares is 0; null where the filing gave 0 % for a non-zero holding (filings use 0 for uncomputed values, and very small holdings round to 0) or gave nothing.
    - `holding_after_shares` number, nullable, required: Securities held by the person after the transaction.
    - `holding_after_pct` number, nullable, required: Holding after the transaction, % of total shares as filed. 0 only when holding_after_shares is 0; null where the filing gave 0 % for a non-zero holding or gave nothing.
    - `transaction_from` string, nullable, required: First day of the transaction window (YYYY-MM-DD), null when not reported.
    - `transaction_to` string, nullable, required: Last day of the transaction window (YYYY-MM-DD), null when not reported.
    - `intimated_on` string, nullable, required: Date the insider informed the company (YYYY-MM-DD), null when not reported.
    - `disclosed_at` string, required: When the company disclosed the trade to the exchange (ISO-8601 UTC). Results are ordered by this.
  - `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)
