OpenSea Analytics Endpoints API

Analytics endpoints to retrieve events, stats, and trading data

OpenAPI Specification

opensea-analytics-endpoints-api-openapi.yml Raw ↑
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