---
title: "Price history (OHLCV)"
description: "Price history (OHLCV). Row-per-day OHLCV with delivery %. `days` sets the lookback window (default 365, max 2000); `interval` is the bar size (daily or weekly). `meta.window` states the window actually served and `next_cursor` gives the `end_date` for the preceding page, so a multi-year series is paged with `end_date` until `has_more` is false."
canonical: "https://developers.tapetide.com/api/operations/getpricehistory/"
---

# Price history (OHLCV)

GET

/v1/stocks/{symbol}/price

```js
const url = 'https://api.tapetide.com/v1/stocks/example/price?days=365&interval=daily&end_date=2025-12-31';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```sh
curl --request GET \
  --url 'https://api.tapetide.com/v1/stocks/example/price?days=365&interval=daily&end_date=2025-12-31' \
  --header 'Authorization: Bearer <token>'
```

Row-per-day OHLCV with delivery %. `days` sets the lookback window (default 365, max 2000); `interval` is the bar size (daily or weekly). `meta.window` states the window actually served and `next_cursor` gives the `end_date` for the preceding page, so a multi-year series is paged with `end_date` until `has_more` is false.

## Authorizations

-   **[bearer](/api/#bearer)**

## Parameters

### Path Parameters

**symbol**

required

string

<= 64 characters

Stock or index symbol, e.g. “RELIANCE”, “TCS”, “NIFTY”. Percent-encode symbols containing “&” (M%26M).

### Query Parameters

**days**

integer

\>= 1 <= 2000

Lookback window in calendar days (default 365, max 2000).

#### Example

```json
365
```

**interval**

string

Allowed values: daily weekly

Bar size: daily (default) or weekly. Intraday bars are not served here.

**end\_date**

string

Inclusive YYYY-MM-DD upper bound; the paging cursor. Pass `meta.window.next_cursor` from the previous page.

#### Example

```plaintext
2025-12-31
```

## Responses

### 200

OK. Costs one request unit.

Media typeapplication/json

object

**data**

required

The document. Shape is route-specific and never truncated.

**meta**

required

Paging and window information where the route pages (e.g. `window.next_cursor` on price history).

object

**as\_of**

When this response was assembled (UTC).

string format: date-time

**route**

The operationId that served it.

string

**_key_**

additional properties

any

#### Example generated

```json
{
  "data": "example",
  "meta": {
    "as_of": "2026-04-15T12:00:00Z",
    "route": "example"
  }
}
```

#### Headers

**X-RateLimit-Reset**

integer

Unix seconds when the binding quota window resets (IST boundaries).

### 400

Malformed or out-of-range parameter. Not charged.

Media typeapplication/json

object

**error**

required

object

**code**

required

string

Allowed values: authentication\_required invalid\_token invalid\_request route\_not\_found not\_found method\_not\_allowed rate\_limited quota\_exhausted upstream\_unavailable service\_unavailable tool\_error internal\_error

**message**

required

string

**details**

object

**_key_**

additional properties

any

#### Example

```json
{
  "error": {
    "code": "authentication_required"
  }
}
```

### 401

Missing or invalid bearer token.

Media typeapplication/json

object

**error**

required

object

**code**

required

string

Allowed values: authentication\_required invalid\_token invalid\_request route\_not\_found not\_found method\_not\_allowed rate\_limited quota\_exhausted upstream\_unavailable service\_unavailable tool\_error internal\_error

**message**

required

string

**details**

object

**_key_**

additional properties

any

#### Example

```json
{
  "error": {
    "code": "authentication_required"
  }
}
```

### 404

The symbol, index or document does not exist. Not charged.

Media typeapplication/json

object

**error**

required

object

**code**

required

string

Allowed values: authentication\_required invalid\_token invalid\_request route\_not\_found not\_found method\_not\_allowed rate\_limited quota\_exhausted upstream\_unavailable service\_unavailable tool\_error internal\_error

**message**

required

string

**details**

object

**_key_**

additional properties

any

#### Example

```json
{
  "error": {
    "code": "authentication_required"
  }
}
```

### 429

Per-minute burst cap or plan quota reached.

Media typeapplication/json

object

**error**

required

object

**code**

required

string

Allowed values: authentication\_required invalid\_token invalid\_request route\_not\_found not\_found method\_not\_allowed rate\_limited quota\_exhausted upstream\_unavailable service\_unavailable tool\_error internal\_error

**message**

required

string

**details**

object

**_key_**

additional properties

any

#### Example

```json
{
  "error": {
    "code": "authentication_required"
  }
}
```

#### Headers

**Retry-After**

integer

**X-RateLimit-Reset**

integer

Unix seconds when the binding quota window resets (IST boundaries).

### 502

A data dependency was unavailable. Not charged.

Media typeapplication/json

object

**error**

required

object

**code**

required

string

Allowed values: authentication\_required invalid\_token invalid\_request route\_not\_found not\_found method\_not\_allowed rate\_limited quota\_exhausted upstream\_unavailable service\_unavailable tool\_error internal\_error

**message**

required

string

**details**

object

**_key_**

additional properties

any

#### Example

```json
{
  "error": {
    "code": "authentication_required"
  }
}
```
