OpenSea API endpoint
Returns the marketplace event history for a single NFT — sales, listings, offers, transfers, and mints — with counterparties, price, and transaction hash. Filter with `event_types`, for example `event_types=SALE,TRANSFER` for an ownership trail.
/opensea/item/{chain}/{contract_address}/{token_id}/activityPath parameters:
chain (required): a chain identifier, e.g. ethereum. Call /api/v1/opensea/chains for the full accepted listcontract_address (required): the NFT contract addresstoken_id (required): the token id within that contractQuery parameters:
limit (optional): events per page, 1-100, default 20cursor (optional): opaque pagination cursor taken from a previous response's next_page_cursorevent_types (optional): comma-separated list of event types. Each value must be one of SALE, LISTING, OFFER, TRANSFER, MINT, COLLECTION_OFFER, TRAIT_OFFER. Omit for every typeAn unrecognized value in event_types is rejected with 400.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| type | 20 | Offer in all 20 |
| event_time | 20 | 2026-10-13 |
| quantity | 20 | 1 |
| price | 20 | |
| from | 20 | |
| token_id | 20 | |
| contract_address | 20 | |
| chain | 20 | ethereum in all 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| chain (path) | string | Yes | Chain identifier from /opensea/chains | ethereum | |
| contract_address (path) | string | Yes | NFT contract address | 0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d | |
| token_id (path) | string | Yes | Token id within the contract | 1 | |
| limit | integer | No | Events per page, 1-100 | ||
| cursor | string | No | Opaque pagination cursor from a previous next_page_cursor | ||
| event_types | string | No | Comma-separated event types Allowed values: SALE, LISTING, OFFER, TRANSFER, MINT, COLLECTION_OFFER, TRAIT_OFFER. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/opensea/item/ethereum/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/1/activity?limit=10&event_types=SALE" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"token_id": "1",
"events": [
{
"id": "01a05234257d7357949e9f9f89e83b32",
"type": "Offer",
"event_time": "2026-08-30T10:25:44.317Z",
"quantity": "1",
"price": {
"amount": 0.0001,
"currency": "WETH",
"usd": 0.25
},
"from": {
"address": "0xf76246b0842c92ad5f9b0d2a2b6b0f9b1e1c0a11"
},
"chain": "ethereum",
"contract_address": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d"
}
],
"next_page_cursor": "WzIwXQ"
}
}Request schema
No body schema
Response schema
#/definitions/opensea.activityResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | opensea.ActivityResponse | No | ||||
| data.events | array | No | ActivityEvent record, 28 fields: chain, collection_name, collection_slug, contract_address, event_time, from, id, item_image_url, item_name, marketplace, price, quantity and 5 more. Described under OpenSea Marketplace Activity API. | |||
| data.next_page_cursor | string | No | ||||
| data.slug | string | No | boredapeyachtclub | |||
| data.token_id | string | No | ||||
| 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/item/ethereum/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/1/activity?limit=10&event_types=SALE" \
-H "x-api-key: $CRAWLORA_API_KEY"