OpenSea API endpoint
Returns the listed items OpenSea surfaces as the best value in a collection, judged against each item's rarity and the collection floor. This is the curated "best deals" shelf from the collection page, not a generic price sort.
/opensea/collection/{slug}/best-dealsPath parameters:
slug (required): the OpenSea collection slug, e.g. boredapeyachtclubReturns the listed items OpenSea surfaces as the best value in the collection, judged against each item's rarity and the collection floor. This is the curated shelf from the collection page, not a generic cheapest-first sort — an item can appear here while priced above the floor if its rarity justifies it.
The shelf is a fixed-size snapshot and is not paginated.
| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| id | 10 | |
| token_id | 10 | |
| name | 10 | “#2307” and 9 other values |
| image_url | 10 | i2c.seadn.io |
| contract_address | 10 | |
| chain | 10 | ethereum in all 10 |
| rarity_rank | 10 | 97 to 1,685, median 523 |
| traits | 10 | median 7 entries |
| best_listing | 10 | |
| last_sale | 8 | |
| marketplace | 10 | opensea (6), blur (4) |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| slug (path) | string | Yes | OpenSea collection slug | boredapeyachtclub | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/opensea/collection/boredapeyachtclub/best-deals" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"slug": "boredapeyachtclub",
"shelf": "best_deals",
"items": [
{
"id": "91b0d5ddea3436e8a07c352066ab6a59",
"token_id": "9475",
"name": "#9475",
"image_url": "https://i2c.seadn.io/base/abc.png",
"contract_address": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",
"chain": "ethereum",
"rarity_rank": 1204,
"traits": [
{
"trait_type": "Fur",
"value": "Brown"
}
],
"best_listing": {
"amount": 7.95,
"currency": "ETH",
"usd": 19541.2
},
"marketplace": "opensea"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/opensea.itemsShelfResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | opensea.CollectionItemsShelfResponse | No | ||||
| data.items | array | No | ||||
| data.items[].best_listing | opensea.Price | No | ||||
| data.items[].best_listing.amount | number | No | 7.85 | |||
| data.items[].best_listing.chain | string | No | ethereum | |||
| data.items[].best_listing.contract_address | string | No | 0x0000000000000000000000000000000000000000 | |||
| data.items[].best_listing.currency | string | No | ETH | |||
| data.items[].best_listing.usd | number | No | 19295.3 | |||
| data.items[].best_offer | opensea.Price | No | ||||
| data.items[].best_offer.amount | number | No | 7.85 | |||
| data.items[].best_offer.chain | string | No | ethereum | |||
| data.items[].best_offer.contract_address | string | No | 0x0000000000000000000000000000000000000000 | |||
| data.items[].best_offer.currency | string | No | ETH | |||
| data.items[].best_offer.usd | number | No | 19295.3 | |||
| data.items[].chain | string | No | ethereum | |||
| data.items[].collection_name | string | No | Bored Ape Yacht Club | |||
| data.items[].collection_slug | string | No | boredapeyachtclub | |||
| data.items[].contract_address | string | No | ||||
| data.items[].created_at | string | No | ||||
| data.items[].description | string | No | ||||
| data.items[].id | string | No | ||||
| data.items[].image_url | string | No | ||||
| data.items[].is_fungible | boolean | No | ||||
| data.items[].last_sale | opensea.Price | No | ||||
| data.items[].last_sale.amount | number | No | 7.85 | |||
| data.items[].last_sale.chain | string | No | ethereum | |||
| data.items[].last_sale.contract_address | string | No | 0x0000000000000000000000000000000000000000 | |||
| data.items[].last_sale.currency | string | No | ETH | |||
| data.items[].last_sale.usd | number | No | 19295.3 | |||
| data.items[].last_sale_at | string | No | ||||
| data.items[].marketplace | string | No | opensea | |||
| data.items[].name | string | No | #1 | |||
| data.items[].owner | opensea.Account | No | ||||
| data.items[].owner.address | string | No | 0x46efbaedc92067e6d60e84ed6395099723252496 | |||
| data.items[].owner.display_name | string | No | gordongoner | |||
| data.items[].owner.image_url | string | No | ||||
| data.items[].rarity_rank | integer | No | 1204 | |||
| data.items[].token_id | string | No | 1 | |||
| data.items[].traits | array | No | ||||
| data.items[].traits[].trait_type | string | No | Background | |||
| data.items[].traits[].value | string | No | Orange | |||
| data.shelf | string | No | best_deals | |||
| data.slug | string | No | boredapeyachtclub | |||
| 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/best-deals" \
-H "x-api-key: $CRAWLORA_API_KEY"