> For the complete documentation index, see [llms.txt](https://docs.nansen.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nansen.ai/api/token-god-mode/perp-screener.md).

# Perp Screener

### Data Freshness & Historical Coverage

For data freshness and historical coverage, see [Data Coverage by Chain](/api/data-coverage.md); this endpoint follows it except where noted below.

* Covers the Hyperliquid perpetuals dataset (reliable from **May 2025**), not per-chain history — see the Hyperliquid note on the coverage page.

## Get Perpetual Contract Screening Data

> Discover and screen perpetual contracts on Hyperliquid with advanced filtering capabilities. This endpoint helps identify trending perpetual contracts, trading activity, funding rates, and smart money movements by combining metrics like volume, open interest, funding rates, and position data.\
> \
> \*\*What it helps to answer:\*\*\
> \
> 1\. \*\*Which perpetual contracts are experiencing significant trading volume and activity?\*\*\
> 2\. \*\*How do funding rates correlate with trading patterns and smart money positions?\*\*\
> 3\. \*\*What perpetual contracts show strong fundamentals in terms of open interest and trading patterns?\*\*\
> 4\. \*\*Which perpetual contracts are attracting smart money participation with long/short positions?\*\*

```json
{"openapi":"3.1.0","info":{"title":"Nansen API","version":"1.0.0"},"servers":[{"url":"https://api.nansen.ai"}],"security":[{"ApiKeyAuth":[]},{"X402Payment":[]},{"MppPayment":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"apikey","description":"API key for authentication"},"X402Payment":{"type":"apiKey","in":"header","name":"Payment-Signature","description":"x402 pay-per-request; no API key needed. Send the request without credentials to receive a `402 Payment Required` response whose `Payment-Required` header advertises the accepted payment options, then retry with the signed x402 V2 payment payload in the `Payment-Signature` header. Only operations that list this scheme accept it. See https://docs.nansen.ai/getting-started/agentic-payments"},"MppPayment":{"type":"apiKey","in":"header","name":"Authorization","description":"Machine Payments Protocol (MPP) pay-per-request on Tempo; no API key needed. Send `Authorization: Payment` to receive a `402 Payment Required` response whose `WWW-Authenticate: Payment ...` header carries a fresh challenge, then retry with the signed credential as `Authorization: Payment <credential>`. Successful responses include a `Payment-Receipt` header. Only operations that list this scheme accept it. See https://docs.nansen.ai/getting-started/agentic-payments"}},"schemas":{"PerpScreenerRequest":{"properties":{"date":{"$ref":"#/components/schemas/DateRange","description":"Date range for the perp screener"},"pagination":{"$ref":"#/components/schemas/PaginationRequest","description":"Pagination parameters"},"filters":{"anyOf":[{"$ref":"#/components/schemas/PerpScreenerFilters"}],"description":"Additional filters to apply"},"include_price_change":{"type":"boolean","title":"Include Price Change","description":"Return previous_price_usd, window_end_price_usd and price_change for notable-label trader cohorts even when not sorting or filtering by price. These fields are otherwise null unless price_change or previous_price_usd is used for sorting, or previous_price_usd is used for filtering. All and Smart Money results always include these fields.","default":false},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/PerpScreenerSortOrder"},"type":"array"}],"title":"Order By","description":"Custom sort order to override the endpoint's default ordering.\n\nExamples:\n- [{\"field\": \"volume\", \"direction\": \"DESC\"}] - Sort by volume descending\n- [{\"field\": \"net_position_change\", \"direction\": \"DESC\"}] - Sort by net_position_change descending\n- [{\"field\": \"buy_sell_pressure\", \"direction\": \"DESC\"}] - Sort by buy/sell pressure descending\n- [{\"field\": \"price_change\", \"direction\": \"DESC\"}] - Top gainers first\n\nAvailable sort fields depend on trader_type: buy_sell_pressure only applies to\ntrader_type all, net_position_change to the other trader types. price_change\napplies to every trader type. Rows with a null price_change (outcome contracts,\nmissing prices) sort last in both directions, and token_symbol ASC\nis added as a final tie-breaker so pages don't overlap.\n\nDefault behavior:\n- trader_type all (or unset): sorts by buy_sell_pressure DESC\n- all other trader types: sorts by net_position_change DESC"}},"additionalProperties":false,"type":"object","required":["date"],"title":"PerpScreenerRequest","description":"Request model for Perp Screener endpoint."},"DateRange":{"properties":{"from":{"anyOf":[{"type":"string"}],"title":"From","description":"Start date in ISO 8601 format (e.g., 2025-01-01T00:00:00Z or 2025-01-01)"},"to":{"anyOf":[{"type":"string"}],"title":"To","description":"End date in ISO 8601 format (e.g., 2025-01-31T23:59:59Z or 2025-01-31)"}},"type":"object","title":"DateRange","description":"Date range model matching the API schema."},"PaginationRequest":{"properties":{"page":{"type":"integer","minimum":1,"title":"Page","description":"Page number (1-based)","default":1},"per_page":{"type":"integer","maximum":1000,"minimum":1,"title":"Per Page","description":"Number of records per page (max 1000)","default":10}},"type":"object","title":"PaginationRequest","description":"Pagination parameters for API requests."},"PerpScreenerFilters":{"properties":{"trader_type":{"anyOf":[{"$ref":"#/components/schemas/PerpTraderType"}],"description":"Filter by trader type. Overrides only_smart_money when provided. Values: all, sm, whale, public_figure, high_winrate_hl_perps_trader."},"only_smart_money":{"anyOf":[{"type":"boolean"}],"title":"Only Smart Money","description":"Deprecated: Use 'trader_type=sm' instead.","default":false,"deprecated":true},"sectors_filter":{"anyOf":[{"items":{"type":"string"},"type":"array"}],"title":"Sectors Filter","description":"Filter by sector in category:subcategory format (e.g. Crypto:DeFi, Crypto:AI, TradFi:Stocks). Values in any other format are rejected. Note: this differs from the token screener's sectors filter, which uses bare sector names. Applied server-side."},"sm_label_filter":{"anyOf":[{"items":{"type":"string"},"type":"array"}],"title":"Sm Label Filter","description":"Filter by Nansen smart money label. Applies when trader_type is all or sm; ignored for other trader types. Applied server-side."},"trader_label_filter":{"anyOf":[{"items":{"type":"string"},"type":"array"}],"title":"Trader Label Filter","description":"Filter by Hyperliquid perps trader label (e.g. HL Perps Whale, HL Perps Swing Trader). Applies when trader_type is all or sm; ignored for other trader types. Applied server-side."},"token_symbol":{"anyOf":[{"type":"string"}],"title":"Token Symbol","description":"Asset symbol filter (e.g., BTC, ETH)"},"volume":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Total traded notional in USD range filter"},"buy_volume":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Total USD value of market buy trades range filter"},"sell_volume":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Total USD value of market sell trades range filter"},"buy_sell_pressure":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Net USD flow range filter"},"trader_count":{"anyOf":[{"$ref":"#/components/schemas/IntegerRangeFilter"}],"description":"Number of unique traders range filter"},"mark_price":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Latest mark price range filter"},"funding":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Latest funding rate range filter"},"previous_price_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Window-start mark price range filter: the close of the last complete 5-minute bucket ending at or before date.from (UTC). Rows with a null start price match only a filter with no max and a min of 0 or less."},"open_interest":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Latest open interest range filter"},"smart_money_volume":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Total traded notional in USD by Smart Money range filter"},"smart_money_buy_volume":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Total USD value of Smart Money market buy trades range filter"},"smart_money_sell_volume":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Total USD value of Smart Money market sell trades range filter"},"net_position_change":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Net USD flow (buy_market_vol - sell_market_vol) range filter"},"current_smart_money_position_longs_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Aggregate USD value of Smart Money long positions range filter"},"current_smart_money_position_shorts_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Aggregate USD value of Smart Money short positions range filter"},"smart_money_longs_count":{"anyOf":[{"$ref":"#/components/schemas/IntegerRangeFilter"}],"description":"Number of Smart Money accounts with net long position range filter"},"smart_money_shorts_count":{"anyOf":[{"$ref":"#/components/schemas/IntegerRangeFilter"}],"description":"Number of Smart Money accounts with net short position range filter"}},"additionalProperties":false,"type":"object","title":"PerpScreenerFilters","description":"Filters for perp screener endpoints.\n\nThese filters control which perpetual contracts are included in the screening\nresults based on various criteria."},"PerpTraderType":{"type":"string","enum":["all","sm","whale","public_figure","high_winrate_hl_perps_trader"],"title":"PerpTraderType","description":"Trader type for perp screener."},"NumericRangeFilter":{"properties":{"min":{"anyOf":[{"type":"number"}],"title":"Min","description":"Minimum value (inclusive)"},"max":{"anyOf":[{"type":"number"}],"title":"Max","description":"Maximum value (inclusive)"}},"type":"object","title":"NumericRangeFilter","description":"Filter for numeric values (floats) with optional min/max bounds.\nUse for prices, volumes, ratios, and other decimal values. - Values between -10.5 and 100.75"},"IntegerRangeFilter":{"properties":{"min":{"anyOf":[{"type":"integer"}],"title":"Min","description":"Minimum value (inclusive)"},"max":{"anyOf":[{"type":"integer"}],"title":"Max","description":"Maximum value (inclusive)"}},"type":"object","title":"IntegerRangeFilter","description":"Filter for integer values with optional min/max bounds.\nUse for counts, numbers of items, and other whole number values. - Values between 5 and 100"},"PerpScreenerSortOrder":{"properties":{"field":{"anyOf":[{"$ref":"#/components/schemas/PerpScreenerSortFieldDefault"},{"$ref":"#/components/schemas/PerpScreenerSortFieldSmartMoney"},{"$ref":"#/components/schemas/PerpScreenerSortFieldNotableLabel"}],"title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction (ASC or DESC)"}},"type":"object","required":["field","direction"],"title":"PerpScreenerSortOrder"},"PerpScreenerSortFieldDefault":{"type":"string","enum":["token_symbol","volume","buy_volume","sell_volume","buy_sell_pressure","trader_count","mark_price","funding","previous_price_usd","price_change","open_interest"],"title":"PerpScreenerSortFieldDefault","description":"Sort fields available for default perp screener data (only_smart_money=False)."},"PerpScreenerSortFieldSmartMoney":{"type":"string","enum":["token_symbol","smart_money_volume","smart_money_buy_volume","smart_money_sell_volume","net_position_change","trader_count","mark_price","funding","previous_price_usd","price_change","open_interest","current_smart_money_position_longs_usd","current_smart_money_position_shorts_usd","smart_money_longs_count","smart_money_shorts_count"],"title":"PerpScreenerSortFieldSmartMoney","description":"Sort fields available for smart money perp screener data (only_smart_money=True)."},"PerpScreenerSortFieldNotableLabel":{"type":"string","enum":["token_symbol","volume","buy_volume","sell_volume","net_position_change","trader_count","mark_price","funding","previous_price_usd","price_change","open_interest","current_position_longs_usd","current_position_shorts_usd","longs_count","shorts_count"],"title":"PerpScreenerSortFieldNotableLabel","description":"Sort fields available for notable-label perp screener data (trader_type whale/public_figure/high_winrate_hl_perps_trader)."},"SortDirection":{"type":"string","enum":["ASC","DESC"],"title":"SortDirection","description":"Enum for sort directions."},"PerpScreenerResponse":{"properties":{"data":{"items":{"anyOf":[{"$ref":"#/components/schemas/PerpScreenerDataDefault"},{"$ref":"#/components/schemas/PerpScreenerDataSmartMoney"},{"$ref":"#/components/schemas/PerpScreenerDataNotableLabel"}]},"type":"array","title":"Data","description":"List of perp screening results"},"pagination":{"$ref":"#/components/schemas/PaginationInfo","description":"Pagination information"}},"type":"object","required":["data","pagination"],"title":"PerpScreenerResponse","description":"Response model for perp screener endpoint."},"PerpScreenerDataDefault":{"properties":{"volume":{"anyOf":[{"type":"number"}],"title":"Volume","description":"Total traded notional in USD over the recent window."},"buy_volume":{"anyOf":[{"type":"number"}],"title":"Buy Volume","description":"Total USD value of market buy trades over the recent window."},"sell_volume":{"anyOf":[{"type":"number"}],"title":"Sell Volume","description":"Total USD value of market sell trades over the recent window."},"buy_sell_pressure":{"anyOf":[{"type":"number"}],"title":"Buy Sell Pressure","description":"Changes in position by Market Orders. Buys and sells through market orders (top of orderbook) indicate a rush into adjusting the position."},"trader_count":{"anyOf":[{"type":"integer"}],"title":"Trader Count","description":"Number of unique traders active over the recent window."},"token_symbol":{"type":"string","title":"Token Symbol","description":"Asset symbol (e.g., BTC, ETH) on Hyperliquid."},"mark_price":{"anyOf":[{"type":"number"}],"title":"Mark Price","description":"Latest mark price for the coin."},"funding":{"anyOf":[{"type":"number"}],"title":"Funding","description":"Latest funding rate/value for the coin."},"open_interest":{"anyOf":[{"type":"number"}],"title":"Open Interest","description":"Latest open interest for the coin."},"previous_price_usd":{"anyOf":[{"type":"number"}],"title":"Previous Price Usd","description":"Window-start mark price: the close of the last complete 5-minute bucket ending at or before date.from (UTC). A 09:00 or 09:02 start uses the 08:55 to 09:00 bucket. Null when that bucket is missing or its price is not positive; no later or earlier price substitutes. HIP-3 markets (symbols like xyz:NAME) have no mark history before 2026-03-12, so their closes before then are the last trade in the bucket."},"window_end_price_usd":{"anyOf":[{"type":"number"}],"title":"Window End Price Usd","description":"Window-end mark price: the close of the last complete 5-minute bucket ending at or before date.to, capped at now (UTC). For a window ending now this is the latest complete bucket, not the live mark_price. Null when that bucket is missing or its price is not positive. HIP-3 markets (symbols like xyz:NAME) have no mark history before 2026-03-12, so their closes before then are the last trade in the bucket."},"price_change":{"anyOf":[{"type":"number"}],"title":"Price Change","description":"Signed ratio change over the date window, window_end_price_usd / previous_price_usd - 1 (0.05 = +5%, -0.2 = -20%). Both prices are 5-minute Hyperliquid closes at the window boundaries and do not depend on which traders were active, so a coin and window have the same value in every trader_type. A historical window uses its own end price, not the latest mark. Null for outcome contracts (symbols starting with '#') and when either boundary price is missing, zero, or negative."}},"type":"object","required":["token_symbol"],"title":"PerpScreenerDataDefault","description":"Data model for perp screener results when only_smart_money is False."},"PerpScreenerDataSmartMoney":{"properties":{"smart_money_volume":{"anyOf":[{"type":"number"}],"title":"Smart Money Volume","description":"Total traded notional in USD by Smart Money over the window."},"smart_money_buy_volume":{"anyOf":[{"type":"number"}],"title":"Smart Money Buy Volume","description":"Total USD value of Smart Money market buy trades over the window."},"smart_money_sell_volume":{"anyOf":[{"type":"number"}],"title":"Smart Money Sell Volume","description":"Total USD value of Smart Money market sell trades over the window."},"net_position_change":{"anyOf":[{"type":"number"}],"title":"Net Position Change","description":"Net USD flow (buy_market_vol - sell_market_vol) over the window."},"trader_count":{"anyOf":[{"type":"integer"}],"title":"Trader Count","description":"Number of unique Smart Money traders active over the window."},"token_symbol":{"type":"string","title":"Token Symbol","description":"Asset symbol (e.g., BTC, ETH) on Hyperliquid."},"mark_price":{"anyOf":[{"type":"number"}],"title":"Mark Price","description":"Latest mark price for the coin."},"funding":{"anyOf":[{"type":"number"}],"title":"Funding","description":"Latest funding rate/value for the coin."},"previous_price_usd":{"anyOf":[{"type":"number"}],"title":"Previous Price Usd","description":"Window-start mark price: the close of the last complete 5-minute bucket ending at or before date.from (UTC). A 09:00 or 09:02 start uses the 08:55 to 09:00 bucket. Null when that bucket is missing or its price is not positive; no later or earlier price substitutes. HIP-3 markets (symbols like xyz:NAME) have no mark history before 2026-03-12, so their closes before then are the last trade in the bucket."},"window_end_price_usd":{"anyOf":[{"type":"number"}],"title":"Window End Price Usd","description":"Window-end mark price: the close of the last complete 5-minute bucket ending at or before date.to, capped at now (UTC). For a window ending now this is the latest complete bucket, not the live mark_price. Null when that bucket is missing or its price is not positive. HIP-3 markets (symbols like xyz:NAME) have no mark history before 2026-03-12, so their closes before then are the last trade in the bucket."},"price_change":{"anyOf":[{"type":"number"}],"title":"Price Change","description":"Signed ratio change over the date window, window_end_price_usd / previous_price_usd - 1 (0.05 = +5%, -0.2 = -20%). Both prices are 5-minute Hyperliquid closes at the window boundaries and do not depend on which traders were active, so a coin and window have the same value in every trader_type. A historical window uses its own end price, not the latest mark. Null for outcome contracts (symbols starting with '#') and when either boundary price is missing, zero, or negative."},"open_interest":{"anyOf":[{"type":"number"}],"title":"Open Interest","description":"Latest open interest in USD (open_interest × mark_price)."},"current_smart_money_position_longs_usd":{"anyOf":[{"type":"number"}],"title":"Current Smart Money Position Longs Usd","description":"Aggregate USD value of Smart Money long positions for the coin."},"current_smart_money_position_shorts_usd":{"anyOf":[{"type":"number"}],"title":"Current Smart Money Position Shorts Usd","description":"Aggregate USD value of Smart Money short positions for the coin (negative)."},"smart_money_longs_count":{"anyOf":[{"type":"integer"}],"title":"Smart Money Longs Count","description":"Number of Smart Money accounts with a net long position."},"smart_money_shorts_count":{"anyOf":[{"type":"integer"}],"title":"Smart Money Shorts Count","description":"Number of Smart Money accounts with a net short position."}},"type":"object","required":["token_symbol"],"title":"PerpScreenerDataSmartMoney","description":"Data model for perp screener results when only_smart_money is True."},"PerpScreenerDataNotableLabel":{"properties":{"volume":{"anyOf":[{"type":"number"}],"title":"Volume","description":"Total traded notional in USD by the selected trader cohort over the window."},"buy_volume":{"anyOf":[{"type":"number"}],"title":"Buy Volume","description":"Total USD value of buys by the selected trader cohort over the window."},"sell_volume":{"anyOf":[{"type":"number"}],"title":"Sell Volume","description":"Total USD value of sells by the selected trader cohort over the window."},"net_position_change":{"anyOf":[{"type":"number"}],"title":"Net Position Change","description":"Net USD flow (buys minus sells) by the selected trader cohort over the window."},"trader_count":{"anyOf":[{"type":"integer"}],"title":"Trader Count","description":"Number of unique cohort traders active over the window."},"token_symbol":{"type":"string","title":"Token Symbol","description":"Asset symbol (e.g., BTC, ETH) on Hyperliquid."},"mark_price":{"anyOf":[{"type":"number"}],"title":"Mark Price","description":"Latest mark price for the coin."},"funding":{"anyOf":[{"type":"number"}],"title":"Funding","description":"Latest funding rate/value for the coin."},"previous_price_usd":{"anyOf":[{"type":"number"}],"title":"Previous Price Usd","description":"Window-start mark price: the close of the last complete 5-minute bucket ending at or before date.from (UTC). A 09:00 or 09:02 start uses the 08:55 to 09:00 bucket. Null when that bucket is missing or its price is not positive; no later or earlier price substitutes. HIP-3 markets (symbols like xyz:NAME) have no mark history before 2026-03-12, so their closes before then are the last trade in the bucket. Null unless price fields are requested with include_price_change, sorting or filtering."},"window_end_price_usd":{"anyOf":[{"type":"number"}],"title":"Window End Price Usd","description":"Window-end mark price: the close of the last complete 5-minute bucket ending at or before date.to, capped at now (UTC). For a window ending now this is the latest complete bucket, not the live mark_price. Null when that bucket is missing or its price is not positive. HIP-3 markets (symbols like xyz:NAME) have no mark history before 2026-03-12, so their closes before then are the last trade in the bucket. Null unless price fields are requested with include_price_change, sorting or filtering."},"price_change":{"anyOf":[{"type":"number"}],"title":"Price Change","description":"Signed ratio change over the date window, window_end_price_usd / previous_price_usd - 1 (0.05 = +5%, -0.2 = -20%). Both prices are 5-minute Hyperliquid closes at the window boundaries and do not depend on which traders were active, so a coin and window have the same value in every trader_type. A historical window uses its own end price, not the latest mark. Null for outcome contracts (symbols starting with '#') and when either boundary price is missing, zero, or negative. Null unless price fields are requested with include_price_change, sorting or filtering."},"open_interest":{"anyOf":[{"type":"number"}],"title":"Open Interest","description":"Latest open interest for the coin."},"current_position_longs_usd":{"anyOf":[{"type":"number"}],"title":"Current Position Longs Usd","description":"Aggregate USD value of cohort long positions for the coin."},"current_position_shorts_usd":{"anyOf":[{"type":"number"}],"title":"Current Position Shorts Usd","description":"Aggregate USD value of cohort short positions for the coin (negative)."},"longs_count":{"anyOf":[{"type":"integer"}],"title":"Longs Count","description":"Number of cohort accounts with a net long position."},"shorts_count":{"anyOf":[{"type":"integer"}],"title":"Shorts Count","description":"Number of cohort accounts with a net short position."}},"type":"object","required":["token_symbol"],"title":"PerpScreenerDataNotableLabel","description":"Data model for perp screener when trader_type is whale, public_figure or high_winrate_hl_perps_trader."},"PaginationInfo":{"properties":{"page":{"type":"integer","minimum":1,"title":"Page","description":"Current page number","default":1},"per_page":{"type":"integer","maximum":1000,"minimum":1,"title":"Per Page","description":"Number of records per page","default":10},"is_last_page":{"type":"boolean","title":"Is Last Page","description":"Whether this is the last page","default":true}},"type":"object","title":"PaginationInfo","description":"Pagination information for API responses."},"ErrorEnvelope":{"type":"object","required":["error","message","code","status","request_id","doc_url"],"properties":{"error":{"type":"string","description":"Human-readable error category."},"message":{"type":"string","description":"Human-readable explanation of the error."},"code":{"type":"string","enum":["missing_field","unknown_field","invalid_field_value","invalid_address_format","invalid_date_format","invalid_date_range","mutually_exclusive_fields","value_out_of_range","too_many_items","unauthenticated","forbidden","insufficient_scope","api_key_credit_limit_reached","geo_blocked","plan_upgrade_required","insufficient_credits","rate_limit_exceeded","not_found","account_profile_unavailable","method_not_allowed","conflict","payload_too_large","query_timeout","query_too_large","upstream_unavailable","internal_error"],"description":"Stable machine-readable error code."},"status":{"type":"integer","description":"HTTP status code returned for the request."},"request_id":{"type":["string","null"],"description":"Identifier for the request, when available."},"doc_url":{"type":"string","format":"uri","description":"Link to the error-code reference documentation, anchored to this error's code."},"param":{"type":"string","description":"Request parameter associated with the error."},"retry_after":{"type":"integer","minimum":0,"description":"Seconds to wait before retrying the request."}}}},"headers":{"XNansenCreditsCost":{"description":"Quoted credit cost of this request. It is present on successful responses and errors reached after pricing, but absent when a request is rejected before pricing. A value of 0 means plan credits do not apply.","schema":{"type":"string"}},"XNansenCreditsUsed":{"description":"Credits actually deducted for this request. Only successful (2xx) responses are charged, so this is 0 on every non-2xx response that carries X-Nansen-Credits-Cost, including 422 validation errors. Can also be 0 on a successful response that is free, such as an empty labels result.","schema":{"type":"string"}},"XRequestId":{"description":"Unique identifier for this request, returned on every response. Uses the upstream-assigned request id when available; otherwise echoes a caller-supplied X-Request-Id or generates an id. Include this value in support requests.","schema":{"type":"string"}},"XNansenCreditsRemaining":{"description":"Total credits remaining in the user's account after this request. Sent when an account balance is available, including credit-checked successful responses and the insufficient-credits 403.","schema":{"type":"string"}},"PaymentReceipt":{"description":"Base64url-encoded MPP receipt returned on successful paid requests via Authorization: Payment","schema":{"type":"string"}},"RateLimitLimit":{"description":"Combined rate limit across all configured time windows","schema":{"type":"string"}},"RateLimitRemaining":{"description":"Number of requests remaining in the current limiting window","schema":{"type":"string"}},"RateLimitReset":{"description":"Seconds until the rate limit window resets. A delta in seconds, not a Unix timestamp.","schema":{"type":"string"}},"XRateLimitLimit":{"description":"Request limit for the most constrained app-enforced window","schema":{"type":"string"}},"XRateLimitRemaining":{"description":"Requests remaining in the most constrained app-enforced window","schema":{"type":"string"}},"XRateLimitReset":{"description":"Seconds until the most constrained app-enforced window resets. A delta in seconds, not a Unix timestamp: it is at least 1 and never exceeds the window span.","schema":{"type":"string"}},"XRateLimitLimitSecond":{"description":"Maximum requests allowed per second","schema":{"type":"string"}},"XRateLimitRemainingSecond":{"description":"Requests remaining in the current second","schema":{"type":"string"}},"XRateLimitLimitMinute":{"description":"Maximum requests allowed per minute","schema":{"type":"string"}},"XRateLimitRemainingMinute":{"description":"Requests remaining in the current minute","schema":{"type":"string"}},"PaymentRequired":{"description":"Base64-encoded x402 payment options returned on 402 responses for x402 clients","schema":{"type":"string"}},"WWWAuthenticatePayment":{"description":"MPP payment challenge returned on 402 responses, for example `Payment id=\"...\", realm=\"api.nansen.ai\", method=\"tempo\", intent=\"charge\", request=\"...\"`","schema":{"type":"string"}},"RetryAfter":{"description":"Number of seconds to wait before making a new request","schema":{"type":"string"}},"XNansenRateLimitScope":{"description":"Window that caused an enforced rate-limit rejection: `second` or `minute` for global plan windows, or `endpoint` for an endpoint-specific window. This is an open set; clients should handle unknown future values with generic rate-limit behavior.","schema":{"type":"string"}}},"responses":{"BadRequestError":{"description":"Bad Request - Invalid request parameters or malformed request","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","properties":{"detail":{"type":"string"}}}]}}}},"UnauthorizedError":{"description":"Authentication error - No API key found in request","headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","properties":{"detail":{"type":"string"}}}]}}}},"PaymentRequiredError":{"description":"Payment Required - This endpoint supports pay-per-request via x402 and MPP. x402 responses advertise payment options in `Payment-Required`; MPP responses advertise a fresh `WWW-Authenticate: Payment ...` challenge. Successful MPP responses may include `Payment-Receipt`.","headers":{"Payment-Required":{"$ref":"#/components/headers/PaymentRequired"},"WWW-Authenticate":{"$ref":"#/components/headers/WWWAuthenticatePayment"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"type":"object","description":"Problem-details body for x402 or MPP payment challenges."}}}},"ForbiddenError":{"description":"Forbidden - User does not have required subscription tier or has exceeded credit limit","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Nansen-Credits-Remaining":{"$ref":"#/components/headers/XNansenCreditsRemaining"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","properties":{"detail":{"type":"string"}}}]}}}},"NotFoundError":{"description":"Not Found - The requested resource was not found","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"ValidationError":{"description":"Validation error - Invalid request parameters","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","properties":{"errors":{"type":"array","description":"Per-field request-validation errors, in the order they were detected. This field is absent from other 422 responses. The top-level error, message, and code reflect the primary error, which is not always the first entry. When a request produces an unusually large number of errors the list is truncated and a final entry reports how many were omitted.","items":{"type":"object","required":["field","message","code"],"properties":{"field":{"type":"string","description":"Path of the request field that failed validation, prefixed with its location in the request (body, query, path, header, or cookie) and including array indices. Unlike param, this path keeps the location prefix and array indices."},"message":{"type":"string","description":"Human-readable explanation of the field error."},"code":{"type":"string","enum":["missing_field","unknown_field","invalid_field_value","invalid_address_format","invalid_date_format","invalid_date_range","mutually_exclusive_fields","value_out_of_range","too_many_items"],"description":"Stable machine-readable error code."}}}}}}]}}}},"TooManyRequestsError":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","properties":{"detail":{"type":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying"}}}]}}},"headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Nansen-RateLimit-Scope":{"$ref":"#/components/headers/XNansenRateLimitScope"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}}},"InternalServerError":{"description":"Internal Server Error - An unexpected error occurred","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"BadGatewayError":{"description":"Bad Gateway - Upstream service unavailable","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","required":["retry_after"],"properties":{"retry_after":{"type":"integer","description":"Seconds to wait before retrying"}}}]}}}},"ServiceUnavailableError":{"description":"Service Unavailable - Service temporarily unavailable","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","required":["retry_after"],"properties":{"retry_after":{"type":"integer","description":"Seconds to wait before retrying"}}}]}}}},"GatewayTimeoutError":{"description":"Gateway Timeout - Upstream service timed out","headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorEnvelope"},{"type":"object","required":["retry_after"],"properties":{"retry_after":{"type":"integer","description":"Seconds to wait before retrying"}}}]}}}}}},"paths":{"/api/v1/perp-screener":{"post":{"tags":["Token Screener"],"summary":"Get Perpetual Contract Screening Data","description":"Discover and screen perpetual contracts on Hyperliquid with advanced filtering capabilities. This endpoint helps identify trending perpetual contracts, trading activity, funding rates, and smart money movements by combining metrics like volume, open interest, funding rates, and position data.\n\n**What it helps to answer:**\n\n1. **Which perpetual contracts are experiencing significant trading volume and activity?**\n2. **How do funding rates correlate with trading patterns and smart money positions?**\n3. **What perpetual contracts show strong fundamentals in terms of open interest and trading patterns?**\n4. **Which perpetual contracts are attracting smart money participation with long/short positions?**","operationId":"get_perp_screener_api_v1_perp_screener_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerpScreenerRequest"}}},"required":true},"responses":{"200":{"description":"Perpetual contract screening data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerpScreenerResponse"}}},"headers":{"X-Nansen-Credits-Cost":{"$ref":"#/components/headers/XNansenCreditsCost"},"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"X-Nansen-Credits-Remaining":{"$ref":"#/components/headers/XNansenCreditsRemaining"},"Payment-Receipt":{"$ref":"#/components/headers/PaymentReceipt"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-RateLimit-Limit-Second":{"$ref":"#/components/headers/XRateLimitLimitSecond"},"X-RateLimit-Remaining-Second":{"$ref":"#/components/headers/XRateLimitRemainingSecond"},"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/XRateLimitLimitMinute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/XRateLimitRemainingMinute"}}},"400":{"description":"Bad Request","$ref":"#/components/responses/BadRequestError"},"401":{"description":"Unauthorized","$ref":"#/components/responses/UnauthorizedError"},"402":{"description":"Payment Required","$ref":"#/components/responses/PaymentRequiredError"},"403":{"description":"Forbidden","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Not Found","$ref":"#/components/responses/NotFoundError"},"422":{"description":"Unprocessable Content","$ref":"#/components/responses/ValidationError"},"429":{"description":"Too Many Requests","$ref":"#/components/responses/TooManyRequestsError"},"500":{"description":"Internal Server Error","$ref":"#/components/responses/InternalServerError"},"502":{"description":"Bad Gateway","$ref":"#/components/responses/BadGatewayError"},"503":{"description":"Service Unavailable","$ref":"#/components/responses/ServiceUnavailableError"},"504":{"description":"Gateway Timeout","$ref":"#/components/responses/GatewayTimeoutError"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.nansen.ai/api/token-god-mode/perp-screener.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
