---
title: Delayed Stock Quotes
sidebar_position: 2
---

Retrieve the most recent available delayed quote for a stock.

import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";

## Endpoint
**GET** `https://api.marketdata.app/v1/stocks/quotes/{symbol}/`

## Request Example

<Tabs>
<TabItem value="HTTP" label="HTTP" default>

**GET** [https://api.marketdata.app/v1/stocks/quotes/AAPL/](https://api.marketdata.app/v1/stocks/quotes/AAPL/)

</TabItem>
<TabItem value="NodeJS" label="NodeJS">

```js title="app.js"
fetch("https://api.marketdata.app/v1/stocks/quotes/AAPL/")
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });
```

</TabItem>
<TabItem value="Python" label="Python">

```python title="app.py"
from marketdata.client import MarketDataClient

client = MarketDataClient()
quotes = client.stocks.quotes("AAPL")
print(quotes)
```

</TabItem>
<TabItem value="Go" label="Go">

```go title="stockQuote.go"

import (
  "fmt"

  api "github.com/MarketDataApp/sdk-go"
)

func ExampleStockQuoteRequest() {
	quotes, err := StockQuote().Symbol("AAPL").Get()
	if err != nil {
		fmt.Print(err)
		return
	}

	for _, quote := range quotes {
		fmt.Println(quote)
	}
}
```
</TabItem>
</Tabs>

## Response Example

```json
{
  "s": "ok",
  "symbol": ["AAPL"],
  "ask": [230.78],
  "askSize": [2],
  "bid": [230.77],
  "bidSize": [2],
  "mid": [230.775],
  "last": [230.775],
  "change": [-2.052],
  "changepct": [-0.0088],
  "volume": [23116822],
  "updated": [1755276667]
}
```

## Request Parameters

<Tabs>
<TabItem value="required" label="Required" default>

- **symbol** `string`

  The company's ticker symbol.

</TabItem>
<TabItem value="Optional" label="Optional">

- **52week** `boolean`

  Enable the output of 52-week high and 52-week low data in the quote output. By default this parameter is `false` if omitted.

- **extended** `boolean`

  Control the inclusion of extended hours data in the quote output. Defaults to `true` if omitted. 

  - When set to `true`, the most recent quote is always returned, without regard to whether the market is open for primary trading or extended hours trading.
  - When set to `false`, only quotes from the primary trading session are returned. When the market is closed or in extended hours, a historical quote from the last closing bell of the primary trading session is returned instead of an extended hours quote. 

</TabItem>
</Tabs>

## Response Attributes

<Tabs>
<TabItem value="Success" label="Success" default>

- **s** `string`

  Will always be `ok` when there is data for the symbol requested.

- **symbol** `array[string]`

  The symbol of the stock.

- **ask** `array[number]`

  The ask price of the stock.

- **askSize** `array[number]`

  The number of shares offered at the ask price.

- **bid** `array[number]`

  The bid price.

- **bidSize** `array[number]`

  The number of shares that may be sold at the bid price.

- **mid** `array[number]`

  The midpoint price between the ask and the bid.

- **last** `array[number]`

  The last price the stock traded at.

- **change** `array[number]`

  The difference in price in currency units compared to the closing price of the previous primary trading session.

- **changepct** `array[number]`

  The difference in price in percent, expressed as a decimal, compared to the closing price of the previous day. For example, a 3% change will be represented as 0.3.

:::note
  - When the market is open for primary trading, **change** and **changepct** are always calculated using the last traded price and the last primary session close. When the market is closed or in extended hours, this criteria is also used as long as `extended` is omitted or set to `true`.
  - When `extended` is set to `false`, and the market is closed or in extended hours, quotes from extended hours are not considered. The values for **change** and **changepct** will be calculated using the last two closing prices instead.
:::

- **52weekHigh** `array[number]`

  The 52-week high for the stock. This parameter is omitted unless the optional 52week request parameter is set to true.

- **52weekLow** `array[number]`

  The 52-week low for the stock. This parameter is omitted unless the optional 52week request parameter is set to true.

- **volume** `array[number]`

  The number of shares traded during the current session.

- **updated** `array[date]`

  The date/time of the current stock quote.

</TabItem>
<TabItem value="NoData" label="No Data">

- **s** `string`

  Status will be `no_data` if no quote can be found for the symbol.

</TabItem>
<TabItem value="Error" label="Error">

- **s** `string`

  Status will be `error` if the request produces an error response.

- **errmsg** `string`
  An error message.

</TabItem>
</Tabs>

## Usage Information

### Data Availability

The type of quote you receive depends on your user type and UTP entitlement. This may include a 15-minute delayed quote or historical (1 day old) quote, depending on the plan or access level. Real-time quotes are not currently available.

| User Type | UTP Entitlement | Quote Type |
|-----------|----------------|------------|
| Non-Professional | ✅ | 15-min delayed |
| Non-Professional | ❌ | Historical (1 day old) |
| Professional | Any | Historical (1 day old) |
| Unknown | Any | Historical (1 day old) |

:::info What are entitlements?
Entitlements are permissions granted by exchanges that allow access to their data. To get delayed quotes, users need to sign the [UTP agreement](/account/entitlements). [Learn more about entitlements](/account/entitlements).
:::

### Pricing

The cost of using the stock quote API endpoint depends on the type of data you choose and your usage pattern. Here's a breakdown of the pricing:

| Data Type     | Cost Basis                | Credits Required per Unit |
|--------------------|---------------------------|---------------------------|
| 15m Delayed Data     | Per symbol         | 1 credit                  |
| Historical Data    | Per symbol   | 1 credit                  |
