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

# NFT Balances

> Fetch all NFTs held by a specified wallet address. Use `token_addresses` to filter by one or many specific contract(s). Each NFT returned includes on-chain metadata as well as off-chain metadata, floor prices, rarity and more where available.

export const EndpointMeta = ({premium, cus, cusUnit, mainnetOnly}) => {
  const items = [];
  const planName = typeof premium === "string" ? premium : "Pro";
  if (premium) {
    items.push({
      icon: "\u26a0\ufe0f",
      label: "Premium endpoint",
      text: <>
          Requires the <strong>{planName} plan</strong> or above.{" "}
          <a href="/data-api/introduction/resources/premium-endpoints">
            View all
          </a>
          .
        </>
    });
  }
  if (cus) {
    const isDynamic = !!cusUnit;
    items.push({
      icon: "\u26a1",
      label: isDynamic ? "Dynamic cost" : "Endpoint cost",
      text: isDynamic ? <>
          {cus} CUs per {cusUnit}.{" "}
          <a href="/get-started/pricing#dynamic-endpoints">Learn more</a>.
        </> : <>
          {cus} CUs.{" "}
          <a href="/get-started/pricing">Learn more</a>.
        </>
    });
  }
  if (mainnetOnly) {
    items.push({
      icon: "\ud83d\udd17",
      label: "Mainnet only",
      text: <>Testnet chains are not supported.</>
    });
  }
  if (items.length === 0) return null;
  return <div className="endpoint-meta" style={{
    border: "1px solid var(--border-color, #e2e8f0)",
    borderRadius: "8px",
    overflow: "hidden",
    marginBottom: "16px",
    fontSize: "14px",
    lineHeight: "1.6",
    maxWidth: "100%"
  }}>
      <style dangerouslySetInnerHTML={{
    __html: `
            .endpoint-meta {
              --border-color: #e2e8f0;
              --row-bg: #f8fafc;
              --label-color: #0f172a;
              --text-color: #1f2937;
            }
            .endpoint-meta a {
              color: #0f7fff !important;
              text-decoration: underline;
            }
            @media (prefers-color-scheme: dark) {
              .endpoint-meta {
                --border-color: #374151 !important;
                --row-bg: #1e293b !important;
                --label-color: #f9fafb !important;
                --text-color: #e5e7eb !important;
              }
              .endpoint-meta a {
                color: #60a5fa !important;
              }
            }
            html.dark .endpoint-meta,
            [data-theme="dark"] .endpoint-meta {
              --border-color: #374151 !important;
              --row-bg: #1e293b !important;
              --label-color: #f9fafb !important;
              --text-color: #e5e7eb !important;
            }
            html.dark .endpoint-meta a,
            [data-theme="dark"] .endpoint-meta a {
              color: #60a5fa !important;
            }
          `
  }} />
      {items.map((item, i) => <div key={i} style={{
    display: "flex",
    alignItems: "baseline",
    gap: "8px",
    padding: "10px 14px",
    borderBottom: i < items.length - 1 ? "1px solid var(--border-color, #e2e8f0)" : "none",
    backgroundColor: "var(--row-bg, #f8fafc)"
  }}>
          <span style={{
    flexShrink: 0
  }}>{item.icon}</span>
          <span style={{
    wordBreak: "break-word",
    color: "var(--text-color, #1f2937)"
  }}>
            <strong style={{
    color: "var(--label-color, #0f172a)"
  }}>
              {item.label}:
            </strong>{" "}
            {item.text}
          </span>
        </div>)}
    </div>;
};

<EndpointMeta cus={50} />


## OpenAPI

````yaml /openapi-files/data-api/api.json GET /{address}/nft
openapi: 3.0.0
info:
  title: EVM API
  version: '2.2'
servers:
  - url: https://deep-index.moralis.io/api/v2.2
security:
  - ApiKeyAuth: []
tags: []
paths:
  /{address}/nft:
    get:
      tags:
        - NFT
        - Get NFTs
      summary: Get NFTs by wallet address
      description: >-
        Fetch all NFTs held by a specified wallet address. Use `token_addresses`
        to filter by one or many specific contract(s). Each NFT returned
        includes on-chain metadata as well as off-chain metadata, floor prices,
        rarity and more where available.
      operationId: getWalletNFTs
      parameters:
        - in: query
          name: chain
          description: The chain to query
          required: false
          schema:
            $ref: '#/components/schemas/chainList'
        - in: path
          name: address
          description: The address of the wallet
          required: true
          schema:
            type: string
            example: '0xcB1C1FdE09f811B294172696404e88E658659905'
        - in: query
          name: format
          description: The format of the token ID
          required: false
          schema:
            type: string
            example: decimal
            default: decimal
            enum:
              - decimal
              - hex
        - in: query
          name: limit
          description: The desired page size of the result.
          required: false
          schema:
            type: integer
            minimum: 0
        - in: query
          name: exclude_spam
          description: Should spam NFTs be excluded from the result?
          required: false
          schema:
            type: boolean
            default: false
        - in: query
          name: token_addresses
          description: The addresses to get balances for (optional)
          required: false
          schema:
            type: array
            maxItems: 10
            items:
              type: string
        - in: query
          name: cursor
          description: >-
            The cursor returned in the previous response (used for getting the
            next page).
          schema:
            type: string
        - in: query
          name: normalizeMetadata
          description: Should normalized metadata be returned?
          required: false
          schema:
            type: boolean
            default: true
        - in: query
          name: media_items
          description: Should preview media data be returned?
          required: false
          schema:
            type: boolean
            default: false
        - in: query
          name: include_prices
          description: Should NFT last sale prices be included in the result?
          required: false
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Returns a collection of NFT owners
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/nftOwnerCollection'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    chainList:
      type: string
      example: eth
      default: eth
      enum:
        - eth
        - '0x1'
        - sepolia
        - '0xaa36a7'
        - polygon
        - '0x89'
        - bsc
        - '0x38'
        - bsc testnet
        - '0x61'
        - avalanche
        - '0xa86a'
        - cronos
        - '0x19'
        - arbitrum
        - '0xa4b1'
        - chiliz
        - '0x15b38'
        - gnosis
        - '0x64'
        - base
        - '0x2105'
        - base sepolia
        - '0x14a34'
        - optimism
        - '0xa'
        - polygon amoy
        - '0x13882'
        - linea
        - '0xe708'
        - moonbeam
        - '0x504'
        - moonriver
        - '0x505'
        - flow
        - '0x2eb'
        - flow-testnet
        - '0x221'
        - ronin
        - '0x7e4'
        - ronin-testnet
        - '0x31769'
        - lisk
        - '0x46f'
        - pulse
        - '0x171'
        - sei-testnet
        - '0x530'
        - sei
        - '0x531'
        - monad
        - '0x8f'
    nftOwnerCollection:
      required:
        - result
      properties:
        status:
          type: string
          description: The syncing status of the address [SYNCING/SYNCED]
          example: SYNCING
        page:
          type: integer
          description: The current page of the result
          example: '2'
        page_size:
          type: integer
          description: The number of results per page
          example: '100'
        cursor:
          type: string
          description: The cursor to get to the next page
        result:
          type: array
          items:
            $ref: '#/components/schemas/nftOwner'
    nftOwner:
      required:
        - token_address
        - token_id
        - contract_type
        - name
        - block_number
        - block_number_minted
        - owner_of
        - symbol
        - token_hash
        - last_token_uri_sync
        - last_metadata_sync
        - possible_spam
      properties:
        token_address:
          type: string
          description: The address of the NFT contract
          example: '0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB'
        token_id:
          type: string
          description: The token ID of the NFT
          example: '15'
        contract_type:
          type: string
          description: The type of NFT contract standard
          example: ERC721
        owner_of:
          type: string
          description: The wallet address of the owner of the NFT
          example: '0x057Ec652A4F150f7FF94f089A38008f49a0DF88e'
        block_number:
          type: string
          description: The block number when the amount or owner changed
          example: '88256'
        block_number_minted:
          type: string
          description: The block number when the NFT was minted
          example: '88256'
        token_uri:
          type: string
          description: The URI to the metadata of the token
        metadata:
          type: string
          description: The metadata of the token
        normalized_metadata:
          $ref: '#/components/schemas/normalizedMetadata'
          description: A normalized metadata version of the NFT's metadata.
        media:
          $ref: '#/components/schemas/media'
          description: A set of links to 'thumbnail / preview' media files
        amount:
          type: string
          description: The number of this item the user owns (used by ERC1155)
          example: '1'
        name:
          type: string
          description: The name of the NFT contract
          example: CryptoKitties
        symbol:
          type: string
          description: The symbol of the NFT contract
          example: RARI
        token_hash:
          type: string
          description: The token hash
          example: 502cee781b0fb40ea02508b21d319ced
        rarity_rank:
          type: number
          description: The rarity rank
          example: 21669
        rarity_percentage:
          type: number
          description: The rarity percentage
          example: 98
        rarity_label:
          type: string
          description: The rarity label
          example: Top 98%
        last_token_uri_sync:
          type: string
          description: When the token_uri was last updated
          example: '2021-02-24T00:47:26.647Z'
        last_metadata_sync:
          type: string
          description: When the metadata was last updated
          example: '2021-02-24T00:47:26.647Z'
        possible_spam:
          type: boolean
          description: Indicates if a contract is possibly a spam contract
          example: 'false'
        verified_collection:
          type: boolean
          description: Indicates if a contract is verified
          example: 'false'
        floor_price:
          type: string
          description: The floor price of the NFT
          example: '12345'
        floor_price_usd:
          type: string
          description: The floor price of the NFT in USD
          example: '12345.4899'
        floor_price_currency:
          type: string
          description: The currency of the floor price
          example: eth
        last_sale:
          type: object
          description: Details about the most recent sale involving this token.
          nullable: true
          required:
            - transaction_hash
            - block_timestamp
            - price
            - price_formatted
            - buyer_address
            - seller_address
            - payment_token
          properties:
            transaction_hash:
              type: string
              description: The transaction hash of the last sale
              example: >-
                0x19e14f34b8f120c980f7ba05338d64c00384857fb9c561e2c56d0f575424a95c
            block_timestamp:
              type: string
              description: The block timestamp of the last sale
              example: '2023-04-04T15:59:11.000Z'
            buyer_address:
              type: string
              description: The buyer address of the last sale
              example: '0xcb1c1fde09f811b294172696404e88e658659905'
            seller_address:
              type: string
              description: The seller address of the last sale
              example: '0x497a7dee2f13db161eb2fec060fa783cb041419f'
            price:
              type: string
              description: The price of the last sale
              example: '7300000000000000'
            price_formatted:
              type: string
              description: The formatted price of the last sale
              example: '0.0073'
            usd_price_at_sale:
              type: string
              description: The USD price of the last sale
              example: '13.61'
            current_usd_value:
              type: string
              description: The USD price of the last sale at the current value
              example: '15.53'
            token_address:
              type: string
              description: The token address that is sold
              example: '0xe8778996e096b39705c6a0a937eb587a1ebbda17'
            token_id:
              type: string
              description: The token ID that is sold
              example: '170'
            payment_token:
              type: object
              description: The ERC20 token that is being traded with
              required:
                - token_name
                - token_symbol
                - token_logo
                - token_decimals
                - token_address
              properties:
                token_name:
                  type: string
                  description: The token name
                  example: Ether
                token_symbol:
                  type: string
                  description: The token symbol
                  example: ETH
                token_logo:
                  type: string
                  description: The token logo
                  example: https://cdn.moralis.io/eth/0x.png
                token_decimals:
                  type: string
                  description: The token decimals
                  example: '18'
                token_address:
                  type: string
                  description: The token address
                  example: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
    normalizedMetadata:
      properties:
        name:
          type: string
          description: The name or title of the NFT
          example: Moralis Mug
        description:
          type: string
          description: A detailed description of the NFT
          example: >-
            Moralis Coffee nug 3D Asset that can be used in 3D worldspaces. This
            NFT is presented as a flat PNG, a Unity3D Prefab and a standard fbx.
        image:
          type: string
          description: The URL of the NFT's image
          example: >-
            https://arw2wxg84h6b.moralishost.com:2053/server/files/tNJatzsHirx4V2VAep6sc923OYGxvkpBeJttR7Ks/de504bbadadcbe30c86278342fcf2560_moralismug.png
        external_link:
          type: string
          description: A link to additional information
          example: https://giphy.com/gifs/loop-recursion-ting-aaODAv1iuQdgI
        external_url:
          type: string
          description: A link to additional information
          example: https://giphy.com/gifs/loop-recursion-ting-aaODAv1iuQdgI
        animation_url:
          type: string
          description: An animated version of the NFT's image
          example: https://giphy.com/gifs/food-design-donuts-o9ngTPVYW4qo8
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/normalizedMetadataAttribute'
    media:
      properties:
        mimetype:
          type: string
          description: >-
            The mimetype of the media file [see
            https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types]
        category:
          enum:
            - image
            - audio
            - video
        status:
          enum:
            - success
            - processing
            - unsupported_media
            - invalid_url
            - host_unavailable
            - temporarily_unavailable
          description: >-
            <table><tr><td>success</td><td>The NFT Preview was created /
            retrieved successfully</td></tr><tr><td>processing</td><td>The NFT
            Preview was not found and has been submitted for
            generation.</td></tr><tr><td>unsupported_media</td><td>The mime-type
            of the NFT's media file indicates a type not currently
            supported.</td></tr><tr><td>invalid_url</td><td>The 'image' URL from
            the NFT's metadata is not a valid URL and cannot be
            processed.</td></tr><tr><td>host_unavailable</td><td>The 'image' URL
            from the NFT's metadata returned an HttpCode indicating the host /
            file is not
            available.</td></tr><tr><td>temporarily_unavailable</td><td>The
            attempt to load / parse the NFT media file failed (usually due to
            rate limiting) and will be tried again at next
            request.</td></tr></table>
        original_media_url:
          type: string
          description: The url of the original media file.
        updatedAt:
          type: string
          description: The timestamp of the last update to this NFT media record.
        parent_hash:
          type: string
          description: Hash value of the original media file.
        media_collection:
          $ref: '#/components/schemas/mediaCollection'
          description: Preview item associated with the original
    normalizedMetadataAttribute:
      properties:
        trait_type:
          type: string
          description: The trait title or descriptor
          example: Eye Color
        value:
          type: object
          description: The value of the attribute
          example: hazel
        display_type:
          type: string
          description: The type the attribute value should be displayed as
          example: string
        max_value:
          type: number
          description: For numeric values, the upper range
          example: 100
        trait_count:
          type: number
          description: The number of possible values for this trait
          example: 7
        order:
          type: number
          description: Order the trait should appear in the attribute list.
          example: 1
    mediaCollection:
      properties:
        low:
          $ref: '#/components/schemas/mediaItem'
          description: Preview media file, lowest quality (for images 100px x 100px)
        medium:
          $ref: '#/components/schemas/mediaItem'
          description: Preview media file, medium quality (for images 250px x 250px)
        high:
          $ref: '#/components/schemas/mediaItem'
          description: Preview media file, highest quality (for images 500px x 500px)
      required:
        - original
        - low
        - medium
        - high
    mediaItem:
      properties:
        width:
          type: integer
          description: The width of the preview image.
        height:
          type: integer
          description: The height of the preview image.
        url:
          type: string
          description: The url of the preview file.
      required:
        - width
        - height
        - url
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      x-default: test

````