> 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/backtesting-data/historical-token-screener.md).

# Historical Token Screener

## Get Historical Token Screener (Beta)

> \*\*Beta — subject to breaking changes.\*\*\
> \
> Historical token screener data anchored to \`to\_date\` over a \`timeframe\_days\` window.\
> \
> Output columns match the production token screener API response shape exactly.\
> \
> When \`trader\_type='sm'\` (or the deprecated \`only\_smart\_money=True\`),\
> volume/netflow/nof\_traders fields reflect smart-money flows only;\
> \`sm\_label\_filter\` / \`exclude\_sm\_labels\_filter\` narrow that cohort by\
> sub-label. When \`trader\_type\` is \`whale\` or \`public\_figure\`, those\
> fields reflect the corresponding notable-label cohort instead;\
> smart-money sub-label filters are not applicable in those modes.\
> \`trader\_type\` overrides \`only\_smart\_money\` when both are set.\
> \
> Use \`exclude\_sectors\` to drop tokens whose sector tags include any of the\
> listed sectors (e.g. \`\["Stablecoin"]\`).

```json
{"openapi":"3.1.0","info":{"title":"Nansen API","version":"1.0.0"},"servers":[{"url":"https://api.nansen.ai"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"apiKey","description":"API key for authentication"}},"schemas":{"TokenScreenerHistoricalRequest":{"properties":{"to_date":{"type":"string","format":"date","title":"To Date","description":"End date of the screener window"},"timeframe_days":{"type":"integer","maximum":365,"minimum":1,"title":"Timeframe Days","description":"Number of days in the screener window"},"chains":{"items":{"$ref":"#/components/schemas/TokenScreenerChain"},"type":"array","minItems":1,"title":"Chains","description":"Chains to include (required, must be non-empty)"},"sectors_filter":{"items":{"type":"string"},"type":"array","title":"Sectors Filter","description":"Sector filter. Empty list includes all sectors."},"exclude_sectors":{"items":{"type":"string"},"type":"array","title":"Exclude Sectors","description":"Sectors to exclude. Empty list excludes nothing."},"only_smart_money":{"type":"boolean","title":"Only Smart Money","description":"Deprecated: use trader_type instead. When True, aggregate smart money flows only. Volume/netflow/nof_traders fields reflect SM flows. Ignored when trader_type is provided.","default":false,"deprecated":true},"trader_type":{"anyOf":[{"$ref":"#/components/schemas/TraderType"}],"description":"Filter by trader type. Overrides only_smart_money when provided. Supported values: `all`, `sm`, `whale`, `public_figure`."},"filters":{"anyOf":[{"$ref":"#/components/schemas/TokenScreenerHistoricalFilters"}],"description":"Optional filters applied server-side"},"pagination":{"$ref":"#/components/schemas/PaginationRequest","description":"Pagination parameters"},"order_by":{"items":{"$ref":"#/components/schemas/SortOrder_TokenScreenerHistoricalSortField_"},"type":"array","title":"Order By","description":"Sort order. Defaults to netflow DESC. Only the first element is used."},"apply_blacklist_filter":{"type":"boolean","title":"Apply Blacklist Filter","description":"When True, exclude blacklisted addresses from the results. Defaults to True.","default":true}},"additionalProperties":false,"type":"object","required":["to_date","timeframe_days","chains"],"title":"TokenScreenerHistoricalRequest","description":"Request model for the historical token screener endpoint.\n\nReturns token screener data anchored to to_date over a timeframe_days window.\nOutput columns match the production token screener API response shape exactly.\n\ntrader_type selects the wallet cohort whose flows drive the\nvolume/netflow/nof_traders fields:\n  - 'all' (default): all wallets.\n  - 'sm': smart-money cohort. sm_label_filter / exclude_sm_labels_filter\n    narrow the cohort by smart-money sub-label.\n  - 'whale' / 'public_figure': notable-label cohort. Label-filter fields\n    are not applicable in these modes and will be rejected."},"TokenScreenerChain":{"type":"string","enum":["arbitrum","avalanche","base","bitcoin","bnb","citrea","ethereum","hyperevm","injective","iotaevm","linea","mantle","mantra","monad","near","optimism","plasma","polygon","ronin","scroll","sei","solana","sonic","starknet","sui","ton","tron"],"title":"TokenScreenerChain","description":"Chains supported for Token Screener endpoint."},"TraderType":{"type":"string","enum":["all","sm","whale","public_figure","trending","consistent_perps_winner","high_winrate_hl_perps_trader"],"title":"TraderType","description":"Trader type filter for token screener."},"TokenScreenerHistoricalFilters":{"properties":{"sm_label_filter":{"items":{"$ref":"#/components/schemas/HistoricalSmartMoneyFilterType"},"type":"array","title":"Sm Label Filter","description":"Include smart-money labels (only applied when trader_type='sm'). Empty list includes all smart-money labels.","default":[]},"exclude_sm_labels_filter":{"items":{"$ref":"#/components/schemas/HistoricalSmartMoneyFilterType"},"type":"array","title":"Exclude Sm Labels Filter","description":"Exclude smart-money labels (only applied when trader_type='sm'). Empty list excludes nothing.","default":[]},"volume_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Total volume range filter in USD"},"buy_volume_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Buy volume range filter in USD"},"sell_volume_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Sell volume range filter in USD"},"market_cap_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Market cap range filter in USD"},"nof_traders":{"anyOf":[{"$ref":"#/components/schemas/IntegerRangeFilter"}],"description":"Number of traders range filter"},"nof_buyers":{"anyOf":[{"$ref":"#/components/schemas/IntegerRangeFilter"}],"description":"Number of buyers range filter"},"nof_sellers":{"anyOf":[{"$ref":"#/components/schemas/IntegerRangeFilter"}],"description":"Number of sellers range filter"},"nof_buys":{"anyOf":[{"$ref":"#/components/schemas/IntegerRangeFilter"}],"description":"Number of buy transactions range filter"},"nof_sells":{"anyOf":[{"$ref":"#/components/schemas/IntegerRangeFilter"}],"description":"Number of sell transactions range filter"},"fdv_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"FDV range filter in USD"},"fdv_mc_ratio":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"FDV/MC ratio range filter"},"liquidity_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"On-chain liquidity range filter in USD"},"netflow_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Netflow range filter in USD (can be negative)"},"inflow_fdv_ratio":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Inflow/FDV ratio range filter"},"outflow_fdv_ratio":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Outflow/FDV ratio range filter"},"token_age_days":{"anyOf":[{"$ref":"#/components/schemas/IntegerRangeFilter"}],"description":"Token age range filter in days"}},"additionalProperties":false,"type":"object","title":"TokenScreenerHistoricalFilters","description":"Filters for the historical token screener endpoint.\n\nWhen trader_type='sm' (or only_smart_money=True), sm_label_filter\nrestricts results to specific smart-money labels and\nexclude_sm_labels_filter removes them. Both lists are ignored in\nother trader_type modes."},"HistoricalSmartMoneyFilterType":{"type":"string","enum":["Fund","Smart Trader","30D Smart Trader","90D Smart Trader","180D Smart Trader","Smart Dex Trader","30D Smart Dex Trader","90D Smart Dex Trader","180D Smart Dex Trader","Smart HL Perps Trader"],"title":"HistoricalSmartMoneyFilterType","description":"Filter by smart money label type. Includes legacy label classes (e.g. Smart Dex Trader) that appear in historical data."},"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"},"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."},"SortOrder_TokenScreenerHistoricalSortField_":{"properties":{"field":{"$ref":"#/components/schemas/TokenScreenerHistoricalSortField","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction (ASC or DESC)"}},"type":"object","required":["field","direction"],"title":"SortOrder[TokenScreenerHistoricalSortField]"},"TokenScreenerHistoricalSortField":{"type":"string","enum":["volume","buy_volume","sell_volume","netflow","price_change","market_cap_usd","fdv","liquidity","price_usd","nof_traders","nof_buyers","nof_sellers","nof_buys","nof_sells","token_age_days"],"title":"TokenScreenerHistoricalSortField","description":"Sortable fields for the historical token screener endpoint."},"SortDirection":{"type":"string","enum":["ASC","DESC"],"title":"SortDirection","description":"Enum for sort directions."},"TokenScreenerHistoricalResponse":{"properties":{"pagination":{"$ref":"#/components/schemas/PaginationInfo","description":"Pagination information"},"data":{"items":{"$ref":"#/components/schemas/TokenScreenerHistoricalItem"},"type":"array","title":"Data","description":"List of token screener records"}},"type":"object","required":["pagination","data"],"title":"TokenScreenerHistoricalResponse","description":"Response model for the historical token screener endpoint."},"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."},"TokenScreenerHistoricalItem":{"properties":{"token_address":{"type":"string","title":"Token Address","description":"Token contract address"},"token_symbol":{"type":"string","title":"Token Symbol","description":"Token symbol"},"chain":{"type":"string","title":"Chain","description":"Blockchain chain"},"price_usd":{"anyOf":[{"type":"number"}],"title":"Price Usd","description":"Token price in USD at to_date"},"price_change":{"anyOf":[{"type":"number"}],"title":"Price Change","description":"Price change over the timeframe as a ratio"},"market_cap_usd":{"anyOf":[{"type":"number"}],"title":"Market Cap Usd","description":"Market cap in USD (falls back to FDV if zero)"},"fdv":{"anyOf":[{"type":"number"}],"title":"Fdv","description":"Fully diluted valuation in USD"},"fdv_mc_ratio":{"anyOf":[{"type":"number"}],"title":"Fdv Mc Ratio","description":"FDV / market cap ratio"},"volume":{"anyOf":[{"type":"number"}],"title":"Volume","description":"Total DEX volume (buy + sell) in USD over the timeframe"},"buy_volume":{"anyOf":[{"type":"number"}],"title":"Buy Volume","description":"Buy volume in USD over the timeframe"},"sell_volume":{"anyOf":[{"type":"number"}],"title":"Sell Volume","description":"Sell volume in USD over the timeframe"},"netflow":{"anyOf":[{"type":"number"}],"title":"Netflow","description":"Net flow (buy - sell) in USD over the timeframe"},"inflow_fdv_ratio":{"anyOf":[{"type":"number"}],"title":"Inflow Fdv Ratio","description":"Buy volume / FDV ratio"},"outflow_fdv_ratio":{"anyOf":[{"type":"number"}],"title":"Outflow Fdv Ratio","description":"Sell volume / FDV ratio"},"token_age_days":{"anyOf":[{"type":"integer"}],"title":"Token Age Days","description":"Days since token deployment as of to_date"},"liquidity":{"anyOf":[{"type":"number"}],"title":"Liquidity","description":"Total on-chain liquidity in USD at to_date"},"sectors":{"items":{"type":"string"},"type":"array","title":"Sectors","description":"Token sector classifications"}},"type":"object","required":["token_address","token_symbol","chain"],"title":"TokenScreenerHistoricalItem","description":"Single token screener record for a historical date window."}},"headers":{"XNansenCreditsUsed":{"description":"Number of credits consumed by this API request","schema":{"type":"string"}},"XNansenCreditsRemaining":{"description":"Total credits remaining in the user's account after this request","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":"Time in seconds until the rate limit window resets","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"}}},"responses":{"BadRequestError":{"description":"Bad Request - Invalid request parameters or malformed request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"UnauthorizedError":{"description":"Authentication error - No API key found in request","content":{"application/json":{"schema":{"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"}},"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","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"NotFoundError":{"description":"Not Found - The requested resource was not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"ValidationError":{"description":"Validation error - Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"type":"string"}},"msg":{"type":"string"},"type":{"type":"string"}}}}}}}}},"TooManyRequestsError":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying"}}}}},"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"InternalServerError":{"description":"Internal Server Error - An unexpected error occurred","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}}}},"paths":{"/api/v1beta1/token-screener/historical":{"post":{"tags":["Token Screener"],"summary":"Get Historical Token Screener (Beta)","description":"**Beta — subject to breaking changes.**\n\nHistorical token screener data anchored to `to_date` over a `timeframe_days` window.\n\nOutput columns match the production token screener API response shape exactly.\n\nWhen `trader_type='sm'` (or the deprecated `only_smart_money=True`),\nvolume/netflow/nof_traders fields reflect smart-money flows only;\n`sm_label_filter` / `exclude_sm_labels_filter` narrow that cohort by\nsub-label. When `trader_type` is `whale` or `public_figure`, those\nfields reflect the corresponding notable-label cohort instead;\nsmart-money sub-label filters are not applicable in those modes.\n`trader_type` overrides `only_smart_money` when both are set.\n\nUse `exclude_sectors` to drop tokens whose sector tags include any of the\nlisted sectors (e.g. `[\"Stablecoin\"]`).","operationId":"get_token_screener_historical_beta_api_v1beta1_token_screener_historical_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenScreenerHistoricalRequest"}}},"required":true},"responses":{"200":{"description":"Historical token screener data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenScreenerHistoricalResponse"}}},"headers":{"X-Nansen-Credits-Used":{"$ref":"#/components/headers/XNansenCreditsUsed"},"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-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"}}}}}}
```


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.nansen.ai/api/backtesting-data/historical-token-screener.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
