---
title: "Live quotes for up to 50 stocks"
method: GET
path: "/v1/quotes/live"
tags: ["live"]
---

# Live quotes for up to 50 stocks

`GET /v1/quotes/live`

## Request

- Base URL: `https://api.tapetide.com`
- URL: `https://api.tapetide.com/v1/quotes/live`
- Auth: HTTP bearer

Latest traded price, change, OHLC and volume for up to 50 symbols in one call. Rows are positional: one per requested symbol, in the order given, with `found: false` for unknown symbols. Prices refresh within ~15 seconds during the session; outside it they are the last session's close. Not paginated — the whole batch is one page.

## Query parameters

- `symbols` string[], required
- `limit` integer
- `cursor` string

## Response `200`

OK. Costs one request unit.

- object
  - `data` LiveQuotesItem[], required
    - `symbol` string, required: Resolved stock symbol.
    - `requested` string, required: The symbol as you passed it (batch rows are positional and 1:1 with `symbols`).
    - `found` boolean, required: false when the symbol is not a listed stock; every price field is then null.
    - `name` string, nullable, required: Company name.
    - `ltp` number, nullable, required: Last traded price, INR.
    - `change` number, nullable, required: Change versus the previous close, INR.
    - `change_pct` number, nullable, required: Change versus the previous close, percent (1.5 = 1.5%).
    - `open` number, nullable, required: Session open, INR.
    - `high` number, nullable, required: Session high, INR.
    - `low` number, nullable, required: Session low, INR.
    - `prev_close` number, nullable, required: Previous session close, INR.
    - `volume` number, nullable, required: Shares traded so far this session.
    - `last_trade_at` string, nullable, required: Time of the last trade behind this quote (ISO-8601 UTC); null when the feed did not stamp it.
    - `market_status` 'open' | 'pre_open' | 'closed' | 'holiday', nullable, required: Exchange status when the quote was served. `closed`/`holiday` quotes are the last session's close.
  - `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)
