OpenSea API endpoint
Returns the live cross-collection activity feed — every sale, listing, offer, transfer, and mint OpenSea indexes, newest first, with the collection each event belongs to. Filter with `event_types` for a marketplace-wide trade tape.
/opensea/activityQuery 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 typeThis is the unscoped counterpart to /opensea/collection/{slug}/activity.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| type | 20 | Listing (10), Offer (9), CollectionOffer (1) |
| event_time | 20 | 2026-10-13 |
| quantity | 20 | 1 |
| price | 20 | |
| from | 20 | |
| marketplace | 10 | opensea in all 10 |
| token_id | 19 | |
| item_name | 19 | “Monos #1794” and 18 other values |
| item_image_url | 19 | i2c.seadn.io and 1 other host |
| contract_address | 19 | |
| chain | 19 | ethereum (8), robinhood (7), base (3) and 1 more |
| collection_slug | 20 | |
| collection_name | 20 | “Monos” and 15 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| 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/activity?limit=10&event_types=SALE" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"events": [
{
"id": "01a05272c3587aae87d8062e223e3a63",
"type": "Listing",
"event_time": "2026-08-30T11:34:07.960Z",
"quantity": "1.0",
"price": {
"amount": 0.0189,
"currency": "ETH",
"usd": 46.4
},
"from": {
"address": "0x9ebf91b8d6ff68aa055453 01a3d0984eaee54a03"
},
"marketplace": "opensea",
"token_id": "4412",
"item_name": "#4412",
"contract_address": "0x1a92f7381b9f03921564a437210bb9396471050c",
"chain": "ethereum",
"collection_slug": "cool-cats-nft",
"collection_name": "Cool Cats"
}
],
"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 | ||||
| data.events[].chain | string | No | ||||
| data.events[].collection_name | string | No | ||||
| data.events[].collection_slug | string | No | boredapeyachtclub | |||
| data.events[].contract_address | string | No | ||||
| data.events[].event_time | string | No | 2026-08-30T08:38:47.235Z | |||
| data.events[].from | opensea.Account | No | ||||
| data.events[].from.address | string | No | 0x46efbaedc92067e6d60e84ed6395099723252496 | |||
| data.events[].from.display_name | string | No | gordongoner | |||
| data.events[].from.image_url | string | No | ||||
| data.events[].id | string | No | ||||
| data.events[].item_image_url | string | No | ||||
| data.events[].item_name | string | No | ||||
| data.events[].marketplace | string | No | opensea | |||
| data.events[].price | opensea.Price | No | ||||
| data.events[].price.amount | number | No | 7.85 | |||
| data.events[].price.chain | string | No | ethereum | |||
| data.events[].price.contract_address | string | No | 0x0000000000000000000000000000000000000000 | |||
| data.events[].price.currency | string | No | ETH | |||
| data.events[].price.usd | number | No | 19295.3 | |||
| data.events[].quantity | string | No | 1 | |||
| data.events[].sale_type | string | No | ||||
| data.events[].to | opensea.Account | No | ||||
| data.events[].to.address | string | No | 0x46efbaedc92067e6d60e84ed6395099723252496 | |||
| data.events[].to.display_name | string | No | gordongoner | |||
| data.events[].to.image_url | string | No | ||||
| data.events[].token_id | string | No | 3766 | |||
| data.events[].transaction_hash | string | No | ||||
| data.events[].type | string | No | Sale | |||
| 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 |
| 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/activity?limit=10&event_types=SALE" \
-H "x-api-key: $CRAWLORA_API_KEY"