Stock Quote
curl --request GET \
--url https://api.unusualwhales.com/api/stock/{ticker}/quote \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.unusualwhales.com/api/stock/{ticker}/quote"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.unusualwhales.com/api/stock/{ticker}/quote', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.unusualwhales.com/api/stock/{ticker}/quote",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.unusualwhales.com/api/stock/{ticker}/quote"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.unusualwhales.com/api/stock/{ticker}/quote")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.unusualwhales.com/api/stock/{ticker}/quote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"last_trade": {
"price": "775.645",
"time": 1786636349747,
"vol": 13548986
},
"market_time": "regular",
"quote": {
"ask": {
"price": "775.660",
"size": 240
},
"bid": {
"price": "775.650",
"size": 80
},
"time": 1786636351248
},
"quote_statistics": {
"postmarket": {
"midpoint_changes": 0,
"quote_changes": 0,
"size_only_changes": 0,
"spread_tightened": 0,
"spread_unchanged": 0,
"spread_widened": 0
},
"premarket": {
"midpoint_changes": 12540,
"quote_changes": 105322,
"size_only_changes": 92782,
"spread_tightened": 6440,
"spread_unchanged": 92782,
"spread_widened": 6100
},
"regular": {
"midpoint_changes": 145814,
"quote_changes": 1255891,
"size_only_changes": 1110077,
"spread_tightened": 74875,
"spread_unchanged": 1110077,
"spread_widened": 70939
}
},
"quote_values": {
"midpoint": "775.655",
"quote_age_ms": 89,
"size_imbalance": 0.5238095238095238,
"size_weighted_midpoint": 775.657619047619,
"spread": "0.010",
"spread_bps": 0.12892329708428238
}
}
}{
"code": "authentication_required",
"documentation_url": "https://api.unusualwhales.com/docs",
"expected_format": "uuid",
"message": "The API token provided is not in the expected format. Unusual Whales API tokens are UUIDs, such as 123e4567-e89b-12d3-a456-426614174000.",
"reason": "malformed_token",
"request_id": "GNI_YTC1CRnw2LACGBvE",
"retryable": false,
"support_email": "[email protected]",
"token_url": "https://unusualwhales.com/dashboard/api"
}{
"code": "missing_access",
"documentation_url": "https://api.unusualwhales.com/docs",
"message": "The API token provided is valid but is not permitted to access this route.",
"reason": "route_not_permitted",
"request_id": "GNI_YTC1CRnw2LACGBvE",
"retryable": false,
"support_email": "[email protected]",
"token_url": "https://unusualwhales.com/dashboard/api"
}{
"error": {
"code": "stock_quote_not_found",
"message": "Stock quote not found"
}
}{
"msg": "Invalid path input: MSFT12 (valid example: AAPL) - Invalid query input(s): date=2023-02-140 (valid example: date=2024-01-18)",
"path": "/api/darkpool/MSFT12",
"query": "date=2023-02-140",
"url": "localhost:4000/api/darkpool/MSFT12?date=2023-02-140"
}"Something went wrong"{
"error": {
"code": "stock_quote_not_found",
"message": "Stock quote not found"
}
}stock
Stock Quote
Returns the latest trade, national best bid and ask, derived quote values, and quote change statistics for each market session.
For real time streaming of the best bid and ask, subscribe to the quotes:{TICKER} websocket channel, see https://api.unusualwhales.com/docs/websocket/stock-quotes.
GET
/
api
/
stock
/
{ticker}
/
quote
Stock Quote
curl --request GET \
--url https://api.unusualwhales.com/api/stock/{ticker}/quote \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.unusualwhales.com/api/stock/{ticker}/quote"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.unusualwhales.com/api/stock/{ticker}/quote', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.unusualwhales.com/api/stock/{ticker}/quote",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.unusualwhales.com/api/stock/{ticker}/quote"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.unusualwhales.com/api/stock/{ticker}/quote")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.unusualwhales.com/api/stock/{ticker}/quote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"last_trade": {
"price": "775.645",
"time": 1786636349747,
"vol": 13548986
},
"market_time": "regular",
"quote": {
"ask": {
"price": "775.660",
"size": 240
},
"bid": {
"price": "775.650",
"size": 80
},
"time": 1786636351248
},
"quote_statistics": {
"postmarket": {
"midpoint_changes": 0,
"quote_changes": 0,
"size_only_changes": 0,
"spread_tightened": 0,
"spread_unchanged": 0,
"spread_widened": 0
},
"premarket": {
"midpoint_changes": 12540,
"quote_changes": 105322,
"size_only_changes": 92782,
"spread_tightened": 6440,
"spread_unchanged": 92782,
"spread_widened": 6100
},
"regular": {
"midpoint_changes": 145814,
"quote_changes": 1255891,
"size_only_changes": 1110077,
"spread_tightened": 74875,
"spread_unchanged": 1110077,
"spread_widened": 70939
}
},
"quote_values": {
"midpoint": "775.655",
"quote_age_ms": 89,
"size_imbalance": 0.5238095238095238,
"size_weighted_midpoint": 775.657619047619,
"spread": "0.010",
"spread_bps": 0.12892329708428238
}
}
}{
"code": "authentication_required",
"documentation_url": "https://api.unusualwhales.com/docs",
"expected_format": "uuid",
"message": "The API token provided is not in the expected format. Unusual Whales API tokens are UUIDs, such as 123e4567-e89b-12d3-a456-426614174000.",
"reason": "malformed_token",
"request_id": "GNI_YTC1CRnw2LACGBvE",
"retryable": false,
"support_email": "[email protected]",
"token_url": "https://unusualwhales.com/dashboard/api"
}{
"code": "missing_access",
"documentation_url": "https://api.unusualwhales.com/docs",
"message": "The API token provided is valid but is not permitted to access this route.",
"reason": "route_not_permitted",
"request_id": "GNI_YTC1CRnw2LACGBvE",
"retryable": false,
"support_email": "[email protected]",
"token_url": "https://unusualwhales.com/dashboard/api"
}{
"error": {
"code": "stock_quote_not_found",
"message": "Stock quote not found"
}
}{
"msg": "Invalid path input: MSFT12 (valid example: AAPL) - Invalid query input(s): date=2023-02-140 (valid example: date=2024-01-18)",
"path": "/api/darkpool/MSFT12",
"query": "date=2023-02-140",
"url": "localhost:4000/api/darkpool/MSFT12?date=2023-02-140"
}"Something went wrong"{
"error": {
"code": "stock_quote_not_found",
"message": "Stock quote not found"
}
}Last modified on September 29, 2026
Was this page helpful?
