# Bitquery

Bitquery provides historical and real-time indexed data for over 40 blockchains through GraphQL APIs, Websockets, SQL, and cloud providers.

- **Category:** analytics
- **Auth:** API_KEY
- **Composio Managed App Available?** N/A
- **Tools:** 10
- **Triggers:** 0
- **Slug:** `BITQUERY`
- **Version:** 20260316_00

## Tools

### Archive Database Query

**Slug:** `BITQUERY_ARCHIVE_DATABASE_QUERY`

Query the Bitquery Archive Database (V1 API) for historical blockchain data. The Archive Database provides complete historical blockchain data across 40+ blockchains including Bitcoin, Ethereum, BSC, Solana, and more. Data has a delay of tens of minutes to hours from real-time. For near-real-time data, use the Realtime Database Query instead. The V1 API uses blockchain-specific root types (bitcoin, ethereum, etc.) with fields like blocks, transactions, transfers, and trades. Queries support filtering, pagination with limit/offset, and sorting with orderBy. Example queries: - Bitcoin blocks: { bitcoin { blocks(limit: 5, orderBy: {descending: height}) { height } } } - Ethereum transactions: { ethereum { transactions(limit: 10) { hash value } } }

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | GraphQL query string to execute against the Bitquery Archive Database (V1 API). Use the V1 schema which includes blockchain-specific root types like 'bitcoin', 'ethereum', etc. For example: { bitcoin { blocks(limit: 5, orderBy: {descending: height}) { height } } } |
| `variables` | object | No | Optional mapping of GraphQL variables for parameterized queries |
| `operationName` | string | No | Optional operation name if the query document contains multiple operations |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Combined Database Query

**Slug:** `BITQUERY_COMBINED_DATABASE_QUERY`

Query Bitquery's Combined Database (v2 API) for blockchain data across 40+ networks. Use this tool to fetch real-time and historical blockchain data including: - Blocks, transactions, and events - Token transfers and balances - DEX trades and liquidity data - Smart contract interactions - NFT data and metadata Supported networks include: Ethereum (eth), BSC (bsc), Polygon (matic), Solana, Tron, and more. The v2 API uses a different schema than v1 - use EVM(network: eth) instead of ethereum root field.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | The GraphQL query string to execute against Bitquery's Combined Database. Uses v2 API schema with network-specific root fields like EVM(network: eth), Solana, Tron, etc. Supports real-time and historical blockchain data. Always include explicit `limit: {count: N}` and time range filters (UTC timestamps) — omitting them causes timeouts and oversized payloads. Field names, dataset names, and filter structures must be exact; schema errors return empty results silently, not descriptive error messages. For large datasets, use cursor-based pagination instead of single bulk pulls. |
| `variables` | object | No | Optional map of GraphQL variables for parameterized queries. Use to pass dynamic values like addresses, block numbers, or limits. |
| `operationName` | string | No | Optional operation name when the query document contains multiple named operations. Specifies which operation to execute. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Conditional Metrics Snippet

**Slug:** `BITQUERY_CONDITIONAL_METRICS`

Generate a Bitquery GraphQL metric snippet with conditional logic using the 'if:' attribute. This tool builds metric aggregation snippets (count, sum, avg, min, max) that can be embedded in Bitquery GraphQL queries. The 'if:' filter allows applying conditions directly to metric calculations, enabling conditional aggregation like counting only successful transactions. Output format examples: - count(if: {Block: {GasUsed: {gt: "0"}}}) - sum(of: Block_GasUsed if: {Block: {Time: {after: "2024-01-01"}}}) - myAlias: avg(of: Transaction_Value if: {Transaction: {Success: true}})

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `if` | object | Yes | Conditional filter to apply to the metric via the 'if:' attribute. Uses nested object structure matching Bitquery GraphQL filter syntax. Example: {'Block': {'GasUsed': {'gt': '0'}}} or {'Transaction': {'Success': true}}. |
| `alias` | string | No | GraphQL alias to prefix the metric output. Example: 'totalGas' produces 'totalGas: sum(...)'. |
| `field` | string | Yes | The field to aggregate using 'of:' in GraphQL. Required for 'sum', 'avg', 'min', 'max' operations. For 'count' operation, this field is ignored unless using distinct_field. Example: 'Block_GasUsed', 'Transaction_Value'. |
| `operation` | string ("count" | "sum" | "avg" | "min" | "max") | Yes | Type of metric operation to apply. Options: 'count' (count rows), 'sum' (sum values), 'avg' (average), 'min' (minimum), 'max' (maximum). |
| `select_where` | object | No | HAVING-style filter applied after aggregation via 'selectWhere:'. Useful for filtering aggregated results. Example: {'ge': '1000000'} to only include results >= 1000000. |
| `distinct_field` | string | No | Field name for counting distinct values (only valid for 'count' operation). When provided, generates 'distinct: <field>' in the output. Example: 'Block_Number' to count distinct blocks. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Database Selection

**Slug:** `BITQUERY_DATABASE_SELECTION`

Tool to select the database (archive, realtime, combined) to query at the top level of a GraphQL request. Use after determining whether you need live, historical, or combined blockchain data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `dataset` | string ("realtime" | "archive" | "combined") | Yes | Determines which Bitquery GraphQL dataset to use: realtime (latest blocks), archive (historical data), combined (merge both). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Early Access Program Query

**Slug:** `BITQUERY_EARLY_ACCESS_PROGRAM_QUERY`

Execute GraphQL queries against the Bitquery Early Access Program (EAP) Streaming API. This tool queries the EAP endpoint (streaming.bitquery.io/eap) for real-time blockchain data. The EAP provides access to streaming data across various blockchain networks including Solana, EVM chains (Ethereum, Polygon, etc.), and others for evaluation purposes. Key features: - Real-time blockchain data with minimal latency - Supports both queries and subscriptions - Networks: Solana, Ethereum, Polygon (Matic), and other EVM-compatible chains Note: EAP is limited to real-time data only. For historical data, use the Archive Database Query. Existing users can continue using EAP; new users should prefer the V2 endpoint for most use cases. Example queries: - Get latest ETH blocks: { EVM(network: eth) { Blocks(limit: {count: 5}) { Block { Number Time } } } } - Solana DEX trades: subscription { Solana { DEXTrades { Block { Time } Trade { Price } } } }

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | GraphQL query string for the Bitquery EAP Streaming API. Supports blockchain data queries for chains like Solana, EVM networks, etc. Example query: { EVM(network: eth) { Blocks(limit: {count: 10}) { Block { Number Time } } } } Example subscription: subscription { Solana { DEXTrades { Block { Time } Trade { Price } } } } |
| `variables` | object | No | Optional GraphQL variables for parameterized queries. Pass as a dictionary mapping variable names to values. Example: {'network': 'eth', 'limit': 10} |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Network Selection

**Slug:** `BITQUERY_NETWORK_SELECTION`

Tool to select the blockchain network for GraphQL queries. Use before constructing dataset or metric queries to ensure the correct chain is targeted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `network` | string ("eth" | "bsc" | "bsc_testnet" | "goerli" | "rinkeby" | "ropsten" | "sepolia" | "classic" | "mordor" | "kotti" | "astor" | "polygon" | "arbitrum" | "avalanche" | "optimism" | "fantom" | "cronos" | "klaytn" | "fusion" | "huobi" | "moonbeam" | "celo" | "canto" | "aurora") | Yes | Blockchain network to query. If omitted, GraphQL defaults to eth. Supported networks: eth, bsc, bsc_testnet, goerli, rinkeby, ropsten, sepolia, classic, mordor, kotti, astor, polygon, arbitrum, avalanche, optimism, fantom, cronos, klaytn, fusion, huobi, moonbeam, celo, canto, aurora. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Options Query

**Slug:** `BITQUERY_OPTIONS_QUERY`

Tool to fetch GraphQL dataset options via schema introspection. Use when you need to discover root-level query fields and their arguments before building queries. Dataset and token availability varies by Bitquery environment; verify available fields here before constructing complex queries that depend on specific datasets.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Price Asymmetry Metric

**Slug:** `BITQUERY_PRICE_ASYMMETRY_METRIC`

Tool to generate GraphQL PriceAsymmetry filter snippet. Use when you need to filter trades based on price asymmetry metric.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ge` | number | No | Price asymmetry greater than or equal to this value. |
| `gt` | number | No | Price asymmetry greater than this value. |
| `le` | number | No | Price asymmetry less than or equal to this value. |
| `lt` | number | No | Price asymmetry less than this value. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Realtime Database Query

**Slug:** `BITQUERY_REALTIME_DATABASE_QUERY`

Query the Bitquery Streaming (V2) API for realtime blockchain data. This tool accesses the Bitquery Streaming API at streaming.bitquery.io/graphql which provides real-time blockchain data with minimal latency. Use this for recent data (within minutes). For historical data, use the Archive Database Query. Supported query formats: - V2 EVM queries: { EVM(network: eth) { Blocks(limit: {count: 5}) { Block { Number Time } } } } - V2 Bitcoin queries: { bitcoin(network: bitcoin) { blocks(limit: {count: 5}) { height timestamp { time } } } } Note: Requires an active Bitquery subscription for streaming API access.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | GraphQL query string to execute against the Bitquery Streaming (V2) API. Use EVM() for Ethereum-compatible chains or bitcoin() for Bitcoin data. |
| `variables` | object | No | Optional mapping of GraphQL variables for parameterized queries |
| `operationName` | string | No | Optional operation name if the query document contains multiple operations |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Select By Metric

**Slug:** `BITQUERY_SELECT_BY_METRIC`

Tool to generate a GraphQL metric snippet filtering by its value using selectWhere. Use when you need to include only metrics meeting specific value conditions (e.g., only positive sums).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `of` | string | Yes | The metric field to aggregate, e.g., 'BalanceUpdate_Amount' |
| `alias` | string | No | Optional GraphQL alias for the metric snippet |
| `operation` | string ("sum" | "avg" | "min" | "max") | Yes | Aggregation operation supporting selectWhere (e.g., sum, avg, min, max) |
| `selectWhere` | object | Yes | Filter expression for the metric values using selectWhere |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
