Short Volume and Ratio
curl --request GET \
--url https://api.unusualwhales.com/api/shorts/{ticker}/volume-and-ratio \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.unusualwhales.com/api/shorts/{ticker}/volume-and-ratio"
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/shorts/{ticker}/volume-and-ratio', 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/shorts/{ticker}/volume-and-ratio",
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/shorts/{ticker}/volume-and-ratio"
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/shorts/{ticker}/volume-and-ratio")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.unusualwhales.com/api/shorts/{ticker}/volume-and-ratio")
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": [
{
"close_price": "45.75",
"market_date": "2023-04-10T00:00:00.000Z",
"short_volume": 925000,
"short_volume_ratio": "0.14",
"total_volume": 6607143
},
{
"close_price": "46.23",
"market_date": "2023-04-11T00:00:00.000Z",
"short_volume": 1150000,
"short_volume_ratio": "0.15",
"total_volume": 7666667
},
{
"close_price": "45.92",
"market_date": "2023-04-12T00:00:00.000Z",
"short_volume": 875000,
"short_volume_ratio": "0.13",
"total_volume": 6730769
},
{
"close_price": "46.45",
"market_date": "2023-04-13T00:00:00.000Z",
"short_volume": 1050000,
"short_volume_ratio": "0.17",
"total_volume": 6176471
}
]
}{
"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"
}{
"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"short
Short Volume and Ratio
Returns short volume and short ratio data for a ticker.
Rows are returned under the si key, not data.
GET
/
api
/
shorts
/
{ticker}
/
volume-and-ratio
Short Volume and Ratio
curl --request GET \
--url https://api.unusualwhales.com/api/shorts/{ticker}/volume-and-ratio \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.unusualwhales.com/api/shorts/{ticker}/volume-and-ratio"
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/shorts/{ticker}/volume-and-ratio', 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/shorts/{ticker}/volume-and-ratio",
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/shorts/{ticker}/volume-and-ratio"
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/shorts/{ticker}/volume-and-ratio")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.unusualwhales.com/api/shorts/{ticker}/volume-and-ratio")
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": [
{
"close_price": "45.75",
"market_date": "2023-04-10T00:00:00.000Z",
"short_volume": 925000,
"short_volume_ratio": "0.14",
"total_volume": 6607143
},
{
"close_price": "46.23",
"market_date": "2023-04-11T00:00:00.000Z",
"short_volume": 1150000,
"short_volume_ratio": "0.15",
"total_volume": 7666667
},
{
"close_price": "45.92",
"market_date": "2023-04-12T00:00:00.000Z",
"short_volume": 875000,
"short_volume_ratio": "0.13",
"total_volume": 6730769
},
{
"close_price": "46.45",
"market_date": "2023-04-13T00:00:00.000Z",
"short_volume": 1050000,
"short_volume_ratio": "0.17",
"total_volume": 6176471
}
]
}{
"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"
}{
"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"Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
A single ticker
Example:
"AAPL"
Response
Short volume data including short volume and ratio for a specific ticker. This endpoint provides information about the volume of shares that have been sold short and the ratio of short volume to total volume.
Last modified on September 29, 2026
Was this page helpful?
