---
title: "Top gainers, losers and most active"
method: GET
path: "/v1/market/movers"
tags: ["live"]
---

# Top gainers, losers and most active

`GET /v1/market/movers`

## Request

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

Today's biggest movers within an index universe: a ranking of the index's constituents by price change or traded value, nothing more. `type=gainers` ranks by % change descending, `losers` ascending, `active` by traded value (volume x price) descending. Prices are live during the session; outside it, the last session's. Universe defaults to nifty-500. This is not a signal feed: it carries no pivot or short-term breakout labels. For end-of-day technical signals (52-week highs and lows, RSI, MACD, volume spikes, 200-day trend) use /v1/market/signals.

## Query parameters

- `type` 'gainers' | 'losers' | 'active'
- `universe` string
- `limit` integer
- `cursor` string

## Response `200`

OK. Costs one request unit.

- object
  - `data` MarketMoversItem[], required
    - `rank` integer, required: Position in the requested sort order (1 = first).
    - `symbol` string, required: Stock symbol.
    - `name` string, nullable, required: Company name.
    - `isin` string, nullable, required: ISIN.
    - `exchange` 'NSE' | 'BSE', required: Exchange the price and returns are from: the exchange that computes the index (BSE for Sensex, NSE otherwise).
    - `sector` string, nullable, required: Sector classification.
    - `ltp` number, nullable, required: Last traded price, INR.
    - `change_pct` number, nullable, required: Change today, percent.
    - `change_pct_1w` number, nullable, required: Change over 1 week, percent.
    - `change_pct_1m` number, nullable, required: Change over 1 month, percent.
    - `change_pct_3m` number, nullable, required: Change over 3 months, percent.
    - `change_pct_6m` number, nullable, required: Change over 6 months, percent.
    - `change_pct_1y` number, nullable, required: Change over 1 year, percent.
    - `volume` number, nullable, required: Shares traded today.
    - `traded_value_cr` number, nullable, required: Approximate traded value today (volume x last price), INR crore.
    - `market_cap_cr` number, nullable, required: Market capitalisation, INR crore.
    - `pe` number, nullable, required: Price to earnings; null when not published or not meaningful.
    - `session_date` string, nullable, required: Trading date the prices describe (YYYY-MM-DD, IST).
  - `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)
