Max Pain
curl --request GET \
--url https://api.unusualwhales.com/api/stock/{ticker}/max-pain \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.unusualwhales.com/api/stock/{ticker}/max-pain"
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}/max-pain', 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}/max-pain",
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}/max-pain"
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}/max-pain")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.unusualwhales.com/api/stock/{ticker}/max-pain")
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": [
{
"expiry": "2024-03-04T00:00:00.000Z",
"max_pain": "473"
},
{
"expiry": "2024-03-05T00:00:00.000Z",
"max_pain": "475"
}
],
"date": "2024-03-04T00:00:00.000Z"
}{
"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": "payment_required",
"documentation_url": "https://api.unusualwhales.com/docs",
"message": "This API token is paused because the payment for your API subscription failed. Update your card at https://unusualwhales.com/settings. The same token works again once a payment succeeds.",
"reason": "payment_failed",
"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 wrongstock
Max Pain
Returns the max pain for all expirations for the given ticker for the last 120 days
For CBOE index tickers such as SPX or VIX the index price is returned as null and the row is marked missing_periscope. If the request filters with min_underlying_price, max_underlying_price, min_stock_price, max_stock_price, min_diff, max_diff, min_implied_move, max_implied_move, min_return_on_capital, max_return_on_capital, min_return_on_capital_perc or max_return_on_capital_perc, rows for these index tickers are left out of the response. CBOE index prices require provisioned access and CBOE approval. Contact [email protected], [email protected] or [email protected] to request access.
GET
/
api
/
stock
/
{ticker}
/
max-pain
Max Pain
curl --request GET \
--url https://api.unusualwhales.com/api/stock/{ticker}/max-pain \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.unusualwhales.com/api/stock/{ticker}/max-pain"
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}/max-pain', 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}/max-pain",
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}/max-pain"
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}/max-pain")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.unusualwhales.com/api/stock/{ticker}/max-pain")
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": [
{
"expiry": "2024-03-04T00:00:00.000Z",
"max_pain": "473"
},
{
"expiry": "2024-03-05T00:00:00.000Z",
"max_pain": "475"
}
],
"date": "2024-03-04T00:00:00.000Z"
}{
"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": "payment_required",
"documentation_url": "https://api.unusualwhales.com/docs",
"message": "This API token is paused because the payment for your API subscription failed. Update your card at https://unusualwhales.com/settings. The same token works again once a payment succeeds.",
"reason": "payment_failed",
"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 wrongAuthorizations
Query Parameters
Was this page helpful?
