OpenSea API endpoint
Returns a cursor-paginated leaderboard of wallets holding items in the collection, ranked by quantity held, with each holder's address and display name where OpenSea publishes one.
/opensea/collection/{slug}/holdersPath parameters:
slug (required): the OpenSea collection slug, e.g. boredapeyachtclubQuery parameters:
limit (optional): holders 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 a cursor-paginated leaderboard of wallets holding items in the collection, ranked by quantity held. display_name is OpenSea's public profile name where the wallet has one and is omitted otherwise.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| quantity | 20 | 28 to 128, median 60 |
| account | 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| slug (path) | string | Yes | OpenSea collection slug | boredapeyachtclub | |
| limit | integer | No | Holders per page, 1-100 | ||
| cursor | string | No | Opaque pagination cursor from a previous next_page_cursor | ||
| sort_direction | string | No | Sort direction by quantity held 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/holders?limit=10&sort_direction=ASC" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"slug": "boredapeyachtclub",
"holders": [
{
"quantity": 143,
"account": {
"address": "0x29469395eaf6f95920e59f858042f0e28d98a20b"
}
},
{
"quantity": 128,
"account": {
"address": "0x54be3a794282c030b15e43ae2bb182e14c409c5e",
"display_name": "dingaling"
}
}
],
"next_page_cursor": "WzIwLCIweDU0YmUzYTc5NCJd"
}
}Request schema
No body schema
Response schema
#/definitions/opensea.collectionHoldersResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | opensea.CollectionHoldersResponse | No | ||||
| data.holders | array | No | ||||
| data.holders[].account | opensea.Account | No | ||||
| data.holders[].account.address | string | No | 0x46efbaedc92067e6d60e84ed6395099723252496 | |||
| data.holders[].account.display_name | string | No | gordongoner | |||
| data.holders[].account.image_url | string | No | ||||
| data.holders[].quantity | integer | No | 143 | |||
| data.next_page_cursor | string | No | ||||
| 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/holders?limit=10&sort_direction=ASC" \
-H "x-api-key: $CRAWLORA_API_KEY"