Skip to main content
GET
/
v3
/
perps
/
screener
Screener
curl --request GET \
  --url https://api.polynode.dev/v3/perps/screener \
  --header 'x-api-key: <api-key>'
import requests

url = "https://api.polynode.dev/v3/perps/screener"

headers = {"x-api-key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};

fetch('https://api.polynode.dev/v3/perps/screener', 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.polynode.dev/v3/perps/screener",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);

$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.polynode.dev/v3/perps/screener"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("x-api-key", "<api-key>")

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.polynode.dev/v3/perps/screener")
.header("x-api-key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.polynode.dev/v3/perps/screener")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'

response = http.request(request)
puts response.read_body
{
  "data": [
    {
      "basis": "-0.012000",
      "basis_bps": "-1.77",
      "funding_rate": "0.0000125",
      "index_price": "67.638",
      "instrument_id": 10,
      "mark_price": "67.626",
      "open_interest": "485.754",
      "symbol": "HYPE-USD"
    },
    {
      "basis": "-20.000000",
      "basis_bps": "-3.19",
      "funding_rate": "0.0000125",
      "index_price": "62781",
      "instrument_id": 6,
      "mark_price": "62761",
      "open_interest": "66.53743",
      "symbol": "BTC-USD"
    },
    {
      "basis": "0.016000",
      "basis_bps": "2.68",
      "funding_rate": "0.00000625",
      "index_price": "59.602",
      "instrument_id": 5,
      "mark_price": "59.618",
      "open_interest": "8641.76",
      "symbol": "SILVER-USD"
    },
    {
      "basis": "-0.030000",
      "basis_bps": "-4.07",
      "funding_rate": "0.00000625",
      "index_price": "73.648",
      "instrument_id": 3,
      "mark_price": "73.618",
      "open_interest": "3790.472",
      "symbol": "WTIOIL-USD"
    },
    {
      "basis": "-3.000000",
      "basis_bps": "-1.02",
      "funding_rate": "0.00000625",
      "index_price": "29515",
      "instrument_id": 4,
      "mark_price": "29512",
      "open_interest": "153.1141",
      "symbol": "NAS100-USD"
    },
    {
      "basis": "-1.800000",
      "basis_bps": "-2.40",
      "funding_rate": "0.00000625",
      "index_price": "7498.9",
      "instrument_id": 1,
      "mark_price": "7497.1",
      "open_interest": "793.42066",
      "symbol": "SP500-USD"
    },
    {
      "basis": "-0.020000",
      "basis_bps": "-1.32",
      "funding_rate": "0.00000625",
      "index_price": "151.38",
      "instrument_id": 9,
      "mark_price": "151.36",
      "open_interest": "1880.1307",
      "symbol": "SPCX-USD"
    },
    {
      "basis": "-1.300000",
      "basis_bps": "-3.16",
      "funding_rate": "0.00000625",
      "index_price": "4116.4",
      "instrument_id": 2,
      "mark_price": "4115.1",
      "open_interest": "226.72911",
      "symbol": "GOLD-USD"
    },
    {
      "basis": "-0.043000",
      "basis_bps": "-5.52",
      "funding_rate": "-0.00000525",
      "index_price": "77.92",
      "instrument_id": 8,
      "mark_price": "77.877",
      "open_interest": "1389.3",
      "symbol": "SOL-USD"
    },
    {
      "basis": "-1.000000",
      "basis_bps": "-5.73",
      "funding_rate": "-0.00000623",
      "index_price": "1746.7",
      "instrument_id": 7,
      "mark_price": "1745.7",
      "open_interest": "2357.9583",
      "symbol": "ETH-USD"
    }
  ]
}
A cross-instrument screen computed live from current prices. For every instrument it returns the funding rate, open interest, and the basis — the mark price minus the index price, both as an absolute number and in basis points (the perp’s premium or discount to spot). Sort by funding, oi, or basis (widest first), and filter with min_funding to surface only instruments paying above a threshold. Polymarket returns tickers but offers no way to sort or screen across them — this does it in one call, always on current data.

Authorizations

x-api-key
string
header
required

Query Parameters

sort
string

funding | oi | basis

min_funding
number

Only instruments with funding rate >= this

Response

200 - application/json

Success