---
title: "End-of-day technical signals"
method: GET
path: "/v1/market/signals"
tags: ["market"]
---

# End-of-day technical signals

`GET /v1/market/signals`

## Request

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

Stocks on which a technical signal fired on the latest completed session: 52-week highs and lows, RSI extremes, MACD, volume spikes and 200-day trend. Filter with `signal` and/or `category`; default is all. Largest market cap first; `min_market_cap_cr` (default 500) keeps out micro-caps. `meta.bucket_totals` gives the exact count per requested signal over the whole result. Each rule is stated at /v1/market/signals/definitions.

## Query parameters

- `signal` string[]
- `category` string[]
- `min_market_cap_cr` number
- `limit` integer
- `cursor` string

## Response `200`

OK. Costs one request unit.

- object
  - `data` MarketSignalsItem[], required
    - `symbol` string, required: NSE symbol.
    - `name` string, nullable, required: Company name.
    - `sector` string, nullable, required: Sector.
    - `session_date` string, required: Session the indicators were computed on (YYYY-MM-DD).
    - `signals` string[], required: Every signal firing for this stock (among those requested). See /v1/market/signals/definitions.
    - `ltp` number, nullable, required: Close, INR.
    - `change_1w_pct` number, nullable, required: 1-week change, percent.
    - `volume` number, nullable, required: Session volume, shares.
    - `relative_volume` number, nullable, required: Session volume / 1-month average.
    - `rsi_14` number, nullable, required: 14-day RSI.
    - `high_52w` number, nullable, required: 52-week high, INR.
    - `low_52w` number, nullable, required: 52-week low, INR.
    - `market_cap_cr` number, nullable, required: Market capitalisation, INR crore.
  - `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.
    - `session_date` string, nullable, required: Session the indicators were computed on; null when none is available.
    - `total_stocks` integer, required: Stocks with at least one requested signal firing (all pages).
    - `bucket_totals` object, required: Per requested signal id: how many stocks it fired on (all pages, after `min_market_cap_cr`). A stock with several signals counts in each.
  - `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)
