curl --request GET \
--url https://api.unusualwhales.com/api/market/{ticker}/etf-tide \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.unusualwhales.com/api/market/{ticker}/etf-tide"
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/market/{ticker}/etf-tide', 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/market/{ticker}/etf-tide",
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/market/{ticker}/etf-tide"
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/market/{ticker}/etf-tide")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.unusualwhales.com/api/market/{ticker}/etf-tide")
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": [
{
"date": "2023-09-08T00:00:00.000Z",
"net_call_premium": "660338.0000",
"net_put_premium": "-547564.0000",
"net_volume": 23558,
"timestamp": "2023-09-08T13:30:00.000Z"
},
{
"date": "2023-09-08T00:00:00.000Z",
"net_call_premium": "4907138.0000",
"net_put_premium": "-1709539.0000",
"net_volume": 64312,
"timestamp": "2023-09-08T13:31:00.000Z"
},
{
"date": "2023-09-08T00:00:00.000Z",
"net_call_premium": "4839265.0000",
"net_put_premium": "-2731793.0000",
"net_volume": 80029,
"timestamp": "2023-09-08T13:32: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": "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"ETF Tide
The ETF tide is similar to the Market Tide. While the market tide is based on options activity of the whole market the ETF tide is only based on the options activity of the holdings of the specified ETF.
curl --request GET \
--url https://api.unusualwhales.com/api/market/{ticker}/etf-tide \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.unusualwhales.com/api/market/{ticker}/etf-tide"
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/market/{ticker}/etf-tide', 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/market/{ticker}/etf-tide",
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/market/{ticker}/etf-tide"
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/market/{ticker}/etf-tide")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.unusualwhales.com/api/market/{ticker}/etf-tide")
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": [
{
"date": "2023-09-08T00:00:00.000Z",
"net_call_premium": "660338.0000",
"net_put_premium": "-547564.0000",
"net_volume": 23558,
"timestamp": "2023-09-08T13:30:00.000Z"
},
{
"date": "2023-09-08T00:00:00.000Z",
"net_call_premium": "4907138.0000",
"net_put_premium": "-1709539.0000",
"net_volume": 64312,
"timestamp": "2023-09-08T13:31:00.000Z"
},
{
"date": "2023-09-08T00:00:00.000Z",
"net_call_premium": "4839265.0000",
"net_put_premium": "-2731793.0000",
"net_volume": 80029,
"timestamp": "2023-09-08T13:32: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": "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 comma separated list of tickers. To exclude certain tickers prefix the first ticker with a -.
"AAPL,INTC"
Query Parameters
A trading date in the format of YYYY-MM-DD. This is optional and by default the last trading date.
"2024-01-18T00:00:00.000Z"
Response
Defined as (call premium ask side) - (call premium bid side).
"-29138464"
Defined as (put premium ask side) - (put premium bid side).
"23924325"
Defined as (call volume ask side) - (call volume bid side) - ((put volume ask side) - (put volume bid side)).
64312
The start time of the tick as a timestamp with timezone.
"2023-09-07T13:30:00.000Z"
Was this page helpful?
