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-events-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/events 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/events
description: ThirdWeb Insights event data
paths:
/insights/v1/events:
get:
description: Get events
summary: Get events
tags:
- insights/events
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/filterBlockNumber'
- $ref: '#/components/parameters/filterBlockNumberGte'
- $ref: '#/components/parameters/filterBlockNumberGt'
- $ref: '#/components/parameters/filterBlockNumberLte'
- $ref: '#/components/parameters/filterBlockNumberLt'
- $ref: '#/components/parameters/filterBlockHash'
- $ref: '#/components/parameters/filterBlockTimestamp'
- $ref: '#/components/parameters/filterBlockTimestampGte'
- $ref: '#/components/parameters/filterBlockTimestampGt'
- $ref: '#/components/parameters/filterBlockTimestampLte'
- $ref: '#/components/parameters/filterBlockTimestampLt'
- $ref: '#/components/parameters/sortBy'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/groupBy'
- $ref: '#/components/parameters/aggregate'
- $ref: '#/components/parameters/filterTransactionIndex'
- $ref: '#/components/parameters/filterTransactionIndexGte'
- $ref: '#/components/parameters/filterTransactionIndexGt'
- $ref: '#/components/parameters/filterTransactionIndexLte'
- $ref: '#/components/parameters/filterTransactionIndexLt'
- $ref: '#/components/parameters/decode'
- $ref: '#/components/parameters/filterTransactionHash'
- $ref: '#/components/parameters/filterLogIndex'
- $ref: '#/components/parameters/filterLogIndexGte'
- $ref: '#/components/parameters/filterLogIndexGt'
- $ref: '#/components/parameters/filterLogIndexLte'
- $ref: '#/components/parameters/filterLogIndexLt'
- $ref: '#/components/parameters/filterTopic_1'
- $ref: '#/components/parameters/filterTopic_2'
- $ref: '#/components/parameters/filterTopic_3'
- $ref: '#/components/parameters/filterTopic_0'
- $ref: '#/components/parameters/filterAddress'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
chain_id:
type: string
block_number:
type: number
block_hash:
type: string
block_timestamp:
type: number
transaction_hash:
type: string
transaction_index:
type: number
log_index:
type: number
address:
type: string
data:
type: string
topics:
type: array
items:
type: string
decoded:
type: object
properties:
name:
type: string
signature:
type: string
indexed_params:
type: object
properties: {}
non_indexed_params:
type: object
properties: {}
required:
- name
- signature
- indexed_params
- non_indexed_params
required:
- chain_id
- block_number
- block_hash
- block_timestamp
- transaction_hash
- transaction_index
- log_index
- address
- data
- topics
aggregations: {}
meta:
type: object
properties:
chain_ids:
type: array
items:
type: number
address:
type: string
signature:
type: string
page:
type: number
limit_per_chain:
type: number
total_items:
type: number
total_pages:
type: number
required:
- chain_ids
- page
- limit_per_chain
- total_items
- total_pages
required:
- meta
'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/events/{contractAddress}:
get:
description: Get contract events
summary: Get contract events
tags:
- insights/events
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/filterBlockNumber'
- $ref: '#/components/parameters/filterBlockNumberGte'
- $ref: '#/components/parameters/filterBlockNumberGt'
- $ref: '#/components/parameters/filterBlockNumberLte'
- $ref: '#/components/parameters/filterBlockNumberLt'
- $ref: '#/components/parameters/filterBlockHash'
- $ref: '#/components/parameters/filterBlockTimestamp'
- $ref: '#/components/parameters/filterBlockTimestampGte'
- $ref: '#/components/parameters/filterBlockTimestampGt'
- $ref: '#/components/parameters/filterBlockTimestampLte'
- $ref: '#/components/parameters/filterBlockTimestampLt'
- $ref: '#/components/parameters/sortBy'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/groupBy'
- $ref: '#/components/parameters/aggregate'
- $ref: '#/components/parameters/filterTransactionIndex'
- $ref: '#/components/parameters/filterTransactionIndexGte'
- $ref: '#/components/parameters/filterTransactionIndexGt'
- $ref: '#/components/parameters/filterTransactionIndexLte'
- $ref: '#/components/parameters/filterTransactionIndexLt'
- $ref: '#/components/parameters/decode'
- $ref: '#/components/parameters/filterTransactionHash'
- $ref: '#/components/parameters/filterLogIndex'
- $ref: '#/components/parameters/filterLogIndexGte'
- $ref: '#/components/parameters/filterLogIndexGt'
- $ref: '#/components/parameters/filterLogIndexLte'
- $ref: '#/components/parameters/filterLogIndexLt'
- $ref: '#/components/parameters/filterTopic_1'
- $ref: '#/components/parameters/filterTopic_2'
- $ref: '#/components/parameters/filterTopic_3'
- $ref: '#/components/parameters/filterTopic_0'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
chain_id:
type: string
block_number:
type: number
block_hash:
type: string
block_timestamp:
type: number
transaction_hash:
type: string
transaction_index:
type: number
log_index:
type: number
address:
type: string
data:
type: string
topics:
type: array
items:
type: string
decoded:
type: object
properties:
name:
type: string
signature:
type: string
indexed_params:
type: object
properties: {}
non_indexed_params:
type: object
properties: {}
required:
- name
- signature
- indexed_params
- non_indexed_params
required:
- chain_id
- block_number
- block_hash
- block_timestamp
- transaction_hash
- transaction_index
- log_index
- address
- data
- topics
aggregations: {}
meta:
type: object
properties:
chain_ids:
type: array
items:
type: number
address:
type: string
signature:
type: string
page:
type: number
limit_per_chain:
type: number
total_items:
type: number
total_pages:
type: number
required:
- chain_ids
- page
- limit_per_chain
- total_items
- total_pages
required:
- meta
'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/events/{contractAddress}/{signature}:
get:
description: Get specific contract events
summary: Get contract events with specific signature
tags:
- insights/events
parameters:
- $ref: '#/components/parameters/contractAddress'
- $ref: '#/components/parameters/signature'
- 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/filterBlockNumber'
- $ref: '#/components/parameters/filterBlockNumberGte'
- $ref: '#/components/parameters/filterBlockNumberGt'
- $ref: '#/components/parameters/filterBlockNumberLte'
- $ref: '#/components/parameters/filterBlockNumberLt'
- $ref: '#/components/parameters/filterBlockHash'
- $ref: '#/components/parameters/filterBlockTimestamp'
- $ref: '#/components/parameters/filterBlockTimestampGte'
- $ref: '#/components/parameters/filterBlockTimestampGt'
- $ref: '#/components/parameters/filterBlockTimestampLte'
- $ref: '#/components/parameters/filterBlockTimestampLt'
- $ref: '#/components/parameters/sortBy'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/groupBy'
- $ref: '#/components/parameters/aggregate'
- $ref: '#/components/parameters/filterTransactionIndex'
- $ref: '#/components/parameters/filterTransactionIndexGte'
- $ref: '#/components/parameters/filterTransactionIndexGt'
- $ref: '#/components/parameters/filterTransactionIndexLte'
- $ref: '#/components/parameters/filterTransactionIndexLt'
- $ref: '#/components/parameters/decode'
- $ref: '#/components/parameters/filterTransactionHash'
- $ref: '#/components/parameters/filterLogIndex'
- $ref: '#/components/parameters/filterLogIndexGte'
- $ref: '#/components/parameters/filterLogIndexGt'
- $ref: '#/components/parameters/filterLogIndexLte'
- $ref: '#/components/parameters/filterLogIndexLt'
- $ref: '#/components/parameters/filterTopic_1'
- $ref: '#/components/parameters/filterTopic_2'
- $ref: '#/components/parameters/filterTopic_3'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
chain_id:
type: string
block_number:
type: number
block_hash:
type: string
block_timestamp:
type: number
transaction_hash:
type: string
transaction_index:
type: number
log_index:
type: number
address:
type: string
data:
type: string
topics:
type: array
items:
type: string
decoded:
type: object
properties:
name:
type: string
signature:
type: string
indexed_params:
type: object
properties: {}
non_indexed_params:
type: object
properties: {}
required:
- name
- signature
- indexed_params
- non_indexed_params
required:
- chain_id
- block_number
- block_hash
- block_timestamp
- transaction_hash
- transaction_index
- log_index
- address
- data
- topics
aggregations: {}
meta:
type: object
properties:
chain_ids:
type: array
items:
type: number
address:
type: string
signature:
type: string
page:
type: number
limit_per_chain:
type: number
total_items:
type: number
total_pages:
type: number
required:
- chain_ids
- page
- limit_per_chain
- total_items
- total_pages
required:
- meta
'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
components:
parameters:
page:
schema:
type:
- integer
- 'null'
minimum: 0
default: 0
description: 'Page number (0-indexed). Maximum value depends on query parameters: 20 for regular queries, 500 when using aggregate or group_by parameters.'
example: 0
required: false
name: page
in: query
filterBlockHash:
schema:
type: string
description: Filter by block hash
example: '0x3a1fba5abd9d41457944e91ed097e039b7b12d3d7ba324a3f422db2277a48e28'
required: false
name: filter_block_hash
in: query
decode:
schema:
type:
- boolean
- 'null'
description: Enable ABI decoding of the transactions/events data
example: true
required: false
name: decode
in: query
filterBlockTimestampGte:
schema:
type:
- number
- 'null'
description: Filter by block timestamp greater than or equal to
example: 1715222400
required: false
name: filter_block_timestamp_gte
in: query
limit:
schema:
type: integer
maximum: 1000
default: 20
description: The number of items to return
example: 20
exclusiveMinimum: 0
required: false
name: limit
in: query
filterTransactionHash:
schema:
type: string
description: Filter by transaction hash
example: '0x218b632d932371478d1ae5a01620ebab1a2030f9dad6f8fba4a044ea6335a57e'
required: false
name: filter_transaction_hash
in: query
filterBlockNumberGt:
schema:
type:
- number
- 'null'
description: Filter by block number greater than
example: 1000000
required: false
name: filter_block_number_gt
in: query
filterBlockNumberGte:
schema:
type:
- number
- 'null'
description: Filter by block number greater than or equal to
example: 1000000
required: false
name: filter_block_number_gte
in: query
filterBlockTimestamp:
schema:
type:
- number
- 'null'
description: Filter by block timestamp
example: 1715222400
required: false
name: filter_block_timestamp
in: query
filterBlockNumberLte:
schema:
type:
- number
- 'null'
description: Filter by block number less than or equal to
example: 1000000
required: false
name: filter_block_number_lte
in: query
contractAddress:
schema:
type: string
title: address (hex or ENS)
example: vitalik.eth
required: true
name: contract_address
in: path
filterTopic_3:
schema:
type: string
description: Filter by topic 3
example: '0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc'
required: false
name: filter_topic_3
in: query
filterTopic_1:
schema:
type: string
description: Filter by topic 1
example: '0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc'
required: false
name: filter_topic_1
in: query
filterTransactionIndexGte:
schema:
type:
- number
- 'null'
description: Filter by transaction index greater than or equal to
example: 5
required: false
name: filter_transaction_index_gte
in: query
signature:
schema:
type: string
required: true
name: signature
in: path
filterLogIndex:
schema:
type:
- number
- 'null'
description: Filter by log index
example: 5
required: false
name: filter_log_index
in: query
filterLogIndexGt:
schema:
type:
- number
- 'null'
description: Filter by log index greater than
example: 5
required: false
name: filter_log_index_gt
in: query
filterBlockNumberLt:
schema:
type:
- number
- 'null'
description: Filter by block number less than
example: 1000000
required: false
name: filter_block_number_lt
in: query
filterBlockNumber:
schema:
type:
- number
- 'null'
description: Filter by block number
example: 1000000
required: false
name: filter_block_number
in: query
filterTransactionIndexGt:
schema:
type:
- number
- 'null'
description: Filter by transaction index greater than
example: 5
required: false
name: filter_transaction_index_gt
in: query
filterLogIndexLte:
schema:
type:
- number
- 'null'
description: Filter by log index less than or equal to
example: 5
required: false
name: filter_log_index_lte
in: query
filterTransactionIndex:
schema:
type:
- number
- 'null'
description: Filter by transaction index
example: 5
required: false
name: filter_transaction_index
in: query
filterBlockTimestampLte:
schema:
type:
- number
- 'null'
description: Filter by block timestamp less than or equal to
example: 1715222400
required: false
name: filter_block_timestamp_lte
in: query
filterLogIndexGte:
schema:
type:
- number
- 'null'
description: Filter by log index greater than or equal to
example: 5
required: false
name: filter_log_index_gte
in: query
filterTopic_0:
schema:
type: string
description: Filter by topic 0
example: '0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc'
required: false
name: filter_topic_0
in: query
filterAddress:
schema:
type: string
description: Filter by address
title: address (hex or ENS)
example: '0x5564886ca2c518d1964e5fcea4f423b41db9f561'
required: false
name: filter_address
in: query
filterTransactionIndexLt:
schema:
type:
- number
- 'null'
description: Filter by transaction index less than
example: 5
required: false
name: filter_transaction_index_lt
in: query
filterLogIndexLt:
schema:
type:
- number
- 'null'
description: Filter by log index less than
example: 5
required: false
name: filter_log_index_lt
in: query
sortOrder:
schema:
type: string
enum:
- asc
- desc
description: Sort order (asc or desc)
example: desc
required: false
name: sort_order
in: query
filterTransactionIndexLte:
schema:
type:
- number
- 'null'
description: Filter by transaction index less than or equal to
example: 5
required: false
name: filter_transaction_index_lte
in: query
filterBlockTimestampLt:
schema:
type:
- number
- 'null'
description: Filter by block timestamp less than
example: 1715222400
required: false
name: filter_block_timestamp_lt
in: query
filterTopic_2:
schema:
type: string
description: Filter by topic 2
example: '0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc'
required: false
name: filter_topic_2
in: query
groupBy:
schema:
type:
- string
- 'null'
description: Field(s) to group by. You can specify multiple with repeated query parameters, e.g., ?group_by=chain_id&group_by=block_number
required: false
name: group_by
in: query
aggregate:
schema:
type:
- string
- 'null'
description: Aggregation(s). You can specify multiple with repeated query parameters, e.g., ?aggregate=count()&aggregate=sum(gas_used)
example: count() as count
required: false
name: aggregate
in: query
sortBy:
schema:
anyOf:
- type: string
enum:
- block_number
title: constant
- type: string
title: string
description: Field to sort results by
example: block_number
required: false
name: sort_by
in: query
filterBlockTimestampGt:
schema:
type:
- number
- 'null'
description: Filter by block timestamp greater than
example: 1715222400
required: false
name: filter_block_timestamp_gt
in: query
securitySchemes:
clientId:
type: apiKey
in: header
name: x-client-id
description: thirdweb client ID in headers
secretKey:
type: apiKey
in: header
name: x-secret-key
description: thirdweb secret key in headers
dashboard:
type: http
scheme: bearer
bearerFormat: JWT
description: thirdweb JWT + Client ID
clientId-query:
type: apiKey
in: query
name: clientId
description: thirdweb client ID in query params
x-proxy-info:
supported-chains:
- chainId: 243
name: Reach Testnet
network: reach-testnet
apiUrl: https://reach-testnet.explorer.caldera.xyz/api/v2
- chainId: 1993
name: B3 Testnet
network: b3-testnet
apiUrl: https://sepolia.explorer.b3.fun/api/v2
- chainId: 4224
name: Arpachain
network: arpachain
apiUrl: https://arpachain.calderaexplorer.xyz/api/v2
- chainId: 8333
name: B3 Mainnet
network: b3
apiUrl: https://blockscout.b3.fun/api/v2
- chainId: 19934
name: B4 Testnet
network: b4-testnet
apiUrl: https://b4-testnet.explorer.caldera.xyz/api/v2
- chainId: 10211403
name: GLHF Testnet
network: glhf-testnet
apiUrl: https://glhf-testnet.explorer.caldera.xyz/api/v2
supported-services:
- name: blockscout
path: /blockscout/*
description: Blockchain explorer API with multi-chain fallback
- name: thirdweb-insights
path: /insights/*
description: ThirdWeb Insights API for chain analytics
default-chain: 8333
cache-duration: 24 hours
cache-strategy: KV store
fallback-strategy: 'Blockscout: Query default chain first, then all chains in parallel if no results. ThirdWeb: Direct chain query only.'