OpenSea Analytics Endpoints API
Analytics endpoints to retrieve events, stats, and trading data
Analytics endpoints to retrieve events, stats, and trading data
openapi: 3.1.0
info:
title: OpenSea Account Endpoints Analytics Endpoints API
description: The API for OpenSea
contact:
name: OpenSea
url: https://www.opensea.io
email: contact@opensea.io
version: 2.0.0
servers:
- url: https://api.opensea.io
description: Production server
security:
- ApiKeyAuth: []
tags:
- name: Analytics Endpoints
description: Analytics endpoints to retrieve events, stats, and trading data
paths:
/api/v2/events:
get:
tags:
- Analytics Endpoints
summary: Get events
description: Get a list of events, with optional filtering by event type and time range.
operationId: list_events
parameters:
- name: after
in: query
description: Only show events after this timestamp (Unix timestamp in seconds)
required: false
schema:
type: integer
format: int64
- name: before
in: query
description: Only show events before this timestamp (Unix timestamp in seconds)
required: false
schema:
type: integer
format: int64
- name: event_type
in: query
description: Filter by event types. To get order invalidation and revalidation events, please use the Stream API. The order status can also be checked on the Get Order endpoint.
required: false
schema:
type: array
items:
type: string
enum:
- sale
- transfer
- mint
- listing
- offer
- trait_offer
- collection_offer
- name: limit
in: query
description: Number of items to return per page
required: false
schema:
type: integer
format: int32
description: Number of items to return per page
example: 20
maximum: 200
minimum: 1
example: 20
- name: next.value
in: query
required: false
schema:
type: string
responses:
'200':
description: OK
content:
'*/*':
schema:
$ref: '#/components/schemas/AssetEventsResponse'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/events/collection/{slug}:
get:
tags:
- Analytics Endpoints
summary: Get events (by collection)
description: Get a list of events for a collection. Optionally filter by traits to only return events for items matching the specified trait criteria.
operationId: list_events_by_collection
parameters:
- name: slug
in: path
description: Unique identifier for the collection
required: true
schema:
type: string
example: doodles-official
- name: after
in: query
description: Only show events after this timestamp (Unix timestamp in seconds)
required: false
schema:
type: integer
format: int64
- name: before
in: query
description: Only show events before this timestamp (Unix timestamp in seconds)
required: false
schema:
type: integer
format: int64
- name: event_type
in: query
description: Filter by event types. To get order invalidation and revalidation events, please use the Stream API. The order status can also be checked on the Get Order endpoint.
required: false
schema:
type: array
items:
type: string
enum:
- sale
- transfer
- mint
- listing
- offer
- trait_offer
- collection_offer
- name: traits
in: query
description: 'JSON array of trait filters. Each object has ''traitType'' and ''value'' fields. Multiple traits are AND-combined (items must match all). Example: [{"traitType":"Background","value":"Red"}]'
required: false
schema:
type: string
example:
- traitType: Background
value: Red
- name: limit
in: query
description: Number of items to return per page
required: false
schema:
type: integer
format: int32
description: Number of items to return per page
example: 20
maximum: 200
minimum: 1
example: 20
- name: next.value
in: query
required: false
schema:
type: string
responses:
'200':
description: OK
content:
'*/*':
schema:
$ref: '#/components/schemas/AssetEventsResponse'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/events/chain/{chain}/contract/{address}/nfts/{identifier}:
get:
tags:
- Analytics Endpoints
summary: Get events (by NFT)
description: Get a list of events for a specific NFT.
operationId: list_events_by_nft
parameters:
- name: chain
in: path
description: The blockchain on which to filter the results
required: true
schema:
type: string
example: ethereum
- name: address
in: path
description: The unique public blockchain identifier for the contract
required: true
schema:
type: string
example: 0x8ba1f109551bD432803012645Hac136c94C19D6e
- name: identifier
in: path
description: The NFT token id
required: true
schema:
type: string
example: 1
- name: after
in: query
description: Only show events after this timestamp (Unix timestamp in seconds)
required: false
schema:
type: integer
format: int64
- name: before
in: query
description: Only show events before this timestamp (Unix timestamp in seconds)
required: false
schema:
type: integer
format: int64
- name: event_type
in: query
description: Filter by event types. To get order invalidation and revalidation events, please use the Stream API. The order status can also be checked on the Get Order endpoint.
required: false
schema:
type: array
items:
type: string
enum:
- sale
- transfer
- mint
- listing
- offer
- trait_offer
- collection_offer
- name: limit
in: query
description: Number of items to return per page
required: false
schema:
type: integer
format: int32
description: Number of items to return per page
example: 20
maximum: 200
minimum: 1
example: 20
- name: next.value
in: query
required: false
schema:
type: string
responses:
'200':
description: OK
content:
'*/*':
schema:
$ref: '#/components/schemas/AssetEventsResponse'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/events/accounts/{address}:
get:
tags:
- Analytics Endpoints
summary: Get events (by account)
description: Get a list of events for an account.
operationId: list_events_by_account
parameters:
- name: address
in: path
description: The blockchain address of the account
required: true
schema:
type: string
example: 0x8ba1f109551bD432803012645Hac136c94C19D6e
- name: after
in: query
description: Only show events after this timestamp (Unix timestamp in seconds)
required: false
schema:
type: integer
format: int64
- name: before
in: query
description: Only show events before this timestamp (Unix timestamp in seconds)
required: false
schema:
type: integer
format: int64
- name: event_type
in: query
description: Filter by event types. To get order invalidation and revalidation events, please use the Stream API. The order status can also be checked on the Get Order endpoint.
required: false
schema:
type: array
items:
type: string
enum:
- sale
- transfer
- mint
- listing
- offer
- trait_offer
- collection_offer
- name: chain
in: query
description: Filter by blockchain
required: false
schema:
type: string
- name: limit
in: query
description: Number of items to return per page
required: false
schema:
type: integer
format: int32
description: Number of items to return per page
example: 20
maximum: 200
minimum: 1
example: 20
- name: next.value
in: query
required: false
schema:
type: string
responses:
'200':
description: OK
content:
'*/*':
schema:
$ref: '#/components/schemas/AssetEventsResponse'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
/api/v2/collections/{slug}/stats:
get:
tags:
- Analytics Endpoints
summary: Get collection stats
description: Get comprehensive statistics for a collection including volume, floor price, and trading metrics.
operationId: get_collection_stats
parameters:
- name: slug
in: path
description: Unique identifier for the specific collection
required: true
schema:
type: string
example: doodles-official
responses:
'200':
description: OK
content:
'*/*':
schema:
$ref: '#/components/schemas/CollectionStatsResponse'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
components:
schemas:
CollectionStatsResponse:
type: object
properties:
total:
$ref: '#/components/schemas/Total'
intervals:
type: array
items:
$ref: '#/components/schemas/IntervalStat'
required:
- intervals
- total
Trait:
type: object
properties:
trait_type:
type: string
display_type:
type: string
max_value:
type: string
value: {}
required:
- trait_type
- value
CollectionInner:
type: object
properties:
slug:
type: string
required:
- slug
AssetEventsResponse:
type: object
properties:
asset_events:
type: array
items:
oneOf:
- $ref: '#/components/schemas/OrderEvent'
- $ref: '#/components/schemas/SaleEvent'
- $ref: '#/components/schemas/TransferEvent'
next:
type: string
required:
- asset_events
Event: {}
NumericTraitData:
type: object
properties:
type:
type: string
min:
type: number
format: float
max:
type: number
format: float
required:
- type
Criteria:
type: object
properties:
collection:
$ref: '#/components/schemas/CollectionInner'
contract:
$ref: '#/components/schemas/ContractInner'
traits:
type: array
items:
$ref: '#/components/schemas/TraitData'
numeric_traits:
type: array
items:
$ref: '#/components/schemas/NumericTraitData'
encoded_token_ids:
type: string
TransferEvent:
allOf:
- $ref: '#/components/schemas/Event'
- type: object
properties:
event_type:
type: string
event_timestamp:
type: integer
format: int64
transaction:
type: string
order_hash:
type: string
protocol_address:
type: string
chain:
type: string
payment:
$ref: '#/components/schemas/Payment'
transfer_type:
type: string
from_address:
type: string
to_address:
type: string
nft:
$ref: '#/components/schemas/Nft'
quantity:
type: integer
format: int64
required:
- chain
- event_timestamp
- event_type
- from_address
- quantity
- to_address
- transfer_type
TraitData:
type: object
properties:
type:
type: string
value:
type: string
required:
- type
- value
OrderEvent:
allOf:
- $ref: '#/components/schemas/Event'
- type: object
properties:
event_type:
type: string
event_timestamp:
type: integer
format: int64
transaction:
type: string
order_hash:
type: string
protocol_address:
type: string
chain:
type: string
payment:
$ref: '#/components/schemas/Payment'
order_type:
type: string
start_date:
type: integer
format: int64
expiration_date:
type: integer
format: int64
asset:
$ref: '#/components/schemas/Nft'
quantity:
type: integer
format: int64
maker:
type: string
taker:
type: string
criteria:
$ref: '#/components/schemas/Criteria'
is_private_listing:
type: boolean
required:
- chain
- event_timestamp
- event_type
- is_private_listing
- maker
- order_type
- quantity
Nft:
type: object
properties:
identifier:
type: string
collection:
type: string
contract:
type: string
token_standard:
type: string
name:
type: string
description:
type: string
image_url:
type: string
display_image_url:
type: string
display_animation_url:
type: string
metadata_url:
type: string
opensea_url:
type: string
updated_at:
type: string
is_disabled:
type: boolean
is_nsfw:
type: boolean
original_image_url:
type: string
original_animation_url:
type: string
traits:
type: array
items:
$ref: '#/components/schemas/Trait'
required:
- collection
- contract
- identifier
- is_disabled
- is_nsfw
- opensea_url
- token_standard
- traits
- updated_at
ContractInner:
type: object
properties:
address:
type: string
required:
- address
IntervalStat:
type: object
properties:
interval:
type: string
volume:
type: number
format: double
sales:
type: integer
format: int32
required:
- interval
- sales
- volume
Total:
type: object
properties:
volume:
type: number
format: double
sales:
type: integer
format: int32
num_owners:
type: integer
format: int64
floor_price:
type: number
format: double
floor_price_symbol:
type: string
required:
- floor_price
- floor_price_symbol
- num_owners
- sales
- volume
Payment:
type: object
properties:
quantity:
type: string
token_address:
type: string
decimals:
type: integer
format: int32
symbol:
type: string
required:
- decimals
- quantity
- symbol
- token_address
SaleEvent:
allOf:
- $ref: '#/components/schemas/Event'
- type: object
properties:
event_type:
type: string
event_timestamp:
type: integer
format: int64
transaction:
type: string
order_hash:
type: string
protocol_address:
type: string
chain:
type: string
payment:
$ref: '#/components/schemas/Payment'
closing_date:
type: integer
format: int64
seller:
type: string
buyer:
type: string
quantity:
type: integer
format: int64
nft:
$ref: '#/components/schemas/Nft'
required:
- buyer
- chain
- closing_date
- event_timestamp
- event_type
- quantity
- seller
responses:
NotFound:
description: Resource not found
InternalError:
description: Internal server error. Please open a support ticket so OpenSea can investigate.
BadRequest:
description: For error reasons, review the response data.
securitySchemes:
ApiKeyAuth:
type: apiKey
description: API key required for authentication
name: x-api-key
in: header
x-tagGroups:
- name: Data & Discovery
tags:
- Chain Endpoints
- Account Endpoints
- Collection Endpoints
- NFT Endpoints
- Contract Endpoints
- Token Endpoints
- Search Endpoints
- name: Marketplace & Trading
tags:
- Listing Endpoints
- Offer Endpoints
- Order Endpoints
- Swap Endpoints
- Drops Endpoints
- name: Analytics & Events
tags:
- Analytics Endpoints
- name: Tools [Beta]
tags:
- Tool Endpoints [Beta]
- name: Transactions
tags:
- Transaction Endpoints