Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/b3-insights-nfts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
OpenAPI Specification
openapi: 3.2.0
info:
description: Cached proxy layer for multiple blockchain APIs with 24-hour caching and automatic fallback across chains. Supports both Blockscout and ThirdWeb Insights APIs. Add ?mintlify parameter for Mintlify-compatible version.
version: 1.0.0
title: B3 Data API - Multi-Chain Data Insights/nfts API
contact:
name: B3 Team
url: https://b3.fun
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://data-api.b3.fun/
description: B3 Data API - Multi-Chain Proxy
tags:
- name: insights/nfts
description: ThirdWeb Insights NFT analytics
paths:
/insights/v1/nfts/balance/{ownerAddress}:
get:
summary: Get NFT balances by address
description: Get NFT balances for a given address
tags:
- insights/nfts
parameters:
- $ref: '#/components/parameters/ownerAddress'
- name: chain
in: query
required: false
deprecated: true
description: Use chain_id instead
schema:
type: array
example:
- 20
- 56
- 1
items:
type: number
- name: chain_id
in: query
required: false
description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain
schema:
type: array
example:
- 20
- 56
- 1
items:
type: number
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
- schema:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: Whether to include metadata for the tokens
example: 'false'
required: false
name: metadata
in: query
- schema:
type: string
enum:
- 'true'
- 'false'
default: 'true'
description: Whether to resolve metadata IPFS or Arweave links
example: 'false'
required: false
name: resolve_metadata_links
in: query
- schema:
type: array
description: The types of NFTs to include in the response
items:
type: string
enum:
- erc1155
- erc721
uniqueItems: true
default:
- erc1155
- erc721
required: false
name: token_types
in: query
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
chain_id:
type: number
description: The chain ID of a relevant entry
example: 1
token_address:
type: string
title: address (hex or ENS)
example: vitalik.eth
token_id:
type: string
balance:
type: string
name:
type: string
description:
type: string
image_url:
type: string
video_url:
type: string
animation_url:
type: string
background_color:
type: string
external_url:
type: string
status:
type: string
metadata_url:
type: string
owner_addresses:
type: array
items:
type: string
extra_metadata:
allOf:
- type: object
additionalProperties: {}
- type: object
properties:
attributes:
anyOf:
- type: array
items:
type: object
properties:
trait_type:
type: string
value:
anyOf:
- type: string
- type: number
display_type:
type: string
required:
- trait_type
- value
- type: object
additionalProperties: {}
properties:
type: object
additionalProperties: {}
collection:
type: object
properties:
name:
type: string
description:
type: string
image_url:
type: string
banner_image_url:
type: string
featured_image_url:
type: string
external_link:
type: string
contract:
type: object
properties:
chain_id:
type: number
description: The chain ID of a relevant entry
example: 1
address:
type: string
title: address (hex or ENS)
example: vitalik.eth
name:
type: string
symbol:
type: string
type:
type: string
enum:
- erc721
- erc1155
required:
- chain_id
- address
required:
- chain_id
- token_address
- token_id
- balance
required:
- data
'400':
description: Bad request
'500':
description: Internal server error
/insights/v1/nfts/collections/{contract_address}:
get:
summary: Get collection
description: Retrieve metadata about a collection
tags:
- insights/nfts
parameters:
- $ref: '#/components/parameters/contractAddress'
- name: chain
in: query
required: false
deprecated: true
description: Use chain_id instead
schema:
type: array
example:
- 20
- 56
- 1
items:
type: number
- name: chain_id
in: query
required: false
description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain
schema:
type: array
example:
- 20
- 56
- 1
items:
type: number
- schema:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: Whether to include stats for the collection
example: 'false'
required: false
name: include_stats
in: query
- schema:
type: string
enum:
- 'true'
- 'false'
default: 'true'
description: Whether to resolve metadata IPFS or Arweave links
example: 'false'
required: false
name: resolve_metadata_links
in: query
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
name:
type: string
description:
type: string
image_url:
type: string
banner_image_url:
type: string
featured_image_url:
type: string
external_link:
type: string
stats:
type: object
properties:
owner_count:
type: number
token_count:
type: number
mint_count:
type: number
total_quantity:
type: number
required:
- owner_count
- token_count
- mint_count
- total_quantity
required:
- data
'400':
description: Bad request
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
/insights/v1/nfts:
get:
description: Get NFTs
summary: Get NFTs
tags:
- insights/nfts
parameters:
- name: chain
in: query
required: false
deprecated: true
description: Use chain_id instead
schema:
type: array
example:
- 20
- 56
- 1
items:
type: number
- name: chain_id
in: query
required: false
description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain
schema:
type: array
example:
- 20
- 56
- 1
items:
type: number
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
- schema:
type: string
enum:
- 'true'
- 'false'
default: 'true'
description: Whether to resolve metadata IPFS or Arweave links
example: 'false'
required: false
name: resolve_metadata_links
in: query
- schema:
type: array
description: Address(es) to filter by. You can specify multiple addresses using repeated query parameters, e.g., ?address=0x123&address=0x456
example:
- '0x1234567890123456789012345678901234567890'
- vitalik.eth
items:
type: string
required: true
name: owner_address
in: query
- schema:
type: array
description: Address(es) to filter by. You can specify multiple addresses using repeated query parameters, e.g., ?address=0x123&address=0x456
example:
- '0x1234567890123456789012345678901234567890'
- vitalik.eth
items:
type: string
required: false
name: contract_address
in: query
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
chain_id:
type: number
contract_address:
type: string
title: address (hex or ENS)
example: vitalik.eth
token_id:
type: string
token_type:
type: string
balance:
type: string
owner_addresses:
type: array
items:
type: string
name:
type: string
description:
type: string
image_url:
type: string
video_url:
type: string
animation_url:
type: string
background_color:
type: string
external_url:
type: string
status:
type: string
metadata_url:
type: string
extra_metadata:
allOf:
- type: object
additionalProperties: {}
- type: object
properties:
attributes:
anyOf:
- type: array
items:
type: object
properties:
trait_type:
type: string
value:
anyOf:
- type: string
- type: number
display_type:
type: string
required:
- trait_type
- value
- type: object
additionalProperties: {}
properties:
type: object
additionalProperties: {}
collection:
type: object
properties:
name:
type: string
description:
type: string
image_url:
type: string
banner_image_url:
type: string
featured_image_url:
type: string
external_link:
type: string
contract:
type: object
properties:
chain_id:
type: number
description: The chain ID of a relevant entry
example: 1
address:
type: string
title: address (hex or ENS)
example: vitalik.eth
name:
type: string
symbol:
type: string
type:
type: string
enum:
- erc721
- erc1155
required:
- chain_id
- address
required:
- chain_id
- contract_address
- token_id
- token_type
- balance
required:
- data
'404':
description: Not found
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
/insights/v1/nfts/owners/{contract_address}:
get:
description: Get NFT owners by contract
summary: Get NFT owners by contract
tags:
- insights/nfts
parameters:
- $ref: '#/components/parameters/contractAddress'
- name: chain
in: query
required: false
deprecated: true
description: Use chain_id instead
schema:
type: array
example:
- 20
- 56
- 1
items:
type: number
- name: chain_id
in: query
required: false
description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain
schema:
type: array
example:
- 20
- 56
- 1
items:
type: number
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
- schema:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: Control if the result is an array of addresses only or an array of objects containing the address and balance
example: 'true'
required: false
name: include_balances
in: query
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
anyOf:
- type: object
properties:
chain_id:
type: string
token_address:
type: string
owner_address:
type: string
token_id:
type: string
balance:
type: string
required:
- chain_id
- token_address
- owner_address
- token_id
- balance
- type: object
properties:
chain_id:
type: string
owner_addresses:
type: array
items:
type: string
required:
- chain_id
- owner_addresses
'404':
description: Not found
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
/insights/v1/nfts/owners/{contract_address}/{token_id}:
get:
description: Get NFT owners by token
summary: Get NFT owners by token
tags:
- insights/nfts
parameters:
- $ref: '#/components/parameters/contractAddress'
- $ref: '#/components/parameters/tokenId'
- name: chain
in: query
required: false
deprecated: true
description: Use chain_id instead
schema:
type: array
example:
- 20
- 56
- 1
items:
type: number
- name: chain_id
in: query
required: false
description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain
schema:
type: array
example:
- 20
- 56
- 1
items:
type: number
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
- schema:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: Control if the result is an array of addresses only or an array of objects containing the address and balance
example: 'true'
required: false
name: include_balances
in: query
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
anyOf:
- type: object
properties:
chain_id:
type: string
token_address:
type: string
owner_address:
type: string
token_id:
type: string
balance:
type: string
required:
- chain_id
- token_address
- owner_address
- token_id
- balance
- type: object
properties:
chain_id:
type: string
owner_addresses:
type: array
items:
type: string
required:
- chain_id
- owner_addresses
'404':
description: Not found
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
error:
type: string
required:
- error
/insights/v1/nfts/transfers:
get:
description: Get NFT transfers
summary: Get NFT transfers
tags:
- insights/nfts
parameters:
- name: chain
in: query
required: false
deprecated: true
description: Use chain_id instead
schema:
type: array
example:
- 20
- 56
- 1
items:
type: number
- name: chain_id
in: query
required: false
description: The chain ID(s) to request the data for. You can specify multiple chain IDs, up to a maximum of 55. Use repeated query parameters, e.g., `?chain_id=20&chain_id=56`. Optional, because a single chain can as well be specified as a subdomain
schema:
type: array
example:
- 20
- 56
- 1
items:
type: number
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
- schema:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: Whether to include metadata for the tokens
example: 'false'
required: false
name: metadata
in: query
- schema:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: Whether to include owner addresses in the NFT metadata (only if metadata is requested)
example: 'false'
required: false
name: include_owners
in: query
- $ref: '#/components/parameters/blockNumberFrom'
- $ref: '#/components/parameters/blockTimestampFrom'
- $ref: '#/components/parameters/blockTimestampTo'
- $ref: '#/components/parameters/ownerAddress'
- $ref: '#/components/parameters/contractAddress'
- schema:
type: string
enum:
- asc
- desc
default: desc
description: Sort order (asc or desc)
example: desc
required: false
name: sort_order
in: query
- schema:
type: string
enum:
- mint
- transfer
- burn
- sale
description: Only include transfers of a certain type
example: mint
required: false
name: transfer_type
in: query
- schema:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: Whether to include sale details for NFT transfers
example: 'false'
required: false
name: sales
in: query
- schema:
type: string
enum:
- 'true'
- 'false'
default: 'true'
description: Whether to resolve metadata IPFS or Arweave links
example: 'false'
required: false
name: resolve_metadata_links
in: query
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
token_id:
type: string
chain_id:
type: number
block_number:
type: string
block_hash:
type: string
block_timestamp:
type: string
transaction_hash:
type: string
from_address:
type: string
to_address:
type: string
log_index:
type: number
contract_address:
type: string
transfer_type:
type: string
enum:
- mint
- sale
- transfer
token_type:
type: string
enum:
- erc721
- erc1155
amount:
type: string
nft_metadata:
type: object
properties:
name:
type: string
description:
type: string
image_url:
type: string
video_url:
type: string
animation_url:
type: string
background_color:
type: string
external_url:
type: string
status:
type: string
metadata_url:
type: string
owner_addresses:
type: array
items:
type: string
extra_metadata:
allOf:
- type: object
additionalProperties: {}
- type: object
properties:
attributes:
anyOf:
- type: array
items:
type: object
properties:
trait_type:
type: string
value:
anyOf:
- type: string
- type: number
display_type:
type: string
required:
- trait_type
- value
- type: object
additionalProperties: {}
properties:
type: object
additionalProperties: {}
collection:
type: object
properties:
name:
type: string
description:
type: string
image_url:
type: string
banner_image_url:
type: string
featured_image_url:
type: string
external_link:
type: string
contract:
type: object
properties:
chain_id:
type: number
description: The chain ID of a relevant entry
example: 1
address:
type: string
title: address (hex or ENS)
example: vitalik.eth
name:
type: s
# --- truncated at 32 KB (93 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/b3/refs/heads/main/openapi/b3-insights-nfts-api-openapi.yml