# Address Perp Trades

## Get Perpetual Trade Data

> Get perpetual trade data for a user. This endpoint provides trade information including trade price, size, side, fees, and other trade details.\
> \
> \*\*What it helps to answer:\*\*\
> \
> 1\. \*\*What are the perpetual trades for a specific user address within a date range?\*\*\
> 2\. \*\*What are the trade prices, sizes, and directions for each trade?\*\*\
> 3\. \*\*What are the trading fees and closed PnL for each trade?\*\*\
> 4\. \*\*What are the order IDs and transaction hashes for trade tracking?\*\*

```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":{"PerpTradeRequest":{"properties":{"address":{"type":"string","maxLength":42,"minLength":42,"title":"Address","description":"User's Hyperliquid address in 42-character hexadecimal format"},"date":{"$ref":"#/components/schemas/DateRange","description":"Date range for the trades (ISO 8601 date-time)"},"filters":{"anyOf":[{"$ref":"#/components/schemas/PerpTradeFilters"}],"description":"Additional filters for the trades"},"pagination":{"$ref":"#/components/schemas/PaginationRequest","description":"Pagination parameters"},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/SortOrder_PerpTradeSortField_"},"type":"array"}],"title":"Order By","description":"Sort order for the trades"}},"additionalProperties":false,"type":"object","required":["address","date"],"title":"PerpTradeRequest","description":"Request model for Perp Trades 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."},"PerpTradeFilters":{"properties":{"token_symbol":{"anyOf":[{"type":"string"}],"title":"Token Symbol","description":"Token symbol filter"},"side":{"anyOf":[{"$ref":"#/components/schemas/PerpTradeType"}],"description":"Position side filter (Long or Short)"},"action":{"anyOf":[{"$ref":"#/components/schemas/PerpTradeActionFilter"}],"description":"Action filter (Open/Add, Close/Reduce, Liquidation)"},"crossed":{"anyOf":[{"type":"boolean"}],"title":"Crossed","description":"Whether the trade was crossed"},"size":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Trade size range filter"},"start_position":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Start position range filter"},"closed_pnl":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Closed PnL range filter"},"fee_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Fee in USD range filter"},"fee_token_symbol":{"anyOf":[{"type":"string"}],"title":"Fee Token Symbol","description":"Fee token filter"},"oid":{"anyOf":[{"$ref":"#/components/schemas/IntegerRangeFilter"}],"description":"Order ID range filter"},"price":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Price range filter"},"value_usd":{"anyOf":[{"$ref":"#/components/schemas/NumericRangeFilter"}],"description":"Value in USD range filter"}},"additionalProperties":false,"type":"object","title":"PerpTradeFilters","description":"Filters for perp trades endpoint.\n\nThese filters control which perpetual trades are included in the results\nbased on various trade criteria."},"PerpTradeType":{"type":"string","enum":["Long","Short"],"title":"PerpTradeType","description":"Enum for perp trade position types."},"PerpTradeActionFilter":{"type":"string","enum":["Open/Add","Close/Reduce","Liquidation"],"title":"PerpTradeActionFilter","description":"Enum for perp trade action filters (grouped)."},"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_PerpTradeSortField_":{"properties":{"field":{"$ref":"#/components/schemas/PerpTradeSortField","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction (ASC or DESC)"}},"type":"object","required":["field","direction"],"title":"SortOrder[PerpTradeSortField]"},"PerpTradeSortField":{"type":"string","enum":["timestamp","size","fee_usd","closed_pnl","price","value_usd"],"title":"PerpTradeSortField","description":"Enum for perp trade sort fields."},"SortDirection":{"type":"string","enum":["ASC","DESC"],"title":"SortDirection","description":"Enum for sort directions."},"PerpTradeResponse":{"properties":{"pagination":{"$ref":"#/components/schemas/PaginationInfo","description":"Pagination information"},"data":{"items":{"$ref":"#/components/schemas/PerpTrade"},"type":"array","title":"Data","description":"List of perpetual trades"}},"additionalProperties":false,"type":"object","required":["pagination","data"],"title":"PerpTradeResponse","description":"Response model for perp trades 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."},"PerpTrade":{"properties":{"timestamp":{"type":"string","title":"Timestamp","description":"Timestamp of the trade"},"side":{"anyOf":[{"$ref":"#/components/schemas/PerpTradeType"}],"description":"Position side (Long or Short)"},"action":{"type":"string","title":"Action","description":"Action taken (Open, Add, Close, Reduce, etc.)"},"block_number":{"type":"integer","title":"Block Number","description":"Block number of the trade"},"token_symbol":{"type":"string","title":"Token Symbol","description":"Symbol of the token"},"price":{"anyOf":[{"type":"number"}],"title":"Price","description":"Average price of the trade (averaged across fills)"},"size":{"type":"number","title":"Size","description":"Total size of the trade (sum of all fills)"},"value_usd":{"type":"number","title":"Value Usd","description":"Total value in USD of the trade"},"start_position":{"type":"number","title":"Start Position","description":"Start position of the trade in token units"},"closed_pnl":{"type":"number","title":"Closed Pnl","description":"Total closed PnL of the trade (sum of all fills)"},"crossed":{"type":"boolean","title":"Crossed","description":"Crossed of the trade"},"fee_usd":{"type":"number","title":"Fee Usd","description":"Total fee in USD of the trade (sum of all fills)"},"fee_token_symbol":{"type":"string","title":"Fee Token Symbol","description":"Fee in token of the trade"},"transaction_hash":{"type":"string","title":"Transaction Hash","description":"Transaction hash of the trade"},"user":{"type":"string","title":"User","description":"User of the trade"},"oid":{"type":"integer","title":"Oid","description":"Order ID of the trade"}},"additionalProperties":false,"type":"object","required":["timestamp","side","action","block_number","token_symbol","price","size","value_usd","start_position","closed_pnl","crossed","fee_usd","fee_token_symbol","transaction_hash","user","oid"],"title":"PerpTrade","description":"Perpetual trade with computed type and action fields for client response."}},"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/v1/profiler/perp-trades":{"post":{"tags":["Profiler"],"summary":"Get Perpetual Trade Data","description":"Get perpetual trade data for a user. This endpoint provides trade information including trade price, size, side, fees, and other trade details.\n\n**What it helps to answer:**\n\n1. **What are the perpetual trades for a specific user address within a date range?**\n2. **What are the trade prices, sizes, and directions for each trade?**\n3. **What are the trading fees and closed PnL for each trade?**\n4. **What are the order IDs and transaction hashes for trade tracking?**","operationId":"get_perp_trades_api_v1_profiler_perp_trades_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerpTradeRequest"}}},"required":true},"responses":{"200":{"description":"Perpetual trade data for the user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerpTradeResponse"}}},"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: 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:

```
GET https://docs.nansen.ai/api/profiler/address-perp-trades.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
