> ## Documentation Index
> Fetch the complete documentation index at: https://coinstats.app/api-docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Wallet NFTs

> Get every NFT a wallet holds as individual tokens, across all chains in one call.

> [!NOTE]
>
> **40** credits per request

***

> **You will get**
>
> * One entry per NFT: name, description, image, thumbnail, animation and attributes
> * Its collection, floor price and value in your currency
> * Spam flag with reasons and mint details

> [!NOTE]
>
> Use this for an NFT gallery or token detail views. For one row per collection with a count of NFTs held, use [GET /wallet/nft/collections](/api-docs/openapi/get-wallet-nft-collections).

> **Required**
>
> * address: Query parameter. 0x wallet address.

> **Optional**
>
> * blockchain: Comma-separated chains or "all" (default).
> * spam: exclude (default), include or only.
> * sort: default or floorValue.
> * currency: Fiat currency for values. Defaults to USD.
> * contracts: Comma-separated collection addresses, up to 45, to return only their NFTs.
> * page & limit: Control pagination; limit is capped at 100.

> [!NOTE]
>
> Floor prices are current on Ethereum, Base and Arbitrum and null on other chains. Only collections verified on OpenSea get a value and count toward totals; unverified ones still show their floor price.


## OpenAPI

````yaml /api-docs/api-reference/openapi.json get /v1/wallet/nft
openapi: 3.0.0
info:
  title: CoinStats Public API
  description: >-
    CoinStats Public API — programmatic access to market data, news, NFTs,
    wallets, exchange connections, and user portfolios. Authenticate every
    request with the `X-API-KEY` header (or an OAuth Bearer token in the
    `Authorization` header). Generate keys at https://openapi.coinstats.app.
  version: '1.0'
  contact: {}
servers:
  - url: https://api.coinstats.app
security: []
tags:
  - name: CoinStats
    description: ''
  - name: Market Data
    description: >-
      The Market Data section of the API provides endpoints to access a wide
      range of market-related information, including cryptocurrency coins,
      ticker data, and fiat currency rates. This category offers comprehensive
      data to help users monitor and analyze the cryptocurrency market, track
      prices, and gain insights into market trends
  - name: RWA
    description: >-
      Tokenized real-world assets: overview, stocks, commodities, ETFs, tokens,
      trading markets, and aggregate or per-asset history.
  - name: News
    description: >-
      The News section of the API allows you to access news articles and updates
      related to cryptocurrencies and the blockchain industry. It provides
      valuable information from various sources to keep you informed about the
      latest developments
  - name: NFTs
    description: >-
      The NFT section of the API provides endpoints to interact with
      Non-Fungible Tokens (NFTs), which are unique digital assets stored on a
      blockchain. These endpoints allow you to retrieve information about NFTs,
      including collections, assets, trending NFTs, and specific assets
      associated with wallet addresses.
  - name: Wallet NFTs
    description: >-
      NFTs held by a wallet: tokens, collections, value, activity and token
      gating
  - name: Wallet Data
    description: >-
      The Wallet section of the API provides a comprehensive set of endpoints to
      manage and interact with wallets. It enables users to retrieve wallet
      balances, monitor syncing status, fetch transaction data, and synchronize
      wallet information with the blockchain. By integrating these endpoints
      into your application, you can offer robust wallet functionality to your
      users.
  - name: Exchange Connection
    description: >-
      The Exchange Connection section of the API provides a comprehensive set of
      endpoints to manage and interact with exchanges. It enables users to
      retrieve exchange balances, monitor syncing status, fetch transaction
      data. By integrating these endpoints into your application, you can offer
      robust exchange portfolio tracking functionality to your users.
  - name: User Portfolio
    description: >-
      The Portfolio section of the API provides a comprehensive set of endpoints
      to manage and interact with Share Portfolios. It enables users to retrieve
      current Portfolio Coins and Transactions.
  - name: Usage
    description: The Usage section provides account-level API usage data.
  - name: Status
    description: The Status section provides API availability checks.
  - name: Prediction · Markets
    description: >-
      Polymarket, Kalshi and Polymarket US markets: list/trend/detail, live
      prices and order book, OHLC candles, and price history. `view` picks the
      venues a list shows (`intl` default, `us`, `all`). Prices are
      probabilities in 0..1, money is USD, dates are ISO 8601.
  - name: Prediction · Events
    description: >-
      Polymarket, Kalshi and Polymarket US events — groups of related markets
      (e.g. one market per candidate). List, trend, and fetch an event with its
      child markets.
  - name: Prediction · Traders
    description: >-
      Trader leaderboard plus deep per-trader analytics: profile, open
      positions, trade history, daily PnL, category stats, aggregate trade
      stats, and composite score.
  - name: Prediction · Analytics
    description: >-
      Platform-wide analytics: overview stats, smart-money and whale traders,
      trending-by-smart-money markets, and composite market signals.
  - name: Prediction · Search
    description: Full-text search across prediction-market events, markets, and traders.
paths:
  /v1/wallet/nft:
    get:
      tags:
        - Wallet NFTs
      summary: >-
        Get every NFT a wallet holds as individual tokens, across all chains in
        one call.
      operationId: get-wallet-nfts
      parameters:
        - name: page
          required: false
          in: query
          description: Page number to retrieve (1-based indexing)
          schema:
            type: number
            example: 1
        - name: limit
          required: false
          in: query
          description: Number of NFT items to return per page
          schema:
            type: number
            example: 20
        - name: blockchain
          required: false
          in: query
          description: >-
            The blockchain network identifier from
            [/wallet/blockchains](/openapi/get-blockchains) call response (its
            `chain` field). NFT data is available on: ethereum, polygon-pos,
            base, arbitrum-one, optimistic-ethereum, zksync, blast, linea,
            scroll, zora, abstract, apechain, avalanche, binance_smart,
            unichain, soneium, berachain, world-chain, celo, xdai, monad.
            Comma-separate several, or pass "all" (default).
          schema:
            default: all
            example: ethereum,base
            type: string
        - name: spam
          required: false
          in: query
          description: >-
            exclude (default) hides spam NFTs, include returns everything, only
            returns spam alone.
          schema:
            default: exclude
            type: string
            enum:
              - exclude
              - include
              - only
        - name: sort
          required: false
          in: query
          description: >-
            default keeps upstream order; floorValue lists the most valuable
            first (reads up to 1,000 NFTs).
          schema:
            default: default
            type: string
            enum:
              - default
              - floorValue
        - name: currency
          required: false
          in: query
          description: Fiat currency for values, e.g. USD, EUR. Defaults to USD.
          schema:
            default: USD
            example: USD
            allOf:
              - $ref: '#/components/schemas/Object'
        - name: contracts
          required: false
          in: query
          description: >-
            Comma-separated collection contract addresses, up to 45. Only NFTs
            from these collections are returned.
          schema:
            type: string
            example: '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d'
        - name: address
          required: true
          in: query
          description: Wallet address (0x…).
          schema:
            example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NftWalletNftsPageDto'
        '400':
          description: Bad Request
          content:
            application/json:
              example:
                statusCode: 400
                message: Bad Request
                requestId: 11111111-2222-3333-4444-555555555555
                path: <requested-endpoint>
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                statusCode: 401
                message: Unauthorized
                requestId: 11111111-2222-3333-4444-555555555555
                path: <requested-endpoint>
        '403':
          description: Forbidden
          content:
            application/json:
              example:
                statusCode: 403
                message: Forbidden
                requestId: 11111111-2222-3333-4444-555555555555
                path: <requested-endpoint>
        '404':
          description: Not Found
          content:
            application/json:
              example:
                statusCode: 404
                message: Not Found
                requestId: 11111111-2222-3333-4444-555555555555
                path: <requested-endpoint>
        '409':
          description: Conflict (for some endpoints)
          content:
            application/json:
              example:
                statusCode: 409
                message: Transactions not synced
                requestId: 11111111-2222-3333-4444-555555555555
                path: <requested-endpoint>
        '429':
          description: Too Many Requests
          content:
            application/json:
              example:
                statusCode: 429
                message: Rate limit exceeded
                requestId: 11111111-2222-3333-4444-555555555555
                path: <requested-endpoint>
        '503':
          description: Service Unavailable
          content:
            application/json:
              example:
                statusCode: 503
                message: Service Unavailable. Please Contact Support
      security:
        - X-API-KEY: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://api.coinstats.app/v1/wallet/nft?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' \
              --header 'X-API-KEY: <api-key>'
        - lang: python
          label: Python
          source: >-
            import requests


            url =
            "https://api.coinstats.app/v1/wallet/nft?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"


            headers = {"X-API-KEY": "<api-key>"}


            response = requests.request("GET", url, headers=headers)


            print(response.json())
        - lang: javascript
          label: JavaScript
          source: >-
            const options = {method: 'GET', headers: {'X-API-KEY':
            '<api-key>'}};


            fetch('https://api.coinstats.app/v1/wallet/nft?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
            options)
              .then((response) => response.json())
              .then((response) => console.log(response))
              .catch((err) => console.error(err));
        - lang: php
          label: PHP
          source: |-
            <?php

            $curl = curl_init();

            curl_setopt_array($curl, [
              CURLOPT_URL => "https://api.coinstats.app/v1/wallet/nft?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
              CURLOPT_RETURNTRANSFER => true,
              CURLOPT_CUSTOMREQUEST => "GET",
              CURLOPT_HTTPHEADER => [
                "X-API-KEY: <api-key>"
              ],
            ]);

            $response = curl_exec($curl);
            $err = curl_error($curl);

            curl_close($curl);

            if ($err) {
              echo "cURL Error #:" . $err;
            } else {
              echo $response;
            }
        - lang: go
          label: Go
          source: "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\n\turl := \"https://api.coinstats.app/v1/wallet/nft?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"X-API-KEY\", \"<api-key>\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n}"
        - lang: java
          label: Java
          source: >-
            HttpResponse<String> response =
            Unirest.get("https://api.coinstats.app/v1/wallet/nft?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045")
              .header("X-API-KEY", "<api-key>")
              .asString();
components:
  schemas:
    Object:
      type: object
      properties: {}
    NftWalletNftsPageDto:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/NftWalletNftDto'
        meta:
          $ref: '#/components/schemas/PageMetaDto'
        failedBlockchains:
          description: Chains that could not be read; their NFTs are missing
          example: []
          type: array
          items:
            type: string
        truncated:
          type: boolean
          description: >-
            sort=floorValue or contracts only: the wallet holds more NFTs than
            were read
          example: false
      required:
        - data
        - meta
        - failedBlockchains
        - truncated
    NftWalletNftDto:
      type: object
      properties:
        blockchain:
          type: string
          example: ethereum
        contractAddress:
          type: string
          example: '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d'
        tokenId:
          type: string
          example: '1'
        standard:
          type: string
          example: ERC721
          nullable: true
        name:
          type: string
          example: 'Bored Ape #1'
          nullable: true
        description:
          type: string
          nullable: true
        amount:
          type: number
          description: Number of units held; always 1 for ERC-721
          example: 1
        url:
          type: string
          description: Full-size image URL
          nullable: true
        previewUrl:
          type: string
          description: Thumbnail image URL
          nullable: true
        pngUrl:
          type: string
          description: PNG rendition, useful for SVG artwork
          nullable: true
        animationUrl:
          type: string
          description: Video or animation URL
          nullable: true
        contentType:
          type: string
          example: image/png
          nullable: true
        collection:
          $ref: '#/components/schemas/NftCollectionSummaryDto'
        floorPrice:
          type: number
          description: >-
            Current collection floor price in floorPriceCurrency. Floors are
            current on Ethereum, Base and Arbitrum and null on other chains.
          example: 5.5
          nullable: true
        floorPriceCurrency:
          type: string
          description: CoinStats coin id the floor price is quoted in
          example: ethereum
        value:
          type: number
          description: >-
            Floor price × amount, in the requested currency; null when the floor
            is unknown or the collection is not verified
          example: 13150.86
          nullable: true
        currency:
          type: string
          example: USD
        spam:
          $ref: '#/components/schemas/NftSpamInfoDto'
        mint:
          $ref: '#/components/schemas/NftMintInfoDto'
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/NftTraitDto'
      required:
        - blockchain
        - contractAddress
        - tokenId
        - standard
        - name
        - description
        - amount
        - url
        - previewUrl
        - pngUrl
        - animationUrl
        - contentType
        - collection
        - floorPrice
        - floorPriceCurrency
        - value
        - currency
        - spam
        - mint
        - attributes
    PageMetaDto:
      type: object
      properties:
        page:
          type: number
          description: Current page number (1-based)
          example: 2
          minimum: 1
        limit:
          type: number
          description: Number of items per page
          example: 20
          minimum: 1
          maximum: 1000
        itemCount:
          type: number
          description: Total number of items across all pages
          example: 150
          minimum: 0
        pageCount:
          type: number
          description: Total number of pages available
          example: 8
          minimum: 0
        hasPreviousPage:
          type: boolean
          description: Whether there is a previous page available
          example: true
        hasNextPage:
          type: boolean
          description: Whether there is a next page available
          example: true
      required:
        - page
        - limit
        - itemCount
        - pageCount
        - hasPreviousPage
        - hasNextPage
    NftCollectionSummaryDto:
      type: object
      properties:
        name:
          type: string
          example: Bored Ape Yacht Club
          nullable: true
        slug:
          type: string
          example: boredapeyachtclub
          nullable: true
        img:
          type: string
          description: Collection logo URL
          example: https://i2c.seadn.io/collection/boredapeyachtclub/image.png
          nullable: true
        verified:
          type: boolean
          description: Whether the collection is verified on marketplaces
          example: true
      required:
        - name
        - slug
        - img
        - verified
    NftSpamInfoDto:
      type: object
      properties:
        isSpam:
          type: boolean
          example: false
        reasons:
          description: Why the contract was classified as spam, when it was
          example: []
          type: array
          items:
            type: string
      required:
        - isSpam
        - reasons
    NftMintInfoDto:
      type: object
      properties:
        timestamp:
          type: string
          example: '2021-05-01T12:00:00.000Z'
          nullable: true
        transactionHash:
          type: string
          example: 0x6915…c4e4
          nullable: true
        mintedByOwner:
          type: boolean
          description: Whether the current owner minted this token
          example: true
          nullable: true
      required:
        - timestamp
        - transactionHash
        - mintedByOwner
    NftTraitDto:
      type: object
      properties:
        key:
          type: string
          example: Background
        value:
          type: string
          example: Orange
      required:
        - key
        - value
  securitySchemes:
    X-API-KEY:
      type: apiKey
      in: header
      name: X-API-KEY
      description: >-
        API key required to access the endpoints. Generate one from your
        dashboard at https://openapi.coinstats.app and pass it in the
        `X-API-KEY` request header. Never expose your key in client-side code.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.