Skip to main content

Zcash API - Address Analysis, Transactions, Balance, Stats

Analyze Zcash addresses — check balances, pull transaction history, and trace fund flows using the Bitquery GraphQL API.

note

To query data via GraphQL outside the Bitquery IDE, you need to generate an API access token.

Follow the steps here to create one: How to generate Bitquery API token ➤


Table of Contents


Get Address Details Using Address Stats

Pull a full profile of any Zcash address in one call — balance (in USD or ZEC), total inbound/outbound transactions, unique sender/receiver counts, and first/last active timestamps.

Variations: Pass multiple addresses with {in: [...]}, request the balance in a different fiat currency, or add date filters. See address stats schema for all available fields.

Try Zcash Address Stats Query ➤

Click to expand GraphQL query
query MyQuery {
bitcoin(network: zcash) {
addressStats(address: { is: "t1UYsZVJkLPeMjxEtACvSxfWuNmddpWfxzs" }) {
address {
address
balance(in: USD)
firstActive {
time
}
lastActive {
time
}
outboundTransactions
uniqueDaysWithTransfers
uniqueReceivers
uniqueSenders
inboundTransactions
}
}
}
}

Balance of an Address using Inputs and Outputs

Compute the balance of a Zcash address by aggregating all UTXO inputs (funds received) and outputs (funds sent). Returns totals in both ZEC and USD along with the first and last active dates.

Variations: Add date filters to compute the balance for a specific time window, or swap the address to audit a different wallet. See query features for aggregation helpers.

Try Zcash Address Balance Query ➤

Click to expand GraphQL query
{
bitcoin(network: zcash) {
inputs(
date: { since: null, till: null }
inputAddress: { is: "t1UYsZVJkLPeMjxEtACvSxfWuNmddpWfxzs" }
) {
count
value
value_usd: value(in: USD)
min_date: minimum(of: date)
max_date: maximum(of: date)
}
outputs(
date: { since: null, till: null }
outputAddress: { is: "t1UYsZVJkLPeMjxEtACvSxfWuNmddpWfxzs" }
) {
count
value
value_usd: value(in: USD)
min_date: minimum(of: date)
max_date: maximum(of: date)
}
}
}

Inbound Transaction Details

Retrieve all transactions received by a Zcash address, including transaction hashes, block timestamps, input/output values, and fee amounts.

Variations: Adjust limit for more results, add date ranges for a specific period, or sort by feeValue to surface high-fee transactions. See query features for sorting and pagination.

Try Zcash Inbound Transactions Query ➤

Click to expand GraphQL query
query MyQuery {
bitcoin(network: zcash) {
transactions(
outputAddress: { is: "t1UYsZVJkLPeMjxEtACvSxfWuNmddpWfxzs" }
options: { limit: 100 }
) {
block {
timestamp {
time
}
}
feeValue
hash
index
outputValue
inputValue
}
}
}

Outbound Transaction Details

Retrieve all transactions sent from a Zcash address, including transaction hashes, block timestamps, input/output values, and fee amounts.

Variations: Add an outputAddress filter to isolate direct transfers between two wallets, or increase limit for a full transaction history. See query features for pagination.

Try Zcash Outbound Transactions Query ➤

Click to expand GraphQL query
query MyQuery {
bitcoin(network: zcash) {
transactions(
inputAddress: { is: "t1UYsZVJkLPeMjxEtACvSxfWuNmddpWfxzs" }
options: { limit: 100 }
) {
block {
timestamp {
time
}
}
feeValue
hash
index
outputValue
inputValue
}
}
}

ZCash Find Trace of an Address

Follow the flow of funds through a Zcash address using the Coinpath API. Traces inbound hops up to a configurable depth and returns sender/receiver pairs, transaction hashes, amounts, and block context — useful for compliance investigations and fund-source analysis.

Variations: Switch direction to outbound to trace where funds went, increase depth for deeper analysis, or add date constraints. See Coinpath explained for depth and direction details.

Try Zcash Address Trace Query ➤

Click to expand GraphQL query
query MyQuery {
bitcoin(network: zcash) {
coinpath(
options: {limit: 10, desc: "block.height", direction: inbound}
sender: {is: "t1QYB8sG7UEf74EZRPMo5KwXEiMUD7uCzhu"}
depth: {lteq: 2}
) {
amount
currency {
name
decimals
}
receiver {
address
type
}
sender {
address
type
}
transaction {
hash
index
valueOut
valueIn
}
block {
timestamp {
time
}
height
}
depth
transactions {
amount
txHash
}
}
}
}

tip

Analyzing Multiple Addresses?

You can query multiple addresses at once by using {in: ["address1", "address2", "address3"]} instead of {is: "address"} in the address filter.