OpenSea API endpoint
Returns standing offers scoped to a specific trait value rather than the whole collection, as price levels with the trait type and value attached. Useful for pricing rare-trait items against the collection floor.
/opensea/collection/{slug}/trait-offersPath parameters:
slug (required): the OpenSea collection slug, e.g. boredapeyachtclubQuery parameters:
limit (optional): price levels per page, 1-100, default 20cursor (optional): opaque pagination cursor taken from a previous response's next_page_cursorsort_direction (optional): one of ASC, DESC. Default DESCReturns standing offers scoped to a specific trait value rather than the whole collection, as price levels with trait_type and trait_value attached. total_offers and total_value_* at the top level are the aggregate across every trait bucket in the collection, not just the returned page. Useful for pricing a rare-trait item against the collection floor, since a trait offer can sit well above the collection-wide offer book.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| trait_type | 20 | Background (13), Fur (3), Eyes (2) and 2 more |
| trait_value | 20 | “Solid Gold” and 13 other values |
| total_offers | 20 | 1 |
| price | 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| slug (path) | string | Yes | OpenSea collection slug | boredapeyachtclub | |
| limit | integer | No | Price levels per page, 1-100 | ||
| cursor | string | No | Opaque pagination cursor from a previous next_page_cursor | ||
| sort_direction | string | No | Sort direction by offer price Allowed values: ASC, DESC. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/opensea/collection/boredapeyachtclub/trait-offers?limit=10&sort_direction=ASC" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"slug": "boredapeyachtclub",
"total_offers": 6,
"total_value_usd": 96.13,
"total_value_token": 96.13,
"total_currency": "WETH",
"offers": [
{
"id": "46188685bcac4206ace63c9d017abbb7_39.97_Fur_Solid Gold",
"trait_type": "Fur",
"trait_value": "Solid Gold",
"total_offers": 1,
"price": {
"amount": 39.97,
"currency": "WETH",
"usd": 98006.4
}
},
{
"id": "46188685bcac4206ace63c9d017abbb7_12.5_Eyes_Laser Eyes",
"trait_type": "Eyes",
"trait_value": "Laser Eyes",
"total_offers": 2,
"price": {
"amount": 12.5,
"currency": "WETH",
"usd": 30655.6
}
}
],
"next_page_cursor": "WzIwXQ"
}
}Request schema
No body schema
Response schema
#/definitions/opensea.collectionTraitOffersResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | opensea.CollectionTraitOffersResponse | No | ||||
| data.next_page_cursor | string | No | ||||
| data.offers | array | No | ||||
| data.offers[].id | string | No | ||||
| data.offers[].price | opensea.Price | No | Price record, 5 fields: amount, chain, contract_address, currency, usd. Described under Get a single OpenSea NFT API. | |||
| data.offers[].total_offers | integer | No | 1 | |||
| data.offers[].trait_type | string | No | Fur | |||
| data.offers[].trait_value | string | No | Solid Gold | |||
| data.slug | string | No | boredapeyachtclub | |||
| data.total_currency | string | No | WETH | |||
| data.total_offers | integer | No | 6 | |||
| data.total_value_token | number | No | 96.13 | |||
| data.total_value_usd | number | No | 96.13 | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/opensea/collection/boredapeyachtclub/trait-offers?limit=10&sort_direction=ASC" \
-H "x-api-key: $CRAWLORA_API_KEY"