# Fetch Bitcoin Data

`client.bitcoin` covers Bitcoin wallet balances/history, raw block/transaction lookups,
and BTC pricing, over a `chain_alias` of `'bitcoin'`/`'bitcoin-mainnet'`.

## Wallet Balances And History

```python
from typed_moralis import Moralis

async with Moralis.new() as client:
  balances = await client.bitcoin.wallet.btc_balances('bc1...')
  history = await client.bitcoin.wallet.wallet_history('bc1...')
  print(balances['result'], history['result'])
```

`btc_balances` also takes `chains` to fetch EVM-side balances held by the same address
where applicable, since Moralis links wallets across chain families. Both return a
`cursor` for the next page -- see [Paginate Through Results](/typed/moralis/how-to/paginate-through-results).

## Blocks And Transactions

```python
from typed_moralis import Moralis

async with Moralis.new() as client:
  block = await client.bitcoin.blockchain.block('800000', 'bitcoin')
  tx = await client.bitcoin.blockchain.transaction('tx_hash...', 'bitcoin')
  print(block['time'], tx)
```

`block_identifier` accepts either a block height or a block hash. `chain_alias` on both
methods also accepts `'0x89'`/`'polygon'`, since this endpoint pair is shared with EVM.

## Price And XPUB Addresses

```python
from typed_moralis import Moralis

async with Moralis.new() as client:
  price = await client.bitcoin.price.current_price('bitcoin-mainnet', 'btc')
  derived = await client.bitcoin.utility.addresses_from_xpub('xpub...', 'bitcoin-mainnet')
  print(price['usdPrice'], derived['addresses'])
```
